# Class LagrangianLinearDiagonalDS#

class LagrangianLinearDiagonalDS : public LagrangianDS#

Lagrangian Linear Systems with time invariant and diagonal coefficients - $$M\dot v + Cv + Kq = F_{ext}(t,z) + p$$.

where

• $$q \in R^{ndof}$$ is the set of the generalized coordinates,

• $$\dot q = v \in R^{ndof}$$ the velocity, i. e. the time derivative of the generalized coordinates.

• $$\ddot q \in R^{ndof}$$ the acceleration, i. e. the second time derivative of the generalized coordinates.

• $$p \in R^{ndof}$$ the forces due to the nonsmooth interaction. In the particular case of a nonsmooth evolution, the variable p contains the impulse and not the force.

• $$M \in R^{ndof \times ndof}$$ is the mass matrix (access : mass() method).

• $$K \in R^{ndof \times ndof}$$ is the stiffness matrix (access : stiffness() method).

• $$C \in R^{ndof \times ndof}$$ is the viscosity matrix (access : damping() method).

• $$z \in R^{zSize}$$ is a vector of arbitrary algebraic variables, some sort of discret state.

Remind that the specificity of this class is that all matrices are diagonal (and hence only diagonal coefficients are saved in memory).

For details about dynamical systems in Siconos, please read user’s guide.

Public Functions

LagrangianLinearDiagonalDS(SP::SiconosVector q0, SP::SiconosVector v0, SP::SiconosVector stiffness, SP::SiconosVector damping, SP::SiconosVector mass)#

constructor from initial state and all operators.

Parameters:
• q0 – initial coordinates

• v0 – initial velocity

• stiffness – diagonal of the stiffness matrix

• damping – diagonal of the damping matrix

• mass – diagonal of the mass matrix

LagrangianLinearDiagonalDS(SP::SiconosVector q0, SP::SiconosVector v0, SP::SiconosVector stiffness, SP::SiconosVector damping)#

constructor for complete system with identity mass matrix

Parameters:
• q0 – initial coordinates

• v0 – initial velocity

• stiffness – diagonal of the stiffness matrix

• damping – diagonal of the damping matrix

LagrangianLinearDiagonalDS(SP::SiconosVector q0, SP::SiconosVector v0, SP::SiconosVector stiffness)#

constructor for undamped system and identity mass matrix

Parameters:
• q0 – initial coordinates

• v0 – initial velocity

• stiffness – diagonal of the stiffness matrix

inline const SiconosVector get_stiffness() const#

get a copy of the stiffness matrix (diagonal only)

Returns:

SiconosVector

inline SP::SiconosVector stiffness() const#

get stiffness matrix (diagonal only, pointer link)

Returns:

pointer on a SiconosVector

inline const SiconosVector get_damping() const#

get a copy of the damping matrix (diagonal only)

Returns:

SiconosVector

inline SP::SiconosVector damping() const#

get damping matrix (diagonal only, pointer link)

Returns:

pointer on a SiconosVector

virtual void initRhs(double t) override#

allocate (if needed) and compute rhs and its jacobian.

Parameters:

t – time of initialization

virtual void computeForces(double time, SP::SiconosVector q, SP::SiconosVector velocity) override#

Compute $$F(v,q,t,z)$$.

Parameters:
• time – the current time

• q – generalized coordinates

• velocity – time derivative of the generalized coordinates

inline virtual bool isLinear() override#
Returns:

true if the Dynamical system is linear.

virtual void display(bool brief = true) const override#

print the data of the dynamical system on the standard output