Stiffness detection relies on knowledge of the linear stability boundary of the method, which has not been defined.
Computing the exact linear stability boundary of a method under extrapolation can be quite complicated. Therefore a default value is selected which works for all methods. This corresponds to considering the pth order power series approximation to the exponential at 0 and ignoring higher order terms.
If "LocalExtrapolation" is True then a generic value is selected corresponding to a method of order p + 2 (symmetric) or p + 1.
If "LocalExtrapolation" is False then the property "LinearStabilityBoundary" of the base method is checked. If no value has been specified then a default for a method of order p is selected.
This computes the linear stability boundary for a generic method of order 4:
A default value for the "LinearStabilityBoundary" property is used:
This shows how to specify the linear stability boundary of the method for the framework. This value will only be used if "DoubleStep" is invoked with "LocalExtrapolation"->True :
"DoubleStep" assumes by default that a method is not appropriate for stiff problems (and hence uses stiffness detection) when no "StiffMethodQ" property is specified. This shows how to define the property:
The following example extrapolates the classical Runge–Kutta method of order four using two applications of (3).
The inner specification of "DoubleStep" constructs a method of order five.
A second application of "DoubleStep" is used to obtain a method of order six, which uses adaptive step sizes.
Nested applications of "DoubleStep" are used to raise the order and provide an adaptive step-size estimate:
In general the method "Extrapolation" is more appropriate for constructing high-order integration schemes from low-order methods.