|
typedef
explicit_error_stepper_fsal_base
< runge_kutta_dopri5< State,
Value, Deriv, Time, Algebra,
Operations, Resizer >
, 5, 5, 4, State, Value, Deriv,
Time, Algebra, Operations,
Resizer > | stepper_base_type |
|
typedef
stepper_base_type::state_type | state_type |
|
typedef
stepper_base_type::value_type | value_type |
|
typedef
stepper_base_type::deriv_type | deriv_type |
|
typedef
stepper_base_type::time_type | time_type |
|
typedef
stepper_base_type::algebra_type | algebra_type |
|
typedef
stepper_base_type::operations_type | operations_type |
|
typedef
stepper_base_type::resizer_type | resizer_type |
|
typedef
stepper_base_type::stepper_type | stepper_type |
|
typedef
stepper_base_type::wrapped_state_type | wrapped_state_type |
|
typedef
stepper_base_type::wrapped_deriv_type | wrapped_deriv_type |
|
typedef algebra_stepper_base
< Algebra, Operations > | algebra_stepper_base_type |
|
typedef
explicit_error_stepper_fsal_tag | stepper_category |
|
typedef
explicit_error_stepper_fsal_base
< runge_kutta_dopri5< State,
Value, Deriv, Time, Algebra,
Operations, Resizer >, Order,
StepperOrder, ErrorOrder,
State, Value, Deriv, Time,
Algebra, Operations, Resizer > | internal_stepper_base_type |
|
typedef unsigned short | order_type |
|
|
| runge_kutta_dopri5 (const algebra_type &algebra=algebra_type()) |
| Constructs the runge_kutta_dopri5 class. More...
|
|
template<class System , class StateIn , class DerivIn , class StateOut , class DerivOut > |
void | do_step_impl (System system, const StateIn &in, const DerivIn &dxdt_in, time_type t, StateOut &out, DerivOut &dxdt_out, time_type dt) |
| This method performs one step. More...
|
|
template<class System , class StateIn , class DerivIn , class StateOut , class DerivOut , class Err > |
void | do_step_impl (System system, const StateIn &in, const DerivIn &dxdt_in, time_type t, StateOut &out, DerivOut &dxdt_out, time_type dt, Err &xerr) |
| This method performs one step. More...
|
|
template<class StateOut , class StateIn1 , class DerivIn1 , class StateIn2 , class DerivIn2 > |
void | calc_state (time_type t, StateOut &x, const StateIn1 &x_old, const DerivIn1 &deriv_old, time_type t_old, const StateIn2 &, const DerivIn2 &deriv_new, time_type t_new) const |
| This method is used for continuous output and it calculates the state x at a time t from the knowledge of two states old_state and current_state at time points t_old and t_new . More...
|
|
template<class StateIn > |
void | adjust_size (const StateIn &x) |
| Adjust the size of all temporaries in the stepper manually. More...
|
|
order_type | order (void) const |
|
order_type | stepper_order (void) const |
|
order_type | error_order (void) const |
|
void | do_step (System system, StateInOut &x, time_type t, time_type dt) |
| This method performs one step. More...
|
|
void | do_step (System system, const StateInOut &x, time_type t, time_type dt) |
| Second version to solve the forwarding problem, can be called with Boost.Range as StateInOut. More...
|
|
boost::disable_if
< boost::is_same< StateInOut,
time_type >, void >::type | do_step (System system, StateInOut &x, DerivInOut &dxdt, time_type t, time_type dt) |
| The method performs one step with the stepper passed by Stepper. More...
|
|
boost::disable_if
< boost::is_same< StateIn,
time_type >, void >::type | do_step (System system, const StateIn &in, time_type t, StateOut &out, time_type dt) |
| The method performs one step with the stepper passed by Stepper. More...
|
|
void | do_step (System system, const StateIn &in, const DerivIn &dxdt_in, time_type t, StateOut &out, DerivOut &dxdt_out, time_type dt) |
| The method performs one step with the stepper passed by Stepper. More...
|
|
void | do_step (System system, StateInOut &x, time_type t, time_type dt, Err &xerr) |
| The method performs one step with the stepper passed by Stepper and estimates the error. More...
|
|
void | do_step (System system, const StateInOut &x, time_type t, time_type dt, Err &xerr) |
| Second version to solve the forwarding problem, can be called with Boost.Range as StateInOut. More...
|
|
boost::disable_if
< boost::is_same< StateInOut,
time_type >, void >::type | do_step (System system, StateInOut &x, DerivInOut &dxdt, time_type t, time_type dt, Err &xerr) |
| The method performs one step with the stepper passed by Stepper. More...
|
|
void | do_step (System system, const StateIn &in, time_type t, StateOut &out, time_type dt, Err &xerr) |
| The method performs one step with the stepper passed by Stepper. More...
|
|
void | do_step (System system, const StateIn &in, const DerivIn &dxdt_in, time_type t, StateOut &out, DerivOut &dxdt_out, time_type dt, Err &xerr) |
| The method performs one step with the stepper passed by Stepper. More...
|
|
void | reset (void) |
| Resets the internal state of this stepper. More...
|
|
void | initialize (const DerivIn &deriv) |
| Initializes the internal state of the stepper. More...
|
|
void | initialize (System system, const StateIn &x, time_type t) |
| Initializes the internal state of the stepper. More...
|
|
bool | is_initialized (void) const |
| Returns if the stepper is already initialized. More...
|
|
algebra_type & | algebra () |
|
const algebra_type & | algebra () const |
|
template<class State, class Value = double, class Deriv = State, class Time = Value, class Algebra = typename algebra_dispatcher< State >::algebra_type, class Operations = typename operations_dispatcher< State >::operations_type, class Resizer = initially_resizer>
class boost::numeric::odeint::runge_kutta_dopri5< State, Value, Deriv, Time, Algebra, Operations, Resizer >
The Runge-Kutta Dormand-Prince 5 method.
The Runge-Kutta Dormand-Prince 5 method is a very popular method for solving ODEs, see . The method is explicit and fulfills the Error Stepper concept. Step size control is provided but continuous output is available which make this method favourable for many applications.
This class derives from explicit_error_stepper_fsal_base and inherits its interface via CRTP (current recurring template pattern). The method possesses the FSAL (first-same-as-last) property. See explicit_error_stepper_fsal_base for more details.
- Template Parameters
-
State | The state type. |
Value | The value type. |
Deriv | The type representing the time derivative of the state. |
Time | The time representing the independent variable - the time. |
Algebra | The algebra type. |
Operations | The operations type. |
Resizer | The resizer policy type. |
template<class State , class Value = double, class Deriv = State, class Time = Value, class Algebra = typename algebra_dispatcher< State >::algebra_type, class Operations = typename operations_dispatcher< State >::operations_type, class Resizer = initially_resizer>
template<class StateOut , class StateIn1 , class DerivIn1 , class StateIn2 , class DerivIn2 >
boost::numeric::odeint::runge_kutta_dopri5< State, Value, Deriv, Time, Algebra, Operations, Resizer >::calc_state |
( |
time_type |
t, |
|
|
StateOut & |
x, |
|
|
const StateIn1 & |
x_old, |
|
|
const DerivIn1 & |
deriv_old, |
|
|
time_type |
t_old, |
|
|
const StateIn2 & |
, |
|
|
const DerivIn2 & |
deriv_new, |
|
|
time_type |
t_new |
|
) |
| const |
|
inline |
template<class State , class Value = double, class Deriv = State, class Time = Value, class Algebra = typename algebra_dispatcher< State >::algebra_type, class Operations = typename operations_dispatcher< State >::operations_type, class Resizer = initially_resizer>
template<class System , class StateIn , class DerivIn , class StateOut , class DerivOut >
boost::numeric::odeint::runge_kutta_dopri5< State, Value, Deriv, Time, Algebra, Operations, Resizer >::do_step_impl |
( |
System |
system, |
|
|
const StateIn & |
in, |
|
|
const DerivIn & |
dxdt_in, |
|
|
time_type |
t, |
|
|
StateOut & |
out, |
|
|
DerivOut & |
dxdt_out, |
|
|
time_type |
dt |
|
) |
| |
|
inline |
This method performs one step.
The derivative dxdt_in
of in
at the time t
is passed to the method. The result is updated out-of-place, hence the input is in in
and the output in out
. Furthermore, the derivative is update out-of-place, hence the input is assumed to be in dxdt_in
and the output in dxdt_out
. Access to this step functionality is provided by explicit_error_stepper_fsal_base and do_step_impl
should not be called directly.
- Parameters
-
system | The system function to solve, hence the r.h.s. of the ODE. It must fulfill the Simple System concept. |
in | The state of the ODE which should be solved. in is not modified in this method |
dxdt_in | The derivative of x at t. dxdt_in is not modified by this method |
t | The value of the time, at which the step should be performed. |
out | The result of the step is written in out. |
dxdt_out | The result of the new derivative at time t+dt. |
dt | The step size. |
References boost::numeric::odeint::detail::_1, boost::xpressive::a2, boost::xpressive::a3, boost::xpressive::a4, boost::xpressive::a5, boost::bind(), boost::numeric::odeint::algebra_stepper_base< Algebra, Operations >::m_algebra, boost::ref(), template, and boost::detail::type.
Referenced by boost::numeric::odeint::runge_kutta_dopri5< State, Value, Deriv, Time, Algebra, Operations, Resizer >::do_step_impl().
template<class State , class Value = double, class Deriv = State, class Time = Value, class Algebra = typename algebra_dispatcher< State >::algebra_type, class Operations = typename operations_dispatcher< State >::operations_type, class Resizer = initially_resizer>
template<class System , class StateIn , class DerivIn , class StateOut , class DerivOut , class Err >
boost::numeric::odeint::runge_kutta_dopri5< State, Value, Deriv, Time, Algebra, Operations, Resizer >::do_step_impl |
( |
System |
system, |
|
|
const StateIn & |
in, |
|
|
const DerivIn & |
dxdt_in, |
|
|
time_type |
t, |
|
|
StateOut & |
out, |
|
|
DerivOut & |
dxdt_out, |
|
|
time_type |
dt, |
|
|
Err & |
xerr |
|
) |
| |
|
inline |
This method performs one step.
The derivative dxdt_in
of in
at the time t
is passed to the method. The result is updated out-of-place, hence the input is in in
and the output in out
. Furthermore, the derivative is update out-of-place, hence the input is assumed to be in dxdt_in
and the output in dxdt_out
. Access to this step functionality is provided by explicit_error_stepper_fsal_base and do_step_impl
should not be called directly. An estimation of the error is calculated.
- Parameters
-
system | The system function to solve, hence the r.h.s. of the ODE. It must fulfill the Simple System concept. |
in | The state of the ODE which should be solved. in is not modified in this method |
dxdt_in | The derivative of x at t. dxdt_in is not modified by this method |
t | The value of the time, at which the step should be performed. |
out | The result of the step is written in out. |
dxdt_out | The result of the new derivative at time t+dt. |
dt | The step size. |
xerr | An estimation of the error. |
References boost::numeric::odeint::detail::_1, boost::bind(), boost::numeric::odeint::copy(), boost::numeric::odeint::runge_kutta_dopri5< State, Value, Deriv, Time, Algebra, Operations, Resizer >::do_step_impl(), boost::numeric::odeint::algebra_stepper_base< Algebra, Operations >::m_algebra, boost::ref(), boost::numeric::odeint::same_instance(), and template.