ControlledStepperWrapper< FP, ControlledStepper > Class Template Reference
|
CPP API
|
Public Member Functions |
Private Types |
Private Member Functions |
Private Attributes |
Static Private Attributes |
List of all members
mio::ControlledStepperWrapper< FP, ControlledStepper > Class Template Reference
This is an adaptive IntegratorCore. More...
#include <stepper_wrapper.h>
Inheritance diagram for mio::ControlledStepperWrapper< FP, ControlledStepper >:
Collaboration diagram for mio::ControlledStepperWrapper< FP, ControlledStepper >:
Public Member Functions | |
| std::unique_ptr< OdeIntegratorCore< FP > > | clone () const override |
| ControlledStepperWrapper (const ControlledStepperWrapper &other)=delete | |
| ControlledStepperWrapper (ControlledStepperWrapper &&other)=delete | |
| ControlledStepperWrapper (FP abs_tol=1e-10, FP rel_tol=1e-5, FP dt_min=std::numeric_limits< FP >::min(), FP dt_max=std::numeric_limits< FP >::max()) | |
| Set up the integrator. More... | |
| ControlledStepperWrapper & | operator= (const ControlledStepperWrapper &other)=delete |
| ControlledStepperWrapper & | operator= (ControlledStepperWrapper &&other)=delete |
| void | set_abs_tolerance (FP abs_tol) |
| void | set_dt_max (FP dt_max) |
| void | set_dt_min (FP dt_min) |
| void | set_rel_tolerance (FP rel_tol) |
| bool | step (const mio::DerivFunction< FP > &f, Eigen::Ref< const Eigen::VectorX< FP >> yt, FP &t, FP &dt, Eigen::Ref< Eigen::VectorX< FP >> ytp1) const override |
| Make a single integration step on a system of ODEs and adapt the step size dt. More... | |
Public Member Functions inherited from mio::IntegratorCore< FP, Integrands > | |
| IntegratorCore (const FP &dt_min, const FP &dt_max) | |
| Initialize an IntegratorCore. More... | |
| virtual bool | step (const Integrands &... fs, Eigen::Ref< const Eigen::VectorX< FP >> yt, FP &t, FP &dt, Eigen::Ref< Eigen::VectorX< FP >> ytp1) const =0 |
| Make a single integration step. More... | |
| virtual | ~IntegratorCore () |
| FP & | get_dt_min () |
| Access lower bound to the step size dt. More... | |
| const FP & | get_dt_min () const |
| Access lower bound to the step size dt. More... | |
| FP & | get_dt_max () |
| Access upper bound to the step size dt. More... | |
| const FP & | get_dt_max () const |
| Access upper bound to the step size dt. More... | |
Private Types | |
| using | Algebra = boost::numeric::odeint::vector_space_algebra |
| using | ErrorChecker = boost::numeric::odeint::default_error_checker< FP, Algebra, Operations > |
| using | Operations = typename boost::numeric::odeint::operations_dispatcher< Eigen::VectorX< FP > >::operations_type |
| using | Resizer = boost::numeric::odeint::initially_resizer |
| using | StepAdjuster = details::step_adjuster< FP, FP > |
| using | Stepper = boost::numeric::odeint::controlled_runge_kutta< ControlledStepper< Eigen::VectorX< FP >, FP, Eigen::VectorX< FP >, FP, Algebra, Operations, Resizer >, ErrorChecker, boost::reference_wrapper< StepAdjuster > > |
Private Member Functions | |
| Stepper | create_stepper () |
| (Re)initialize the internal stepper. More... | |
Private Attributes | |
| FP | m_abs_tol |
| FP | m_rel_tol |
| Absolute and relative tolerances for integration. More... | |
| StepAdjuster | m_step_adjuster |
| Defines step sizing. Holds a copy of dt_max that has to be updated. More... | |
| Stepper | m_stepper |
| A stepper instance used for integration. More... | |
Static Private Attributes | |
| static constexpr bool | is_fsal_stepper |
Detailed Description
template<typename FP, template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
class mio::ControlledStepperWrapper< FP, ControlledStepper >
This is an adaptive IntegratorCore.
It creates and manages an instance of a boost::numeric::odeint::controlled_runge_kutta integrator, wrapped as mio::IntegratorCore.
Member Typedef Documentation
◆ Algebra
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
private |
◆ ErrorChecker
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
private |
◆ Operations
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
private |
◆ Resizer
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
private |
◆ StepAdjuster
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
private |
◆ Stepper
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
private |
Constructor & Destructor Documentation
◆ ControlledStepperWrapper() [1/3]
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
inline |
Set up the integrator.
- Parameters
-
[in] abs_tol Absolute tolerance for convergence. [in] rel_tol Relative tolerance for convergence. [in] dt_min Lower bound for time step dt. [in] dt_max Upper bound for time step dt.
◆ ControlledStepperWrapper() [2/3]
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
delete |
◆ ControlledStepperWrapper() [3/3]
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
delete |
Member Function Documentation
◆ clone()
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
inlineoverridevirtual |
Implements mio::IntegratorCore< FP, Integrands >.
◆ create_stepper()
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
inlineprivate |
(Re)initialize the internal stepper.
◆ operator=() [1/2]
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
delete |
◆ operator=() [2/2]
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
delete |
◆ set_abs_tolerance()
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
inline |
- Parameters
-
tol the required absolute tolerance for comparison of the iterative approximation
◆ set_dt_max()
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
inline |
- Parameters
-
dt_max sets the maximum step size
◆ set_dt_min()
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
inline |
- Parameters
-
dt_min sets the minimum step size
◆ set_rel_tolerance()
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
inline |
- Parameters
-
tol the required relative tolerance for comparison of the iterative approximation
◆ step()
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
inlineoverride |
Make a single integration step on a system of ODEs and adapt the step size dt.
- Parameters
-
[in] yt Value of y at t, y(t). [in,out] t Current time. Will be set to t' in [t+dt_min, t+dt]. [in,out] dt Current time step size h=dt. Overwritten by an estimated optimal step size for the next step. [out] ytp1 The approximated value of y(t').
Member Data Documentation
◆ is_fsal_stepper
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
staticconstexprprivate |
Initial value:
= std::is_same_v<typename Stepper::stepper_type::stepper_category,
boost::numeric::odeint::explicit_error_stepper_fsal_tag>
◆ m_abs_tol
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
private |
◆ m_rel_tol
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
private |
Absolute and relative tolerances for integration.
◆ m_step_adjuster
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
mutableprivate |
Defines step sizing. Holds a copy of dt_max that has to be updated.
◆ m_stepper
template<typename FP , template< class State, class Value, class Deriv, class Time, class Algebra, class Operations, class Resizer > class ControlledStepper>
|
mutableprivate |
A stepper instance used for integration.
Generated by
Public Member Functions inherited from