![]() |
YANE-Framework 1.1.0
|
Class to configure all DoPri solvers. More...
Public Member Functions | |
virtual OdeConfig * | clone () |
Function to clone the current yane::OdeSolve::OdeConfig object. | |
yane::Utils::Uuid * | configID () |
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
| |
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. |
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.
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.
config | Configuration 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.
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.
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.
target | Configuration 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.
target | Configuration 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.
beta | Value of the stabilizing value used within the step size computation |
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.
hinit | Initial step size |
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.
steps | Maximal number of computation steps of the differential equation solver |
LIB_EXPORT void yane::OdeSolve::OdeConfig::getMaxStepsize | ( | double & | stepsize | ) | [inherited] |
This function can be used to obtain the maximal set size length.
stepsize | Maximal step size length |
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.
safetyfactor | Safety factor |
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.
fac1 | Lower bound |
fac2 | Upper bound |
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.
teststeps | Number of steps for stiffness test |
LIB_EXPORT void yane::OdeSolve::OdeConfig::getTolerance | ( | double & | rtol, |
double & | atol | ||
) | [inherited] |
This function can be used to obtain the currently used error tolerances
rtol | Relative tolerance |
atol | Absolute tolerance |
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
rtol | Pointer of the relative error tolerance vector |
atol | Pointer of the absolute error tolerance vector |
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 . Note that larger values leave the step size computation to be more stable.
beta | Value of the stabilizing value used within the step size computation |
WrongSolverInputException | Is thrown if an invalid value is supplied |
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.
hinit | Initial step size |
WrongSolverInputException | Is thrown if unapplicable data values are supplied |
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.
steps | Maximal number of computation steps of the differential equation solver |
WrongSolverInputException | Is thrown if unapplicable data values are supplied |
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.
stepsize | Maximal step size length |
WrongSolverInputException | Is thrown if unapplicable data values are supplied |
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.
safetyfactor | Safety factor |
WrongSolverInputException | Is 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
is checked and the new step size is set accordingly.
fac1 | Lower bound |
fac2 | Upper bound |
WrongSolverInputException | Is thrown if unapplicable data values are supplied |
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.
teststeps | Number of steps for stiffness test |
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.
rtol | Relative tolerance |
atol | Absolute tolerance |
WrongSolverInputException | Is 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.
rtol | Pointer of the relative error tolerances |
atol | Pointer of the absolute error tolerances |
WrongSolverInputException | Is thrown if unapplicable data values are supplied |