13#ifndef SANDALS_EXPLICIT_SYSTEM_HH
14#define SANDALS_EXPLICIT_SYSTEM_HH
40 template <
typename Real, Integer N, Integer M = 0>
86 return x_dot - this->
f(x, t);
107 return -this->
Jf_x(x, t);
127 return MatrixJF::Identity();
162 return -this->
f(x, -t);
174 return -this->
Jf_x(x, -t);
187 return -x_dot - this->
f(x, -t);
202 return -this->
Jf_x(x, -t);
217 return -MatrixJF::Identity();
241 template <
typename Real, Integer N, Integer M = 0>
340 return this->
m_f(x, t);
358 return this->
m_Jf_x(x, t);
369 return this->
m_h(x, t);
387 return this->
m_Jh_x(x, t);
#define SANDALS_BASIC_CONSTANTS(Real)
Definition Sandals.hh:70
MatrixJF Jf_x_reverse(VectorF const &x, Real const t) const
Definition Explicit.hh:172
VectorF F(VectorF const &x, VectorF const &x_dot, Real const t) const override
Definition Explicit.hh:84
std::shared_ptr< Explicit< Real, N, M > > Pointer
Definition Explicit.hh:46
Explicit(std::string t_name)
Definition Explicit.hh:69
Explicit(Type t_type, std::string t_name)
Definition Explicit.hh:57
MatrixJF JF_x_dot_reverse(VectorF const &, VectorF const &, Real) const
Definition Explicit.hh:215
MatrixJF JF_x(VectorF const &x, VectorF const &, Real const t) const override
Definition Explicit.hh:105
MatrixJF JF_x_dot(VectorF const &, VectorF const &, Real) const override
Definition Explicit.hh:125
virtual VectorF f(VectorF const &x, Real const t) const =0
typename Implicit< Real, N, M >::Type Type
Definition Explicit.hh:49
MatrixJF JF_x_reverse(VectorF const &x, VectorF const &, Real const t) const
Definition Explicit.hh:200
Explicit()
Definition Explicit.hh:63
virtual MatrixJF Jf_x(VectorF const &x, Real const t) const =0
typename Implicit< Real, N, M >::MatrixJF MatrixJF
Definition Explicit.hh:48
VectorF f_reverse(VectorF const &x, Real const t) const
Definition Explicit.hh:160
VectorF F_reverse(VectorF const &x, VectorF const &x_dot, Real const t) const
Definition Explicit.hh:185
typename Implicit< Real, N, M >::VectorF VectorF
Definition Explicit.hh:47
static const FunctionH DefaultH
Definition Explicit.hh:258
std::function< MatrixJF(VectorF const &, Real const)> FunctionJF
Definition Explicit.hh:253
typename Explicit< Real, N, M >::MatrixJF MatrixJF
Definition Explicit.hh:249
static const FunctionID DefaultID
Definition Explicit.hh:260
std::function< VectorH(VectorF const &, Real const)> FunctionH
Definition Explicit.hh:254
FunctionH & h()
Definition Explicit.hh:318
std::shared_ptr< ExplicitWrapper< Real, N, M > > Pointer
Definition Explicit.hh:247
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:292
typename Explicit< Real, N, M >::MatrixJH MatrixJH
Definition Explicit.hh:251
FunctionJF & Jf_x()
Definition Explicit.hh:312
VectorF f(VectorF const &x, Real const t) const override
Definition Explicit.hh:338
FunctionF & f()
Definition Explicit.hh:306
typename Explicit< Real, N, M >::VectorH VectorH
Definition Explicit.hh:250
MatrixJF Jf_x(VectorF const &x, Real const t) const override
Definition Explicit.hh:356
FunctionID m_in_domain
Definition Explicit.hh:267
FunctionJF m_Jf_x
Definition Explicit.hh:264
typename Explicit< Real, N, M >::VectorF VectorF
Definition Explicit.hh:248
std::function< bool(VectorF const &, Real const)> FunctionID
Definition Explicit.hh:256
bool in_domain(VectorF const &x, Real const t) const override
Definition Explicit.hh:397
VectorH h(VectorF const &x, Real const t) const override
Definition Explicit.hh:367
FunctionF m_f
Definition Explicit.hh:263
FunctionJH & Jh_x()
Definition Explicit.hh:324
FunctionH m_h
Definition Explicit.hh:265
FunctionJH m_Jh_x
Definition Explicit.hh:266
MatrixJH Jh_x(VectorF const &x, Real const t) const override
Definition Explicit.hh:385
static const FunctionJH DefaultJH
Definition Explicit.hh:259
std::function< MatrixJH(VectorF const &, Real const)> FunctionJH
Definition Explicit.hh:255
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:278
FunctionID & in_domain()
Definition Explicit.hh:330
std::function< VectorF(VectorF const &, Real const)> FunctionF
Definition Explicit.hh:252
~ExplicitWrapper()
Definition Explicit.hh:300
Implicit(Type t_type, std::string t_name)
Definition Implicit.hh:63
The namespace for the Sandals library.
Definition Sandals.hh:89