This concepts specifies the interface an error stepper has to fulfill to be used within a ControlledErrorStepper. An error stepper must always fulfill the stepper concept. This can trivially implemented by
template< class System > error_stepper::do_step( System sys , state_type &x , time_type t , time_type dt ) { state_type xerr; // allocate xerr do_step( sys , x , t , dt , xerr ); }
An error stepper following this Error Stepper concept is capable of doing one step of the solution x(t) of an ODE with step-size dt to obtain x(t+dt) and also computing an error estimate xerr of the result. Error Steppers can be Runge-Kutta steppers, symplectic steppers as well as implicit steppers. Based on the stepper type, the ODE is defined as System, Symplectic System, Simple Symplectic System or Implicit System.
state_type
Stepper::state_type
The type characterizing the state of the ODE, hence x.
deriv_type
Stepper::deriv_type
The type characterizing the derivative of the ODE, hence d x/dt.
time_type
Stepper::time_type
The type characterizing the dependent variable of the ODE, hence the time t.
value_type
Stepper::value_type
The
numerical data type which is used within the stepper, something like
float
, double
,
complex< double >
.
order_type
Stepper::order_type
The
type characterizing the order of the ODE, typically unsigned
short
.
stepper_category
Stepper::stepper_category
A
tag type characterizing the category of the stepper. This type must be
convertible to error_stepper_tag
.
ErrorStepper
A type that is a model of Error Stepper
State
A type representing the state x of the ODE
Error
A type representing the error calculated by the stepper, usually same
as State
Time
A type representing the time t of the ODE
stepper
An object of type ErrorStepper
x
Object of type State
xerr
Object of type Error
t
, dt
Objects of type Time
sys
An object defining the ODE, should be a model of either System, Symplectic System, Simple Symplectic System or Implicit System.
Name |
Expression |
Type |
Semantics |
---|---|---|---|
Get the stepper order |
|
|
Returns the order of the stepper for one step without error estimation. |
Get the stepper order |
|
|
Returns the order of the stepper for one error estimation step which is used for error calculation. |
Get the error order |
|
|
Returns the order of the error step which is used for error calculation. |
Do step |
|
|
Performs one step of step size |
Do step with error estimation |
|
|
Performs one step of step size |
runge_kutta_cash_karp54
runge_kutta_dopri5
runge_kutta_fehlberg78
rosenbrock4