8#include <proxsuite-nlp/manifold-base.hpp>
9#include <proxsuite-nlp/third-party/polymorphic_cxx14.hpp>
19template <
typename _Scalar>
struct ContinuousDynamicsAbstractTpl {
22 using Manifold = proxsuite::nlp::ManifoldAbstractTpl<Scalar>;
32 inline int nu()
const {
return nu_; }
46 virtual void evaluate(
const ConstVectorRef &x,
const ConstVectorRef &u,
47 const ConstVectorRef &xdot,
Data &data)
const = 0;
55 const ConstVectorRef &u,
56 const ConstVectorRef &xdot,
57 Data &data)
const = 0;
65 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
89#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
90#include "aligator/modelling/dynamics/continuous-dynamics-abstract.txx"
virtual shared_ptr< Data > createData() const
Create a data holder instance.
xyz::polymorphic< Manifold > ManifoldPtr
ContinuousDynamicsAbstractTpl(ManifoldPtr space, const int nu)
const Manifold & space() const
Return a reference to the state space.
virtual void computeJacobians(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &xdot, Data &data) const =0
Differentiate the vector field.
const int nu_
Control space dimension.
virtual void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &xdot, Data &data) const =0
Evaluate the vector field at a point .
ManifoldPtr space_
State space.
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
proxsuite::nlp::ManifoldAbstractTpl< Scalar > Manifold
virtual ~ContinuousDynamicsAbstractTpl()=default
Data struct for ContinuousDynamicsAbstractTpl.
VectorXs xdot_
Time derivative , output of ODE model.
virtual ~ContinuousDynamicsDataTpl()=default
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
MatrixXs Jxdot_
Derivative .
VectorXs value_
Residual value .
ContinuousDynamicsDataTpl(const int ndx, const int nu)