Public Types | Public Member Functions | List of all members
corbo::NumericalIntegratorExplicitInterface Class Referenceabstract

‍** More...

#include <integrator_interface.h>

Inheritance diagram for corbo::NumericalIntegratorExplicitInterface:
Inheritance graph
[legend]

Public Types

using Ptr = std::shared_ptr< NumericalIntegratorExplicitInterface >
 
using UnaryFunction = const std::function< void(const Eigen::VectorXd &, Eigen::Ref< Eigen::VectorXd >)>
 
using UPtr = std::unique_ptr< NumericalIntegratorExplicitInterface >
 
- Public Types inherited from corbo::DynamicsEvalInterface
using InputVector = Eigen::VectorXd
 
using Ptr = std::shared_ptr< DynamicsEvalInterface >
 
using StateVector = Eigen::VectorXd
 
using UPtr = std::unique_ptr< DynamicsEvalInterface >
 

Public Member Functions

void computeEqualityConstraint (const Eigen::Ref< const Eigen::VectorXd > &x1, const Eigen::Ref< const Eigen::VectorXd > &x2, double dt, const UnaryFunction &fun, Eigen::Ref< Eigen::VectorXd > error)
 
void computeEqualityConstraint (const StateVector &x1, const InputVector &u1, const StateVector &x2, double dt, const SystemDynamicsInterface &system, Eigen::Ref< Eigen::VectorXd > error) override
 Compute error between two consecutive (discrete) states. More...
 
virtual int getConvergenceOrder () const =0
 Return the convergence order. More...
 
DynamicsEvalInterface::Ptr getInstance () const override=0
 Return a newly created shared instance of the implemented class. More...
 
virtual void initialize (int state_dim)
 Allocate memory for a given state dimension. More...
 
bool interpolate (const Eigen::Ref< const Eigen::VectorXd > &x1, const Eigen::Ref< const Eigen::VectorXd > &u1, const Eigen::Ref< const Eigen::VectorXd > &, const Eigen::Ref< const Eigen::VectorXd > &, double dt, const SystemDynamicsInterface &system, const Range &range, std::vector< Eigen::VectorXd > &states, std::vector< Eigen::VectorXd > &controls) override
 
virtual void solveIVP (const Eigen::VectorXd &x1, double dt, const UnaryFunction &fun, Eigen::Ref< Eigen::VectorXd > x2)=0
 Solution of the initial value problem. More...
 
virtual void solveIVP (const StateVector &x1, const InputVector &u1, double dt, const SystemDynamicsInterface &system, Eigen::Ref< Eigen::VectorXd > x2)=0
 Solution of the initial value problem. More...
 
virtual ~NumericalIntegratorExplicitInterface ()
 Virtual destructor. More...
 
- Public Member Functions inherited from corbo::DynamicsEvalInterface
virtual bool interpolate (const std::vector< const Eigen::VectorXd * > &x, const std::vector< const Eigen::VectorXd * > &u, double dt, const SystemDynamicsInterface &system, const Range &range, std::vector< Eigen::VectorXd > &states, std::vector< Eigen::VectorXd > &controls)
 
virtual ~DynamicsEvalInterface ()
 Virtual destructor. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from corbo::DynamicsEvalInterface
static Factory< DynamicsEvalInterface > & getFactory ()
 Get access to the accociated factory. More...
 

Detailed Description

‍**

Interface for explicit numerical integrators

Explicit numerical integrators in the context of ordinary or partial differential equations determine the integral value only based on the previous or current time instance, e.g.:

\[ x(t_0 + \Delta t) = \int_{t_0}^{t_0+\Delta T} f(x(t_0), t) dt \]

.

Remarks
This interface is provided with factory support (DynamicsEval).
See also
NumericalIntegratorInterface FiniteDifferencesInterface
Author
Christoph Rösmann (chris.nosp@m.toph.nosp@m..roes.nosp@m.mann.nosp@m.@tu-d.nosp@m.ortm.nosp@m.und.d.nosp@m.e)

Definition at line 180 of file integrator_interface.h.

Member Typedef Documentation

◆ Ptr

Definition at line 205 of file integrator_interface.h.

◆ UnaryFunction

using corbo::NumericalIntegratorExplicitInterface::UnaryFunction = const std::function<void(const Eigen::VectorXd&, Eigen::Ref<Eigen::VectorXd>)>

Definition at line 208 of file integrator_interface.h.

◆ UPtr

Definition at line 206 of file integrator_interface.h.

Constructor & Destructor Documentation

◆ ~NumericalIntegratorExplicitInterface()

virtual corbo::NumericalIntegratorExplicitInterface::~NumericalIntegratorExplicitInterface ( )
inlinevirtual

Virtual destructor.

Definition at line 213 of file integrator_interface.h.

Member Function Documentation

◆ computeEqualityConstraint() [1/2]

void corbo::NumericalIntegratorExplicitInterface::computeEqualityConstraint ( const Eigen::Ref< const Eigen::VectorXd > &  x1,
const Eigen::Ref< const Eigen::VectorXd > &  x2,
double  dt,
const UnaryFunction fun,
Eigen::Ref< Eigen::VectorXd >  error 
)
inline

Definition at line 268 of file integrator_interface.h.

◆ computeEqualityConstraint() [2/2]

void corbo::NumericalIntegratorExplicitInterface::computeEqualityConstraint ( const StateVector x1,
const InputVector u1,
const StateVector x2,
double  dt,
const SystemDynamicsInterface system,
Eigen::Ref< Eigen::VectorXd >  error 
)
inlineoverridevirtual

Compute error between two consecutive (discrete) states.

\[ e = f(x,u,t) - \dot{x} \]

.

Remarks
We require no alias between error and all other parameters!
Parameters
[in]x1Initial state vector [SystemDynamicsInterface::getStateDimension() x 1]
[in]u1Constant control input vector [SystemDynamicsInterface::getInputDimension() x 1]
[in]x2Final state vector [SystemDynamicsInterface::getStateDimension() x 1]
[in]dtTime interval length
[in]systemSystem dynamics object
[out]errorResulting error [SystemDynamicsInterface::getStateDimension() x 1] (must be preallocated)

Implements corbo::DynamicsEvalInterface.

Definition at line 261 of file integrator_interface.h.

◆ getConvergenceOrder()

virtual int corbo::NumericalIntegratorExplicitInterface::getConvergenceOrder ( ) const
pure virtual

◆ getInstance()

DynamicsEvalInterface::Ptr corbo::NumericalIntegratorExplicitInterface::getInstance ( ) const
overridepure virtual

◆ initialize()

virtual void corbo::NumericalIntegratorExplicitInterface::initialize ( int  state_dim)
inlinevirtual

Allocate memory for a given state dimension.

Remarks
This method is optional and not guaranteed to be called, but if so this might speed up computation.
Parameters
[in]state_dimExpected dimension of the state vector

Reimplemented in corbo::IntegratorAdaptiveStepSize, corbo::IntegratorExplicitRungeKutta7, corbo::IntegratorExplicitRungeKutta6, corbo::IntegratorExplicitRungeKutta5, corbo::IntegratorExplicitRungeKutta4, corbo::IntegratorExplicitRungeKutta3, and corbo::IntegratorExplicitRungeKutta2.

Definition at line 226 of file integrator_interface.h.

◆ interpolate()

bool corbo::NumericalIntegratorExplicitInterface::interpolate ( const Eigen::Ref< const Eigen::VectorXd > &  x1,
const Eigen::Ref< const Eigen::VectorXd > &  u1,
const Eigen::Ref< const Eigen::VectorXd > &  ,
const Eigen::Ref< const Eigen::VectorXd > &  ,
double  dt,
const SystemDynamicsInterface system,
const Range range,
std::vector< Eigen::VectorXd > &  states,
std::vector< Eigen::VectorXd > &  controls 
)
inlineoverridevirtual

Implements corbo::DynamicsEvalInterface.

Definition at line 275 of file integrator_interface.h.

◆ solveIVP() [1/2]

virtual void corbo::NumericalIntegratorExplicitInterface::solveIVP ( const Eigen::VectorXd &  x1,
double  dt,
const UnaryFunction fun,
Eigen::Ref< Eigen::VectorXd >  x2 
)
pure virtual

Solution of the initial value problem.

\[ x(t=\Delta T) = \int_{t=0}^{t=\Delta T} f(x(t)) dt \]

with $ x(t=0) = x_1 $.

Parameters
[in]x1Initial state vector [SystemDynamicsInterface::getStateDimension() x 1]
[in]u1Constant control input vector [SystemDynamicsInterface::getInputDimension() x 1]
[in]dtTime interval length
[in]systemSystem dynamics object
[out]x2Resulting state vector [SystemDynamicsInterface::getStateDimension() x 1] (must be preallocated)

Implemented in corbo::IntegratorMultiStageScaled, and corbo::IntegratorMultiStageFixedStep.

◆ solveIVP() [2/2]

virtual void corbo::NumericalIntegratorExplicitInterface::solveIVP ( const StateVector x1,
const InputVector u1,
double  dt,
const SystemDynamicsInterface system,
Eigen::Ref< Eigen::VectorXd >  x2 
)
pure virtual

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


control_box_rst
Author(s): Christoph Rösmann
autogenerated on Wed Mar 2 2022 00:07:21