"StiffnessSwitching" Method for NDSolve
Introduction
The basic idea behind the "StiffnessSwitching" method is to provide an automatic means of switching between a nonstiff and a stiff solver.
The "StiffnessTest" and "NonstiffTest" options (described within "Stiffness Detection in NDSolve") provides a useful means of detecting when a problem appears to be stiff.
The "StiffnessSwitching" method traps any failure code generated by "StiffnessTest" and switches to an alternative solver. The "StiffnessSwitching" method also uses the method specified in the "NonstiffTest" option to switch back from a stiff to a nonstiff method.
"Extrapolation" provides a powerful technique for computing highly accurate solutions using dynamic order and step size selection (see "Extrapolation Method for NDSolve" for more details) and is therefore used as the default choice in "StiffnessSwitching".
Examples
The "StiffnessSwitching" method uses a pair of extrapolation methods as the default. The nonstiff solver uses the "ExplicitModifiedMidpoint" base method, and the stiff solver uses the "LinearlyImplicitEuler" base method.
For small values of the AccuracyGoal and PrecisionGoal tolerances, it is sometimes preferable to use an explicit Runge–Kutta method for the nonstiff solver.