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

Manages integrator lifecycle and stepping. More...

#include <IntegrationManager.hpp>

Public Types

using DerivativeFunc = std::function<JanusVector<Scalar>(Scalar, const JanusVector<Scalar> &)>
 Derivative function signature: (t, X) -> X_dot.

Public Member Functions

 IntegrationManager ()=default
void Configure (const IntegratorConfig< Scalar > &config)
 Configure from IntegratorConfig.
void Configure (IntegratorType type)
 Configure from integrator type enum.
void Configure (const std::string &type_name)
 Configure from type name string.
void ConfigureDefault ()
 Configure with default integrator (RK4).
JanusVector< Scalar > Step (const DerivativeFunc &deriv_func, const JanusVector< Scalar > &X, Scalar t, Scalar dt)
 Perform fixed-step integration.
AdaptiveStepResult< Scalar > AdaptiveStep (const DerivativeFunc &deriv_func, const JanusVector< Scalar > &X, Scalar t, Scalar dt_request)
 Perform adaptive-step integration.
IntegratorType Type () const
 Get current integrator type.
const IntegratorConfig< Scalar > & Config () const
 Get current configuration.
std::string Name () const
 Get integrator name.
bool IsConfigured () const
 Check if integrator is configured.
bool IsAdaptive () const
 Check if current integrator supports adaptive stepping.
Integrator< Scalar > * GetIntegrator ()
 Get direct access to integrator (expert use).
const Integrator< Scalar > * GetIntegrator () const
 Get direct const access to integrator (expert use).

Detailed Description

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

Manages integrator lifecycle and stepping.

Centralizes integrator management that was previously spread across Simulator methods.

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

Member Typedef Documentation

◆ DerivativeFunc

template<typename Scalar>
using icarus::IntegrationManager< Scalar >::DerivativeFunc = std::function<JanusVector<Scalar>(Scalar, const JanusVector<Scalar> &)>

Derivative function signature: (t, X) -> X_dot.

Constructor & Destructor Documentation

◆ IntegrationManager()

template<typename Scalar>
icarus::IntegrationManager< Scalar >::IntegrationManager ( )
default

Member Function Documentation

◆ AdaptiveStep()

template<typename Scalar>
AdaptiveStepResult< Scalar > icarus::IntegrationManager< Scalar >::AdaptiveStep ( const DerivativeFunc & deriv_func,
const JanusVector< Scalar > & X,
Scalar t,
Scalar dt_request )
inlinenodiscard

Perform adaptive-step integration.

Only available for adaptive integrators (e.g., RK45).

Parameters
deriv_funcDerivative function (t, X) -> X_dot
XCurrent state vector
tCurrent time
dt_requestRequested time step
Returns
AdaptiveStepResult with actual step taken

◆ Config()

template<typename Scalar>
const IntegratorConfig< Scalar > & icarus::IntegrationManager< Scalar >::Config ( ) const
inlinenodiscard

Get current configuration.

◆ Configure() [1/3]

template<typename Scalar>
void icarus::IntegrationManager< Scalar >::Configure ( const IntegratorConfig< Scalar > & config)
inline

Configure from IntegratorConfig.

Creates the appropriate integrator based on configuration.

Parameters
configIntegrator configuration

◆ Configure() [2/3]

template<typename Scalar>
void icarus::IntegrationManager< Scalar >::Configure ( const std::string & type_name)
inline

Configure from type name string.

Parameters
type_nameIntegrator type name (e.g., "RK4", "RK45")

◆ Configure() [3/3]

template<typename Scalar>
void icarus::IntegrationManager< Scalar >::Configure ( IntegratorType type)
inline

Configure from integrator type enum.

Parameters
typeIntegrator type

◆ ConfigureDefault()

template<typename Scalar>
void icarus::IntegrationManager< Scalar >::ConfigureDefault ( )
inline

Configure with default integrator (RK4).

◆ GetIntegrator() [1/2]

template<typename Scalar>
Integrator< Scalar > * icarus::IntegrationManager< Scalar >::GetIntegrator ( )
inlinenodiscard

Get direct access to integrator (expert use).

◆ GetIntegrator() [2/2]

template<typename Scalar>
const Integrator< Scalar > * icarus::IntegrationManager< Scalar >::GetIntegrator ( ) const
inlinenodiscard

Get direct const access to integrator (expert use).

◆ IsAdaptive()

template<typename Scalar>
bool icarus::IntegrationManager< Scalar >::IsAdaptive ( ) const
inlinenodiscard

Check if current integrator supports adaptive stepping.

◆ IsConfigured()

template<typename Scalar>
bool icarus::IntegrationManager< Scalar >::IsConfigured ( ) const
inlinenodiscard

Check if integrator is configured.

◆ Name()

template<typename Scalar>
std::string icarus::IntegrationManager< Scalar >::Name ( ) const
inlinenodiscard

Get integrator name.

◆ Step()

template<typename Scalar>
JanusVector< Scalar > icarus::IntegrationManager< Scalar >::Step ( const DerivativeFunc & deriv_func,
const JanusVector< Scalar > & X,
Scalar t,
Scalar dt )
inlinenodiscard

Perform fixed-step integration.

Parameters
deriv_funcDerivative function (t, X) -> X_dot
XCurrent state vector
tCurrent time
dtTime step
Returns
New state at t + dt

◆ Type()

template<typename Scalar>
IntegratorType icarus::IntegrationManager< Scalar >::Type ( ) const
inlinenodiscard

Get current integrator type.


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