Forward, Tangent Linear, and Adjoint Runge Kutta Methods in KPP–2.2 for Efficient Chemical Kinetic Simulations
The Kinetic PreProcessor (KPP) is a widely used software environment which generates Fortran90, Fortran77, Matlab, or C code for the simulation of chemical kinetic systems. High computational efficiency is attained by exploiting the sparsity pattern of the Jacobian and Hessian. In this paper we report on the implementation of two new families of stiff numerical integrators in the new version 2.2 of KPP. One family is the fully implicit three-stage Runge Kutta methods, and the second family are singly diagonally-implicit Runge Kutta methods. For each family tangent linear models for direct decoupled sensitivity analysis, and adjoint models for adjoint sensitivity analysis of chemical kinetic systems are also implemented. To the best of our knowledge this work brings the first implementation of the direct decoupled sensitivity method and of the discrete adjoint sensitivity method with Runge Kutta methods. Numerical experiments with a chemical system used in atmospheric chemistry illustrate the power of the stiff Runge Kutta integrators and their tangent linear and discrete adjoint models. Through the integration with KPP–2.2. these numerical techniques become easily available to a wide community interested in the simulation of chemical kinetic systems.