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

Abstract interface for numerical integrators. More...

#include <Integrator.hpp>

Inheritance diagram for icarus::Integrator< Scalar >:

Public Types

using DerivativeFunc
 Derivative function signature.

Public Member Functions

virtual ~Integrator ()=default
virtual JanusVector< Scalar > Step (const DerivativeFunc &f, const JanusVector< Scalar > &x, Scalar t, Scalar dt)=0
 Advance state by one step.
virtual std::string Name () const =0
 Get integrator name for logging.
virtual int Order () const =0
 Get integrator order (for error analysis).
virtual IntegratorType Type () const =0
 Get integrator type.
virtual bool IsAdaptive () const
 Check if integrator supports adaptive stepping.

Detailed Description

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

Abstract interface for numerical integrators.

Integrators advance state using derivative information from the Simulator. All implementations are templated on Scalar for symbolic mode support.

Template Parameters
ScalarNumeric type (double or casadi::MX)

Member Typedef Documentation

◆ DerivativeFunc

template<typename Scalar>
using icarus::Integrator< Scalar >::DerivativeFunc
Initial value:
std::function<JanusVector<Scalar>(Scalar t, const JanusVector<Scalar> &x)>

Derivative function signature.

Maps (t, X) → dX/dt

Constructor & Destructor Documentation

◆ ~Integrator()

template<typename Scalar>
virtual icarus::Integrator< Scalar >::~Integrator ( )
virtualdefault

Member Function Documentation

◆ IsAdaptive()

template<typename Scalar>
virtual bool icarus::Integrator< Scalar >::IsAdaptive ( ) const
inlinenodiscardvirtual

Check if integrator supports adaptive stepping.

Reimplemented in icarus::AdaptiveIntegrator< Scalar >.

◆ Name()

template<typename Scalar>
virtual std::string icarus::Integrator< Scalar >::Name ( ) const
nodiscardpure virtual

◆ Order()

template<typename Scalar>
virtual int icarus::Integrator< Scalar >::Order ( ) const
nodiscardpure virtual

◆ Step()

template<typename Scalar>
virtual JanusVector< Scalar > icarus::Integrator< Scalar >::Step ( const DerivativeFunc & f,
const JanusVector< Scalar > & x,
Scalar t,
Scalar dt )
pure virtual

Advance state by one step.

Parameters
fDerivative function
xCurrent state vector
tCurrent time
dtRequested time step
Returns
New state at t + dt

Implemented in icarus::EulerIntegrator< Scalar >, icarus::RK2Integrator< Scalar >, icarus::RK45Integrator< Scalar >, and icarus::RK4Integrator< Scalar >.

◆ Type()

template<typename Scalar>
virtual IntegratorType icarus::Integrator< Scalar >::Type ( ) const
nodiscardpure virtual

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