The Runge-Kutta Cash-Karp method implemented without the generic Runge-Kutta algorithm.
More...
|
typedef
explicit_error_stepper_base
< runge_kutta_cash_karp54_classic
< 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::wrapped_state_type | wrapped_state_type |
|
typedef
stepper_base_type::wrapped_deriv_type | wrapped_deriv_type |
|
typedef
stepper_base_type::stepper_type | stepper_type |
|
typedef algebra_stepper_base
< Algebra, Operations > | algebra_stepper_base_type |
|
typedef explicit_error_stepper_tag | stepper_category |
|
typedef
explicit_error_stepper_base
< runge_kutta_cash_karp54_classic
< 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_cash_karp54_classic (const algebra_type &algebra=algebra_type()) |
| Constructs the runge_kutta_cash_karp54_classic class. More...
|
|
template<class System , class StateIn , class DerivIn , class StateOut , class Err > |
void | do_step_impl (System system, const StateIn &in, const DerivIn &dxdt, time_type t, StateOut &out, time_type dt, Err &xerr) |
| This method performs one step. More...
|
|
template<class System , class StateIn , class DerivIn , class StateOut > |
void | do_step_impl (System system, const StateIn &in, const DerivIn &dxdt, time_type t, StateOut &out, time_type dt) |
| This method performs one step. 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< DerivIn,
time_type >, void >::type | do_step (System system, StateInOut &x, const DerivIn &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...
|
|
boost::disable_if
< boost::is_same< DerivIn,
time_type >, void >::type | do_step (System system, const StateIn &in, const DerivIn &dxdt, 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, 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< DerivIn,
time_type >, void >::type | do_step (System system, StateInOut &x, const DerivIn &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, time_type t, StateOut &out, time_type dt, Err &xerr) |
| The method performs one step with the stepper passed by Stepper. 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_cash_karp54_classic< State, Value, Deriv, Time, Algebra, Operations, Resizer >
The Runge-Kutta Cash-Karp method implemented without the generic Runge-Kutta algorithm.
The Runge-Kutta Cash-Karp method is one of the standard methods for solving ordinary differential equations, see en.wikipedia.org/wiki/Cash-Karp_method. The method is explicit and fulfills the Error Stepper concept. Step size control is provided but continuous output is not available for this method.
This class derives from explicit_error_stepper_base and inherits its interface via CRTP (current recurring template pattern). This class implements the method directly, hence the generic Runge-Kutta algorithm is not used.
- 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 StateIn >
Adjust the size of all temporaries in the stepper manually.
- Parameters
-
x | A state from which the size of the temporaries to be resized is deduced. |
References boost::numeric::odeint::explicit_error_stepper_base< runge_kutta_cash_karp54_classic< State, Value, Deriv, Time, Algebra, Operations, Resizer >, 5, 5, 4, State, Value, Deriv, Time, Algebra, Operations, Resizer >::adjust_size().
boost::disable_if< boost::is_same< StateIn , time_type > , void >::type boost::numeric::odeint::explicit_error_stepper_base< runge_kutta_cash_karp54_classic< State, Value, Deriv, Time, Algebra, Operations, Resizer > , Order, StepperOrder, ErrorOrder, State, Value, Deriv, Time, Algebra, Operations, Resizer >::do_step |
( |
System |
system, |
|
|
const StateIn & |
in, |
|
|
time_type |
t, |
|
|
StateOut & |
out, |
|
|
time_type |
dt |
|
) |
| |
|
inlineinherited |
The method performs one step with the stepper passed by Stepper.
The state of the ODE is updated out-of-place. This method is disabled if StateIn and Time are the same type. In this case the method can not be distinguished from other do_step
variants.
- Note
- This method does not solve the forwarding problem.
- 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 |
t | The value of the time, at which the step should be performed. |
out | The result of the step is written in out. |
dt | The step size. |
References boost::numeric::odeint::detail::_1, boost::bind(), boost::numeric::odeint::explicit_error_stepper_base< Stepper, Order, StepperOrder, ErrorOrder, State, Value, Deriv, Time, Algebra, Operations, Resizer >::m_dxdt, boost::numeric::odeint::state_wrapper< V, Enabler >::m_v, boost::ref(), template, and boost::detail::type.
void boost::numeric::odeint::explicit_error_stepper_base< runge_kutta_cash_karp54_classic< State, Value, Deriv, Time, Algebra, Operations, Resizer > , Order, StepperOrder, ErrorOrder, State, Value, Deriv, Time, Algebra, Operations, Resizer >::do_step |
( |
System |
system, |
|
|
const StateIn & |
in, |
|
|
time_type |
t, |
|
|
StateOut & |
out, |
|
|
time_type |
dt, |
|
|
Err & |
xerr |
|
) |
| |
|
inlineinherited |
The method performs one step with the stepper passed by Stepper.
The state of the ODE is updated out-of-place. Furthermore, the error is estimated.
- Note
- This method does not solve the forwarding problem.
- 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 |
t | The value of the time, at which the step should be performed. |
out | The result of the step is written in out. |
dt | The step size. |
xerr | The error estimate. |
References boost::numeric::odeint::detail::_1, boost::bind(), boost::numeric::odeint::explicit_error_stepper_base< Stepper, Order, StepperOrder, ErrorOrder, State, Value, Deriv, Time, Algebra, Operations, Resizer >::m_dxdt, boost::numeric::odeint::state_wrapper< V, Enabler >::m_v, boost::ref(), template, and boost::detail::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 System , class StateIn , class DerivIn , class StateOut , class Err >
boost::numeric::odeint::runge_kutta_cash_karp54_classic< State, Value, Deriv, Time, Algebra, Operations, Resizer >::do_step_impl |
( |
System |
system, |
|
|
const StateIn & |
in, |
|
|
const DerivIn & |
dxdt, |
|
|
time_type |
t, |
|
|
StateOut & |
out, |
|
|
time_type |
dt, |
|
|
Err & |
xerr |
|
) |
| |
|
inline |
This method performs one step.
The derivative dxdt
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
. Futhermore, an estimation of the error is stored in xerr
. Access to this step functionality is provided by explicit_error_stepper_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 | The derivative of x at t. |
t | The value of the time, at which the step should be performed. |
out | The result of the step is written in out. |
dt | The step size. |
xerr | The result of the error estimation is written in xerr. |
References boost::numeric::odeint::algebra_stepper_base< Algebra, Operations >::m_algebra, boost::numeric::odeint::state_wrapper< V, Enabler >::m_v, and template.
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 >
boost::numeric::odeint::runge_kutta_cash_karp54_classic< State, Value, Deriv, Time, Algebra, Operations, Resizer >::do_step_impl |
( |
System |
system, |
|
|
const StateIn & |
in, |
|
|
const DerivIn & |
dxdt, |
|
|
time_type |
t, |
|
|
StateOut & |
out, |
|
|
time_type |
dt |
|
) |
| |
|
inline |
This method performs one step.
The derivative dxdt
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
. Access to this step functionality is provided by explicit_error_stepper_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 | The derivative of x at t. |
t | The value of the time, at which the step should be performed. |
out | The result of the step is written in out. |
dt | The step size. |
References boost::numeric::odeint::detail::_1, boost::xpressive::a2, boost::xpressive::a3, boost::xpressive::a4, boost::xpressive::a5, boost::xpressive::a6, boost::bind(), boost::numeric::odeint::algebra_stepper_base< Algebra, Operations >::m_algebra, boost::numeric::odeint::state_wrapper< V, Enabler >::m_v, boost::ref(), template, and boost::detail::type.