YANE-Framework 1.1.0
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes

yane::OdeSolve::DoPriConfig Class Reference

Class to configure all DoPri solvers. More...

Inheritance diagram for yane::OdeSolve::DoPriConfig:
[legend]
Collaboration diagram for yane::OdeSolve::DoPriConfig:
[legend]

List of all members.

Public Member Functions

virtual OdeConfigclone ()
 Function to clone the current yane::OdeSolve::OdeConfig object.
yane::Utils::UuidconfigID ()
 Function to obtain the ID of the current configuration.
void copyTo (OdeConfig *target)
 Function to copy default data to a supplied configuration object.
 DoPriConfig ()
 Constructor.
void getBeta (double &beta)
void getInitialStepsize (double &hinit)
 Function to obtain the initial step size of the used solution method for differential equations.
void getMaxSteps (int &steps)
 Function to obtain the current maximal number of steps allowed for the step size control methods.
void getMaxStepsize (double &stepsize)
 Function to obtain the maximal step size length.
void getSafetyFactor (double &safetyfactor)
 Function to obtain the safety factor used within the step size control method.
void getStepsizeSelectionParameters (double &fac1, double &fac2)
 Function to obtain the bounds for the allowed change in the step size.
void getStiffnessTest (int &teststeps)
 Function to obtain the number of steps which shall be used to test for stiffness of the system.
void getTolerance (double &rtol, double &atol)
 Function to obtain the error tolerances.
void getToleranceVector (double *&rtol, double *&atol)
 Function to obtain the vectors of currently used error tolerances.
void setBeta (double beta=4E-2)
void setInitialStepsize (double hinit=0.0)
 Function to set the initial step size.
void setMaxSteps (int steps=10000000)
 Function to set the maximal numer of allowed.
void setMaxStepsize (double stepsize=0.0)
 Function to set the maximal step size length.
void setSafetyFactor (double safetyfactor=0.9)
 Function to set the safety factor used within the step size control method.
void setStepsizeSelectionParameters (double fac1=0.2, double fac2=10.0)
 Function to set the bounds for the allowed change in the step size

\[ \mbox{fac}_1 \leq \frac{h_{new}}{h_{old}} \leq \mbox{fac}_2 \]

.

void setStiffnessTest (int teststeps=1000)
 Function to set the number of steps which shall be used to test for stiffness of the system.
void setTolerance (double rtol=1E-6, double atol=1E-6)
 Function to set scalar error tolerances for the adaptive step size control algorithms.
void setToleranceVector (double *rtol=0, double *atol=0)
 Function to set the vectors of error tolerances for the adaptive step size control algorithms.
virtual ~DoPriConfig ()
 Destructor.

Static Public Member Functions

static void assertValidConfigObject (OdeConfig *config)
 Function to check whether a supplied configuration object is of type yane::OdeSolve::DoPriConfig.

Protected Member Functions

virtual void copyToNoInvalidation (OdeConfig *target)
 Function to copy all internal configuration data to the supplied configuration object.
void invalidateOldConfig ()
 Function to change the ID of the configuration object.

Protected Attributes

double _atol
 Absolute Tolerance.
double * _atol_vec
 Vector of absolute Tolerances.
double _beta
 Value of the stabilizing value used within the step size computation.
double _initial_stepsize
 Initial step size.
int _max_steps
 Maximal number of steps of the iterative method.
double _max_stepsize
 Maximal step size.
double _rtol
 Relative tolerance.
double * _rtol_vec
 Vector of relative Tolerances.
double _safety_factor
 Safty factor.
yane::Utils::Uuid_setting_uuid
 ID of the yane::OdeSolve::OdeConfig object.
double _ss_fac1
 Lower bound for the change of the step size.
double _ss_fac2
 Upper bound for the change of the step size.
int _stiff_teststeps
 Number of steps for stiffness test.

Detailed Description

This class includes all configuration methods for all DoPri solvers.
Atter construction of an object of this class it is initialized with default values which usually give good results. Still, the parameters of the class should be adapted to the considered yane::Model::Model object.


Member Function Documentation

LIB_EXPORT void yane::OdeSolve::DoPriConfig::assertValidConfigObject ( OdeConfig config) [static]

This function overloads the standard method. It checks whether the supplied yane::OdeSolve::OdeConfig object possesses the ID of a yane::OdeSolve::DoPriConfig class and is therefore valid.

Parameters:
configConfiguration object to be checked

Reimplemented from yane::OdeSolve::OdeConfig.

LIB_EXPORT yane::OdeSolve::OdeConfig * yane::OdeSolve::DoPriConfig::clone ( ) [virtual]

This function can be used to clone the current yane::OdeSolve::OdeConfig object.

Returns:
Cloned yane::OdeSolve::OdeConfig object

Reimplemented from yane::OdeSolve::OdeConfig.

LIB_EXPORT yane::Utils::Uuid * yane::OdeSolve::OdeConfig::configID ( ) [inherited]

This function can be used to obtain the ID of the current configuration. If one data values has been changed, then the ID is modified. Using this ID the solver can automatically recognize that it has to update itself using the new values.

Returns:
ID of the current configuration
LIB_EXPORT void yane::OdeSolve::OdeConfig::copyTo ( OdeConfig target) [inherited]

This function can be used to copy current data of the object to a (different) supplied configuration object. It automatically resets the ID of the supplied object.

Parameters:
targetConfiguration object which shall be configured
LIB_EXPORT void yane::OdeSolve::DoPriConfig::copyToNoInvalidation ( OdeConfig target) [protected, virtual]

This function copies all internal configuration data to the supplied configuration object.

Parameters:
targetConfiguration object to hold data of calling yane::OdeSolve::OdeConfig object

Reimplemented from yane::OdeSolve::OdeConfig.

LIB_EXPORT void yane::OdeSolve::DoPriConfig::getBeta ( double &  beta)

This function can be used to obtain the value for stabilizing the step size computation.

Parameters:
betaValue of the stabilizing value used within the step size computation
See also:
setBeta
LIB_EXPORT void yane::OdeSolve::OdeConfig::getInitialStepsize ( double &  hinit) [inherited]

This function can be used to obtain the initial step size of the used solution method for differential equations.

Parameters:
hinitInitial step size
See also:
setInitialStepsize
LIB_EXPORT void yane::OdeSolve::OdeConfig::getMaxSteps ( int &  steps) [inherited]

This function can be used to obtain the current maximal number of steps allowed for the step size control methods.

Parameters:
stepsMaximal number of computation steps of the differential equation solver
See also:
setMaxSteps
LIB_EXPORT void yane::OdeSolve::OdeConfig::getMaxStepsize ( double &  stepsize) [inherited]

This function can be used to obtain the maximal set size length.

Parameters:
stepsizeMaximal step size length
See also:
setMaxStepsize
LIB_EXPORT void yane::OdeSolve::OdeConfig::getSafetyFactor ( double &  safetyfactor) [inherited]

This function can be used to obtain the safety factor used within the step size control method.

Parameters:
safetyfactorSafety factor
See also:
setSafetyFactor
LIB_EXPORT void yane::OdeSolve::OdeConfig::getStepsizeSelectionParameters ( double &  fac1,
double &  fac2 
) [inherited]

This function can be used to obtain the bounds for the allowed change in the step size.

Parameters:
fac1Lower bound
fac2Upper bound
See also:
setStepsizeSelectionParameters
LIB_EXPORT void yane::OdeSolve::DoPriConfig::getStiffnessTest ( int &  teststeps)

This function can be used to obtain the number of steps which shall be used to test whether the problem is stiff.

Parameters:
teststepsNumber of steps for stiffness test
See also:
getStiffnessTest
LIB_EXPORT void yane::OdeSolve::OdeConfig::getTolerance ( double &  rtol,
double &  atol 
) [inherited]

This function can be used to obtain the currently used error tolerances

Parameters:
rtolRelative tolerance
atolAbsolute tolerance
See also:
setTolerance
LIB_EXPORT void yane::OdeSolve::OdeConfig::getToleranceVector ( double *&  rtol,
double *&  atol 
) [inherited]

This function can be used to obtain the vectors of currently used error tolerances

Parameters:
rtolPointer of the relative error tolerance vector
atolPointer of the absolute error tolerance vector
See also:
setToleranceVector
LIB_EXPORT void yane::OdeSolve::OdeConfig::invalidateOldConfig ( ) [protected, inherited]

This function changes the ID of the configuration object. Hence, all solvers which use this configuration object will notice that they need to be reconfigured using the new configuration data. Each derived class must call this method if any of its set-methods is called.

LIB_EXPORT void yane::OdeSolve::DoPriConfig::setBeta ( double  beta = 4E-2)

This function sets the value for stabilizing the step size computation. These values are required to satisfy $ 0 \leq beta \leq 0.1 $. Note that larger values leave the step size computation to be more stable.

Parameters:
betaValue of the stabilizing value used within the step size computation
Exceptions:
WrongSolverInputExceptionIs thrown if an invalid value is supplied
See also:
getBeta
LIB_EXPORT void yane::OdeSolve::OdeConfig::setInitialStepsize ( double  hinit = 0.0) [inherited]

This function sets the initial step size which is used upon start of the used solution method for differential equations. If the value is set to zero then a guess for the initial step size is computed numerically.

Parameters:
hinitInitial step size
Exceptions:
WrongSolverInputExceptionIs thrown if unapplicable data values are supplied
See also:
getInitialStepsize
LIB_EXPORT void yane::OdeSolve::OdeConfig::setMaxSteps ( int  steps = 10000000) [inherited]

This function sets the maximal number of allowed integration steps of the differential equation solver. If a computation requires more iteration steps then the method yane::OdeSolve::OdeSolve::calc is terminated with exception yane::OdeSolve::TooManyStepsException.

Parameters:
stepsMaximal number of computation steps of the differential equation solver
Exceptions:
WrongSolverInputExceptionIs thrown if unapplicable data values are supplied
See also:
getMaxSteps
LIB_EXPORT void yane::OdeSolve::OdeConfig::setMaxStepsize ( double  stepsize = 0.0) [inherited]

This function sets the maximal step size length. If zero is supplied to this method, then the maximal step size is set to the length of the integration interval.

Parameters:
stepsizeMaximal step size length
Exceptions:
WrongSolverInputExceptionIs thrown if unapplicable data values are supplied
See also:
getMaxStepsize
LIB_EXPORT void yane::OdeSolve::OdeConfig::setSafetyFactor ( double  safetyfactor = 0.9) [inherited]

This function sets the safety factor used within the step size control method.

Parameters:
safetyfactorSafety factor
See also:
getSafetyFactor
Exceptions:
WrongSolverInputExceptionIs thrown if unapplicable data values are supplied
LIB_EXPORT void yane::OdeSolve::OdeConfig::setStepsizeSelectionParameters ( double  fac1 = 0.2,
double  fac2 = 10.0 
) [inherited]

This function sets the bounds for the allowed change in the step size. Within the algorithms the condition

\[ \mbox{fac}_1 \leq \frac{h_{new}}{h_{old}} \leq \mbox{fac}_2 \]

is checked and the new step size is set accordingly.

Parameters:
fac1Lower bound
fac2Upper bound
Exceptions:
WrongSolverInputExceptionIs thrown if unapplicable data values are supplied
See also:
getStepsizeSelectionParameters
LIB_EXPORT void yane::OdeSolve::DoPriConfig::setStiffnessTest ( int  teststeps = 1000)

This function sets the number of steps which shall be used to test whether the problem is stiff. Note that supplying a value lower than zero deactivates this test for stiffness.

Parameters:
teststepsNumber of steps for stiffness test
See also:
getStiffnessTest
LIB_EXPORT void yane::OdeSolve::OdeConfig::setTolerance ( double  rtol = 1E-6,
double  atol = 1E-6 
) [inherited]

This function sets scalar error tolerances for the adaptive step size control algorithms.

Parameters:
rtolRelative tolerance
atolAbsolute tolerance
See also:
getTolerance
Exceptions:
WrongSolverInputExceptionIs thrown if unapplicable data values are supplied
LIB_EXPORT void yane::OdeSolve::OdeConfig::setToleranceVector ( double *  rtol = 0,
double *  atol = 0 
) [inherited]

This function sets vectors of error tolerances for the adaptive step size control algorithms. Here, the dimension of the vectors of error tolerances are required to be identical to the dimension of the state variable.
If a null pointer is supplied to this routine, then the usage of error tolerance vectors is switched to scalar error tolerances base on the internally stored values.

Parameters:
rtolPointer of the relative error tolerances
atolPointer of the absolute error tolerances
Exceptions:
WrongSolverInputExceptionIs thrown if unapplicable data values are supplied
See also:
getToleranceVector