Icarus
Vehicle Simulation as a Transformable Computational Graph, built on Vulcan and Janus
Loading...
Searching...
No Matches
icarus::RK45Integrator< Scalar > Class Template Reference

Adaptive Dormand-Prince RK4(5) integrator. More...

#include <RK45Integrator.hpp>

Inheritance diagram for icarus::RK45Integrator< Scalar >:
Collaboration diagram for icarus::RK45Integrator< Scalar >:

Classes

struct  Statistics
 Statistics for adaptive stepping. More...

Public Member Functions

 RK45Integrator (Scalar abs_tol=Scalar{1e-6}, Scalar rel_tol=Scalar{1e-6})
 Construct with default tolerances.
JanusVector< Scalar > Step (const DerivativeFunc &f, const JanusVector< Scalar > &x, Scalar t, Scalar dt) override
 Fixed-step interface (uses requested dt directly).
AdaptiveStepResult< Scalar > AdaptiveStep (const DerivativeFunc &f, const JanusVector< Scalar > &x, Scalar t, Scalar dt) override
 Adaptive step with automatic error control.
void SetAbsTol (Scalar tol) override
 Set absolute tolerance.
void SetRelTol (Scalar tol) override
 Set relative tolerance.
Scalar GetAbsTol () const override
 Get current absolute tolerance.
Scalar GetRelTol () const override
 Get current relative tolerance.
std::string Name () const override
 Get integrator name for logging.
int Order () const override
 Get integrator order (for error analysis).
IntegratorType Type () const override
 Get integrator type.
void SetMinDt (Scalar min_dt)
void SetMaxDt (Scalar max_dt)
void SetSafetyFactor (Scalar factor)
Scalar GetMinDt () const
Scalar GetMaxDt () const
Scalar SuggestDt (Scalar dt, Scalar error, Scalar tol) const
 Suggest next step size based on error.
const StatisticsGetStatistics () const
void ResetStatistics ()
Public Member Functions inherited from icarus::AdaptiveIntegrator< Scalar >
bool IsAdaptive () const override
 Check if integrator supports adaptive stepping.
Public Member Functions inherited from icarus::Integrator< Scalar >
virtual ~Integrator ()=default

Additional Inherited Members

Public Types inherited from icarus::Integrator< Scalar >
using DerivativeFunc
 Derivative function signature.

Detailed Description

template<typename Scalar>
class icarus::RK45Integrator< Scalar >

Adaptive Dormand-Prince RK4(5) integrator.

Uses embedded 4th and 5th order solutions to estimate local truncation error. Adjusts step size to maintain error within tolerance.

Features:

  • 7 function evaluations per step (shares stages)
  • Automatic step size control
  • Configurable absolute and relative tolerances
  • Step statistics tracking
Template Parameters
ScalarNumeric type (double or casadi::MX)

Constructor & Destructor Documentation

◆ RK45Integrator()

template<typename Scalar>
icarus::RK45Integrator< Scalar >::RK45Integrator ( Scalar abs_tol = Scalar{1e-6},
Scalar rel_tol = Scalar{1e-6} )
inlineexplicit

Construct with default tolerances.

Parameters
abs_tolAbsolute tolerance (default 1e-6)
rel_tolRelative tolerance (default 1e-6)

Member Function Documentation

◆ AdaptiveStep()

template<typename Scalar>
AdaptiveStepResult< Scalar > icarus::RK45Integrator< Scalar >::AdaptiveStep ( const DerivativeFunc & f,
const JanusVector< Scalar > & x,
Scalar t,
Scalar dt )
inlineoverridevirtual

Adaptive step with automatic error control.

Performs RK45 steps with automatic step size reduction when error exceeds tolerance. Retries with progressively smaller dt until the step is accepted or dt falls below min_dt.

Parameters
fDerivative function
xCurrent state
tCurrent time
dtRequested step size (may be reduced internally)
Returns
Result with final state, actual dt used, error, and acceptance flag
Exceptions
StepSizeTooSmallErrorif dt reduces below min_dt without success

Implements icarus::AdaptiveIntegrator< Scalar >.

◆ GetAbsTol()

template<typename Scalar>
Scalar icarus::RK45Integrator< Scalar >::GetAbsTol ( ) const
inlinenodiscardoverridevirtual

Get current absolute tolerance.

Implements icarus::AdaptiveIntegrator< Scalar >.

◆ GetMaxDt()

template<typename Scalar>
Scalar icarus::RK45Integrator< Scalar >::GetMaxDt ( ) const
inlinenodiscard

◆ GetMinDt()

template<typename Scalar>
Scalar icarus::RK45Integrator< Scalar >::GetMinDt ( ) const
inlinenodiscard

◆ GetRelTol()

template<typename Scalar>
Scalar icarus::RK45Integrator< Scalar >::GetRelTol ( ) const
inlinenodiscardoverridevirtual

Get current relative tolerance.

Implements icarus::AdaptiveIntegrator< Scalar >.

◆ GetStatistics()

template<typename Scalar>
const Statistics & icarus::RK45Integrator< Scalar >::GetStatistics ( ) const
inlinenodiscard

◆ Name()

template<typename Scalar>
std::string icarus::RK45Integrator< Scalar >::Name ( ) const
inlinenodiscardoverridevirtual

Get integrator name for logging.

Implements icarus::Integrator< Scalar >.

◆ Order()

template<typename Scalar>
int icarus::RK45Integrator< Scalar >::Order ( ) const
inlinenodiscardoverridevirtual

Get integrator order (for error analysis).

Implements icarus::Integrator< Scalar >.

◆ ResetStatistics()

template<typename Scalar>
void icarus::RK45Integrator< Scalar >::ResetStatistics ( )
inline

◆ SetAbsTol()

template<typename Scalar>
void icarus::RK45Integrator< Scalar >::SetAbsTol ( Scalar tol)
inlineoverridevirtual

Set absolute tolerance.

Implements icarus::AdaptiveIntegrator< Scalar >.

◆ SetMaxDt()

template<typename Scalar>
void icarus::RK45Integrator< Scalar >::SetMaxDt ( Scalar max_dt)
inline

◆ SetMinDt()

template<typename Scalar>
void icarus::RK45Integrator< Scalar >::SetMinDt ( Scalar min_dt)
inline

◆ SetRelTol()

template<typename Scalar>
void icarus::RK45Integrator< Scalar >::SetRelTol ( Scalar tol)
inlineoverridevirtual

Set relative tolerance.

Implements icarus::AdaptiveIntegrator< Scalar >.

◆ SetSafetyFactor()

template<typename Scalar>
void icarus::RK45Integrator< Scalar >::SetSafetyFactor ( Scalar factor)
inline

◆ Step()

template<typename Scalar>
JanusVector< Scalar > icarus::RK45Integrator< Scalar >::Step ( const DerivativeFunc & f,
const JanusVector< Scalar > & x,
Scalar t,
Scalar dt )
inlineoverridevirtual

Fixed-step interface (uses requested dt directly).

For compatibility with base Integrator interface. No step adaptation; returns 5th-order solution.

Implements icarus::Integrator< Scalar >.

◆ SuggestDt()

template<typename Scalar>
Scalar icarus::RK45Integrator< Scalar >::SuggestDt ( Scalar dt,
Scalar error,
Scalar tol ) const
inlinenodiscard

Suggest next step size based on error.

Parameters
dtCurrent step size
errorCurrent error estimate
tolError tolerance
Returns
Suggested step size for next step

◆ Type()

template<typename Scalar>
IntegratorType icarus::RK45Integrator< Scalar >::Type ( ) const
inlinenodiscardoverridevirtual

Get integrator type.

Implements icarus::Integrator< Scalar >.


The documentation for this class was generated from the following file: