6#include <proxsuite-nlp/modelling/spaces/cartesian-product.hpp>
15template <
typename _Scalar>
19 using Base = ExplicitDynamicsModelTpl<Scalar>;
22 using BaseData = ExplicitDynamicsDataTpl<Scalar>;
27 :
Base(get_product_space(*f, *g), f->
nu + g->
nu),
f_(f),
g_(g) {
31 void forward(
const ConstVectorRef &x,
const ConstVectorRef &u,
34 void dForward(
const ConstVectorRef &x,
const ConstVectorRef &u,
37 shared_ptr<DynamicsDataTpl<Scalar>>
createData()
const override {
38 return std::make_shared<Data>(*
this);
44 static auto get_product_space(
Base const &f,
Base const &g);
52template <
typename Scalar>
53auto directSum(shared_ptr<ExplicitDynamicsModelTpl<Scalar>>
const &m1,
54 shared_ptr<ExplicitDynamicsModelTpl<Scalar>>
const &m2) {
55 return std::make_shared<DirectSumExplicitDynamicsTpl<Scalar>>(m1, m2);
60#include "aligator/modelling/explicit-dynamics-direct-sum.hxx"
62#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
63#include "./explicit-dynamics-direct-sum.txx"
auto directSum(shared_ptr< CostAbstractTpl< Scalar > > const &c1, shared_ptr< CostAbstractTpl< Scalar > > const &c2)
DirectSumExplicitDynamicsTpl(shared_ptr< Base > f, shared_ptr< Base > g)
ManifoldAbstractTpl< Scalar > Manifold
ExplicitDynamicsModelTpl< Scalar > Base
void forward(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const override
Evaluate the forward discrete dynamics.
proxsuite::nlp::CartesianProductTpl< Scalar > CartesianProduct
void dForward(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const override
Compute the Jacobians of the forward dynamics.
shared_ptr< DynamicsDataTpl< Scalar > > createData() const override
Instantiate a Data object.
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
ManifoldPtr space_next_
State space for the output of this dynamics model.
Explicit forward dynamics model .
const int nu
Control dimension.