FATODE: a library for forward, adjoint and tangent linear integration of stiff systems

The FATODE, which is extracted from the KPP numerical libraray, is a Fortran programming library for the integration of stiff ODE systems. It incorporates a set of generic linear solvers suitable for large sparse systems. And the set allows users to add their own implementation conveniently. FATODE contains three families of methods - fully implicit Runge-Kutta methods, SDIRK methods and Rosenbrock methods. For each family, forward, adjoint and tangent linear models are implemented, which enables FATODE for direct and adjoint sensitivity analysis. In this paper, we describe the implementation aspects of FATODE, code organization and usage aspects. Then we demonstrate a simple example of its application on a small chemical mechanism for both ODE integration and sensitivity analysis.

[1]  J. Blom,et al.  Benchmarking Stiff ODE Solvers for Atmospheric Chemistry Problems II: Rosenbrock Methods , 1996 .

[2]  Thomas Kaminski,et al.  Recipes for adjoint code construction , 1998, TOMS.

[3]  Mark A. Kramer,et al.  Algorithm 658: ODESSA–an ordinary differential equation solver with explicit simultaneous sensitivity analysis , 1988, TOMS.

[4]  Adrian Sandu,et al.  Forward, Tangent Linear, and Adjoint Runge-Kutta Methods in KPP-2.2 , 2006, International Conference on Computational Science.

[5]  Adrian Sandu,et al.  Benchmarking stiff ode solvers for atmospheric chemistry problems II: Rosenbrock solvers , 1997 .

[6]  Jack Dongarra,et al.  LAPACK Users' guide (third ed.) , 1999 .

[7]  F. Krogh,et al.  Solving Ordinary Differential Equations , 2019, Programming for Computations - Python.

[8]  E. Hairer,et al.  Solving Ordinary Differential Equations II , 2010 .

[9]  Adrian Sandu,et al.  Forward and adjoint sensitivity analysis with continuous explicit Runge-Kutta schemes , 2009, Appl. Math. Comput..

[10]  Adrian Sandu,et al.  On the Properties of Runge-Kutta Discrete Adjoints , 2006, International Conference on Computational Science.

[11]  R. Serban,et al.  CVODES: The Sensitivity-Enabled ODE Solver in SUNDIALS , 2005 .

[12]  Timothy A. Davis,et al.  Algorithm 832: UMFPACK V4.3---an unsymmetric-pattern multifrontal method , 2004, TOMS.

[13]  William W. Hager,et al.  Runge-Kutta methods in optimal control and the transformed adjoint system , 2000, Numerische Mathematik.

[14]  James Demmel,et al.  A Supernodal Approach to Sparse Partial Pivoting , 1999, SIAM J. Matrix Anal. Appl..

[15]  E. Hairer,et al.  Solving Ordinary Differential Equations II: Stiff and Differential-Algebraic Problems , 2010 .

[16]  Uwe Naumann,et al.  Automatic Differentiation: Applications, Theory, and Implementations (Lecture Notes in Computational Science and Engineering) , 2006 .

[17]  Ed Anderson,et al.  LAPACK Users' Guide , 1995 .

[18]  G. Carmichael,et al.  Direct and adjoint sensitivity analysis of chemical kinetic systems with KPP: Part I—theory and software tools , 2003, Atmospheric Environment.

[19]  Ernst Hairer,et al.  Solving Ordinary Differential Equations I: Nonstiff Problems , 2009 .

[20]  Kjell Gustafsson,et al.  Control-theoretic techniques for stepsize selection in implicit Runge-Kutta methods , 1991, TOMS.

[21]  G. Carmichael,et al.  Direct and adjoint sensitivity analysis of chemical kinetic systems with KPP: II—numerical validation and applications , 2003 .

[22]  Willem Hundsdorfer,et al.  A Second-Order Rosenbrock Method Applied to Photochemical Dispersion Problems , 1999, SIAM J. Sci. Comput..

[23]  G. Carmichael,et al.  Adjoint Implementation of Rosenbrock Methods Applied to Variational Data Assimilation Problems , 2000, Journal of Computational Physics.

[24]  E. Hairer,et al.  Solving ordinary differential equations I (2nd revised. ed.): nonstiff problems , 1993 .

[25]  E. Hairer,et al.  Stiff and differential-algebraic problems , 1991 .