Implements Maker and incorporates MakerGSL::_, the actual GSL-based implementation of the Evolved interface. More...
#include <EvolvedGSL.h>
Public Member Functions | |
MakerGSL (SteppingFunction sf=SF_RKCK, double nextDtTryCorrectionFactor=100.) | |
Public Member Functions inherited from evolved::Maker< A > | |
const Ptr | operator() (A &array, Derivs derivs, double dtInit, double epsRel, double epsAbs, const A &scaleAbs) const |
The factory member function expecting the most generic set of parameters. More... | |
Additional Inherited Members | |
Public Types inherited from evolved::Maker< A > | |
typedef Evolved< A >::Ptr | Ptr |
typedef Evolved< A >::Derivs | Derivs |
Implements Maker and incorporates MakerGSL::_, the actual GSL-based implementation of the Evolved interface.
Definition at line 21 of file EvolvedGSL.h.
|
inline |
nextDtTryCorrectionFactor | This parameter is connected to the patching in _::step_v() of an undesired behaviour in gsl_odeiv : GSL seems to take dtDid as a basis of calculating dtTry, instead of the previous dtTry. Now, since dtDid will be at most deltaT, this will result in a severe drop of dtTry, if deltaT is very small (e.g. when completing a given interval at its end). Since this drop can be several orders of magnitude, this must not be allowed as it would slow down the simulation extremely. To patch this, we check before the actual timestep whether we are in the case of a very small deltaT (< dtTry/nextDtTryCorrectionFactor ). If this is found to be the case, then the present dtTry will be cached and used unchanged in the next step. That is, the present (tiny) step is excluded from stepsize control. |
Definition at line 31 of file EvolvedGSL.h.