Class DynamicalSystem¶
Defined in Program listing for file kernel/src/modelingTools/DynamicalSystem.hpp
-
class DynamicalSystem¶
Abstract interface to Dynamical Systems.
This class is used to describe dynamical systems of the form :
\( g(\dot x, x, t, z) = 0 \)
where
\( x \in R^{n} \) is the state.
\( z \in R^{zSize} \) is a vector of arbitrary algebraic variables, some sort of discret state. For example, z may be used to set some perturbation parameters, to control the system (z set by actuators) and so on.
\( g : R^{n} \times R \to R^{n} \) .
By default, the DynamicalSystem is considered to be an Initial Value Problem (IVP) and the initial conditions are given by
\( x(t_0)=x_0 \)
Under some specific conditions, the system can be written as:
\( \dot x = rhs(x, t, z) \)
In that case, \( \nabla_{\dot x} g \) must be invertible.
Subclassed by FirstOrderNonLinearDS, SecondOrderDS
Public Types
-
enum DSWorkVectorId¶
List of indices used to save tmp work vectors The last value is the size of the present list, so you HAVE to leave it at the end position.
Values:
-
enumerator local_buffer¶
-
enumerator freeresidu¶
-
enumerator free¶
-
enumerator acce_memory¶
-
enumerator acce_like¶
-
enumerator sizeWorkV¶
-
enumerator local_buffer¶
Public Functions
-
inline virtual ~DynamicalSystem()¶
destructor
-
virtual void initRhs(double time) = 0¶
allocate (if needed) and compute rhs and its jacobian.
- Parameters
time – of initialization
-
virtual void initializeNonSmoothInput(unsigned int level) = 0¶
set nonsmooth input to zero
- Parameters
level – input-level to be initialized.
-
void update(double time)¶
compute all component of the dynamical system, for the current state.
- Parameters
time – current time (the one used to update ds component)
-
virtual void computeRhs(double time) = 0¶
update right-hand side for the current state
- Parameters
time – of interest
-
virtual void computeJacobianRhsx(double time) = 0¶
update \( \nabla_x rhs \) for the current state
- Parameters
time – of interest
-
virtual void resetAllNonSmoothParts() = 0¶
reset nonsmooth part of the rhs, for all ‘levels’
-
virtual void resetNonSmoothPart(unsigned int level) = 0¶
set nonsmooth part of the rhs to zero for a given level
- Parameters
level –
-
inline size_t number() const¶
returns the id of the dynamical system
-
inline size_t setNumber(size_t new_number)¶
set the id of the DynamicalSystem
- Returns
the previous value of number
-
inline unsigned int n() const¶
returns the size of the vector state x
-
inline virtual unsigned int dimension() const¶
returns the dimension of the system (depends on system type, e.g.
n for first order, ndof for Lagrangian).
-
inline const SiconosVector getX0() const¶
get a copy of the initial state vector
-
void setX0(const SiconosVector &newValue)¶
set initial state (copy)
- Parameters
newValue – input vector to copy
-
void setX0Ptr(SP::SiconosVector newPtr)¶
set initial state (pointer link)
- Parameters
newPtr – vector (pointer) to set x0
-
inline SP::SiconosVector x() const¶
returns a pointer to the state vector \( x \)
- Returns
SP::SiconosVector
-
inline const SiconosVector &getx() const¶
get a copy of the current state vector \( x \)
- Returns
-
void setX(const SiconosVector &newValue)¶
set content of current state vector \( x \)
- Parameters
newValue – SiconosVector
-
void setXPtr(SP::SiconosVector newPtr)¶
set state vector \( x \) (pointer link)
- Parameters
newPtr – SP::SiconosVector
-
inline SP::SiconosVector r() const¶
returns a pointer to r vector (input due to nonsmooth behavior)
- Returns
SP::SiconosVector
-
inline const SiconosVector getR() const¶
get a copy of r vector (input due to nonsmooth behavior)
- Returns
-
void setR(const SiconosVector &newValue)¶
set r vector (input due to nonsmooth behavior) content (copy)
- Parameters
newValue – SiconosVector
-
void setRPtr(SP::SiconosVector newPtr)¶
set r vector (input due to nonsmooth behavior) (pointer link)
- Parameters
newPtr – SP::SiconosVector newPtr
-
inline SP::SiconosVector rhs() const¶
returns a pointer to the right-hand side vector, (i.e.
\( \dot x \))
- Returns
SP::SiconosVector
-
inline SiconosVector &getRhs() const¶
get a copy of the right-hand side vector, (i.e.
\( \dot x \))
- Returns
-
virtual void setRhs(const SiconosVector &newValue)¶
set the value of the right-hand side, \( \dot x \)
- Parameters
newValue – SiconosVector
-
virtual void setRhsPtr(SP::SiconosVector newPtr)¶
set right-hand side, \( \dot x \) (pointer link)
- Parameters
newPtr – SP::SiconosVector
-
inline SP::SiconosMatrix jacobianRhsx() const¶
returns a pointer to \( \nabla_x rhs()\)
- Returns
SP::SiconosMatrix
-
void setJacobianRhsx(const SiconosMatrix &newValue)¶
set the value of \( \nabla_x rhs() \)
- Parameters
newValue – SiconosMatrix
-
void setJacobianRhsxPtr(SP::SiconosMatrix newPtr)¶
set \( \nabla_x rhs() \), pointer link
- Parameters
newPtr – SP::SiconosMatrix
-
inline SP::SiconosVector z() const¶
returns a pointer to \( z \), the vector of algebraic parameters.
- Returns
SP::SiconosVector
-
inline const SiconosVector &getz() const¶
get a copy of \( z \), the vector of algebraic parameters.
- Returns
-
void setz(const SiconosVector &newValue)¶
set the value of \( z \) (copy)
- Parameters
newValue – SiconosVector
-
void setzPtr(SP::SiconosVector newPtr)¶
set \( z \) (pointer link)
- Parameters
newPtr – SP::SiconosVector
-
inline SiconosMemory &xMemory()¶
get all the values of the state vector x stored in a SiconosMemory object (not const due to LinearSMC::actuate)
- Returns
a reference to the SiconosMemory object
-
inline const SiconosMemory &xMemory() const¶
get all the values of the state vector x stored in a SiconosMemory object
- Returns
a const reference to the SiconosMemory object
-
inline unsigned int stepsInMemory() const¶
returns the number of step saved in memory for state vector
- Returns
int
-
inline void setStepsInMemory(unsigned int steps)¶
set number of steps to be saved
- Parameters
steps –
-
virtual void initMemory(unsigned int steps)¶
initialize the SiconosMemory objects: reserve memory for i vectors in memory and reset all to zero.
- Parameters
steps – the size of the SiconosMemory (i)
-
virtual void swapInMemory() = 0¶
push the current values of x and r in memory (index 0 of memory is the last inserted vector) xMemory and rMemory,
-
virtual void updatePlugins(double time) = 0¶
call all plugged functions for the current state
- Parameters
time – the current time
-
inline virtual bool isLinear()¶
- Returns
true if the system is linear
-
virtual void display(bool brief = true) const = 0¶
print the data of the dynamical system on the standard output
Public Static Functions
-
static inline size_t resetCount(size_t new_count = 0)¶
reset the global DynamicSystem counter (for ids)
- Returns
the previous value of count