FATODE is a FORTRAN library for the integration of ordinary differential equations with direct and adjoint sensitivity analysis capabilities. FATODE implements four families of methods -- explicit Runge-Kutta for nonstiff problems and fully implicit Runge-Kutta, singly diagonally implicit Runge-Kutta, and Rosenbrock for stiff problems. Each family contains several methods with different orders of accuracy; users can add new methods by simply providing their coefficients. For each family the forward, adjoint, and tangent linear models are implemented. General purpose solvers for dense and sparse linear algebra are used; users can easily incorporate problem-tailored linear algebra routines. To the best of our knowledge FATODE is the first publicly available general purpose package that offers forward and adjoint sensitivity analysis capabilities in the context of Runge Kutta methods. A wide range of applications are expected to benefit from its use; examples include parameter estimation, data assimilation, optimal control, and uncertainty quantification.



  1. Time stepping methods with good stability properties implemented in FATODE. (ERK, FIRK, SDIRK and ROS stand for Explicit Runge-Kutta, Fully Implicit Runge-Kutta, Singly Diagonally Implicit Runge-Kutta and Rosenbrock, respectively.)
  2. Family Method Stages Order Stability properties
    ERK RK2(3) 3 2 conditionally stable
    RK3(2) 4 3 conditionally stable
    RK4(3) 5 4 conditionally stable
    DOPRI-5 7 5 conditionally stable
    Verner 8 6 conditionally stable
    DOPRI-853 12 8 conditionally stable
    FIRK Radau-1A 3 5 L-stable
    Radau-2A 3 5 L-stable, stiffly-accuate
    Lobatto-3C 3 4 L-stable, stiffly-accuate
    Gauss 3 6 weakly L-stable
    SDIRK Sdirk-2a 2 2 L-stable, stiffly-accuate
    Sdirk-2b 2 2 L-stable, stiffly-accuate
    Sdirk-3a 3 2 L-stable, stiffly-accuate
    Sdirk-4a 5 4 L-stable, stiffly-accuate
    Sdirk-4b 5 4 L-stable, stiffly-accuate
    ROS Ros-2 2 2 L-stable
    Ros-3 3 3 L-stable, stiffly-accuate
    Rodas-3 4 3 L-stable, stiffly-accuate
    Ros-4 4 4 L-stable
    Rodas-4 6 4 L-stable, stiffly-accuate
  3. The capabilities to solve general ODEs (both stiff and nostiff problems) and to perform direct and adjoint discrete sensitivity analysis.
  4. Standalone extendable linear solvers for both full and sparse matrices.
  5. Provide fine controls over step size, order of accuracy, termination criteria for Newton iterations and so on.