...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Home | Libraries | People | FAQ | More |
This concept specifies the interface a controlled stepper has to fulfill to be used within integrate functions.
A controlled stepper following this Controlled Stepper concept provides the possibility to perform one step of the solution x(t) of an ODE with step-size dt to obtain x(t+dt) with a given step-size dt. Depending on an error estimate of the solution the step might be rejected and a smaller step-size is suggested.
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 >
.
stepper_category
Stepper::stepper_category
A
tag type characterizing the category of the stepper. This type must be
convertible to controlled_stepper_tag
.
ControlledStepper
A type that is a model of Controlled Stepper
State
A type representing the state x of the ODE
Time
A type representing the time t of the ODE
stepper
An object of type ControlledStepper
x
Object of type State
t
, dt
Objects of type Time
sys
An object defining the ODE, should be a model of System, Symplectic System, Simple Symplectic System or Implicit System.
Name |
Expression |
Type |
Semantics |
---|---|---|---|
Do step |
stepper.try_step( sys , x , t , dt )
|
|
Tries one step of step size |
controlled_error_stepper< runge_kutta_cash_karp54
>
controlled_error_stepper_fsal< runge_kutta_dopri5
>
controlled_error_stepper< runge_kutta_fehlberg78
>
rosenbrock4_controller
bulirsch_stoer