13.5 Stiff ODEs
Stiffness is a numerical phenomena that causes some differential equation solvers difficulty, notably the Runge-Kutta RK45 solver used in the examples earlier. The phenomena is common in chemical reaction systems, which are often characterized by having multiple vastly different time-scales. The stiffness of a system can also vary between different parts of parameter space, and so a typically non-stiff system may exhibit stiffness occasionally. These sorts of difficulties can occur more frequently with loose priors or during warmup.
Stan provides a specialized solver for stiff ODEs
(Cohen and Hindmarsh 1996; Serban and Hindmarsh 2005). An ODE system is
specified exactly the same way with a function of exactly the same
signature. The only difference is in the call to the solver the
rk45 suffix is replaced with
bdf, as in
ode_bdf(sho, y0, t0, ts, theta);
Using the stiff (
bdf) solver on a system that is not stiff
may be much slower than using the non-stiff (
rk45) solver because
each step of the stiff solver takes more time to compute. On the other hand,
attempting to use the non-stiff solver for a stiff system will cause
the timestep to become very small, leading the non-stiff solver taking more
time overall even if each step is easier to compute than for the stiff solver.
If it is not known for sure that an ODE system is stiff, run the model with
bdf solvers and see which is faster. If the
solver is faster, then the problem is probably non-stiff, and then it makes
sense to try the
adams solver as well. The
adams solver uses higher order
methods which can take larger timesteps than the
rk45 solver, though similar
bdf solver each of these steps is more expensive to compute.
Cohen, Scott D, and Alan C Hindmarsh. 1996. “CVODE, a Stiff/Nonstiff ODE Solver in C.” Computers in Physics 10 (2): 138–43.
Serban, Radu, and Alan C Hindmarsh. 2005. “CVODES: The Sensitivity-Enabled ODE Solver in SUNDIALS.” In ASME 2005 International Design Engineering Technical Conferences and Computers and Information in Engineering Conference, 257–69. American Society of Mechanical Engineers.