Backward differentiation methods
Backward differentiation formulas (BDF) are linear multistep methods with excellent stability properties for the integration of chemical systems (cf. Hairer and Wanner [1991], Section V.1). The \(k\)-step BDF method reads
where the coefficients \(\alpha_i\) and \(\beta\) are chosen such that the method has order of consistency \(k\).
The KPP library contains two off-the-shelf, highly popular implementations of BDF methods, described in the following sections:
LSODE
Integrator file: int/lsode.f90
LSODE, the Livermore ODE solver (Radhakrishnan and Hindmarsh [1993]), implements backward differentiation formula (BDF) methods for stiff problems. LSODE has been translated to Fortran90 for the incorporation into the KPP library.
Attention
We have discovered that the current implementation of the LSODE integrator is not thread-safe for OpenMP parallelization. When LSODE is called from within an OpenMP parallel loop, the integration will fail because key internal variables in LSODE will be overwritten by concurrent threads.
VODE
Integrator file: int/dvode.f90
VODE (Brown et al. [1989]) uses another formulation of backward differentiation formulas. The version of VODE present in the KPP library uses directly the KPP sparse linear algebra routines.
BEULER
Integrator file: int/sdirk.f90
Backward Euler integration method. To request this method, make sure you select
#INTEGRATOR sdirk
in your definition file, and then set ICNTRL(3) = 6.