13#ifndef SANDALS_EXPLICIT_SYSTEM_HH
14#define SANDALS_EXPLICIT_SYSTEM_HH
40 template <
typename Real, Integer N, Integer M = 0>
44 using Pointer = std::shared_ptr<Explicit<Real, N, M>>;
84 return x_dot - this->
f(x, t);
105 return -this->
Jf_x(x, t);
125 return MatrixJF::Identity();
160 return -this->
f(x, -t);
172 return -this->
Jf_x(x, -t);
185 return -x_dot - this->
f(x, -t);
200 return -this->
Jf_x(x, -t);
215 return -MatrixJF::Identity();
239 template <
typename Real, Integer N, Integer M = 0>
243 using Pointer = std::shared_ptr<ExplicitWrapper<Real, N, M>>;
336 return this->
m_f(x, t);
354 return this->
m_Jf_x(x, t);
365 return this->
m_h(x, t);
383 return this->
m_Jh_x(x, t);
MatrixJF Jf_x_reverse(VectorF const &x, Real const t) const
Definition Explicit.hh:170
VectorF F(VectorF const &x, VectorF const &x_dot, Real const t) const override
Definition Explicit.hh:82
std::shared_ptr< Explicit< Real, N, M > > Pointer
Definition Explicit.hh:44
Explicit(std::string t_name)
Definition Explicit.hh:67
Explicit(Type t_type, std::string t_name)
Definition Explicit.hh:55
MatrixJF JF_x_dot_reverse(VectorF const &, VectorF const &, Real) const
Definition Explicit.hh:213
MatrixJF JF_x(VectorF const &x, VectorF const &, Real const t) const override
Definition Explicit.hh:103
MatrixJF JF_x_dot(VectorF const &, VectorF const &, Real) const override
Definition Explicit.hh:123
virtual VectorF f(VectorF const &x, Real const t) const =0
typename Implicit< Real, N, M >::Type Type
Definition Explicit.hh:47
MatrixJF JF_x_reverse(VectorF const &x, VectorF const &, Real const t) const
Definition Explicit.hh:198
Explicit()
Definition Explicit.hh:61
virtual MatrixJF Jf_x(VectorF const &x, Real const t) const =0
typename Implicit< Real, N, M >::MatrixJF MatrixJF
Definition Explicit.hh:46
VectorF f_reverse(VectorF const &x, Real const t) const
Definition Explicit.hh:158
VectorF F_reverse(VectorF const &x, VectorF const &x_dot, Real const t) const
Definition Explicit.hh:183
typename Implicit< Real, N, M >::VectorF VectorF
Definition Explicit.hh:45
static const FunctionH DefaultH
Definition Explicit.hh:254
std::function< MatrixJF(VectorF const &, Real const)> FunctionJF
Definition Explicit.hh:249
static const FunctionID DefaultID
Definition Explicit.hh:256
std::function< VectorH(VectorF const &, Real const)> FunctionH
Definition Explicit.hh:250
FunctionH & h()
Definition Explicit.hh:314
std::shared_ptr< ExplicitWrapper< Real, N, M > > Pointer
Definition Explicit.hh:243
ExplicitWrapper(std::string t_name, FunctionF t_f, FunctionJF t_Jf_x, FunctionH t_h=DefaultH, FunctionJH t_Jh_x=DefaultJH, FunctionID t_in_domain=DefaultID)
Definition Explicit.hh:288
FunctionJF & Jf_x()
Definition Explicit.hh:308
VectorF f(VectorF const &x, Real const t) const override
Definition Explicit.hh:334
FunctionF & f()
Definition Explicit.hh:302
MatrixJF Jf_x(VectorF const &x, Real const t) const override
Definition Explicit.hh:352
FunctionID m_in_domain
Definition Explicit.hh:263
FunctionJF m_Jf_x
Definition Explicit.hh:260
std::function< bool(VectorF const &, Real const)> FunctionID
Definition Explicit.hh:252
bool in_domain(VectorF const &x, Real const t) const override
Definition Explicit.hh:393
VectorH h(VectorF const &x, Real const t) const override
Definition Explicit.hh:363
FunctionF m_f
Definition Explicit.hh:259
FunctionJH & Jh_x()
Definition Explicit.hh:320
FunctionH m_h
Definition Explicit.hh:261
FunctionJH m_Jh_x
Definition Explicit.hh:262
MatrixJH Jh_x(VectorF const &x, Real const t) const override
Definition Explicit.hh:381
static const FunctionJH DefaultJH
Definition Explicit.hh:255
std::function< MatrixJH(VectorF const &, Real const)> FunctionJH
Definition Explicit.hh:251
ExplicitWrapper(FunctionF t_f, FunctionJF t_Jf_x, FunctionH t_h=DefaultH, FunctionJH t_Jh_x=DefaultJH, FunctionID t_in_domain=DefaultID)
Definition Explicit.hh:274
FunctionID & in_domain()
Definition Explicit.hh:326
std::function< VectorF(VectorF const &, Real const)> FunctionF
Definition Explicit.hh:248
~ExplicitWrapper()
Definition Explicit.hh:296
Eigen::Matrix< Real, N, N > MatrixJF
Definition Implicit.hh:47
Implicit(Type t_type, std::string t_name)
Definition Implicit.hh:61
Eigen::Vector< Real, N > VectorF
Definition Implicit.hh:46
Eigen::Vector< Real, M > VectorH
Definition Implicit.hh:48
enum class Type :Integer {IMPLICIT=0, EXPLICIT=1, SEMIEXPLICIT=1} Type
Definition Implicit.hh:44
Eigen::Matrix< Real, M, N > MatrixJH
Definition Implicit.hh:49
The namespace for the Sandals library.
Definition Sandals.hh:89