# 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).

public constructors

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

Attributes access

const SiconosVector get_stiffness() const

get a copy of the stiffness matrix (diagonal only)

Return

SP::SiconosVector stiffness() const

get stiffness matrix (diagonal only, pointer link)

Return

pointer on a SiconosVector

const SiconosVector get_damping() const

get a copy of the damping matrix (diagonal only)

Return

SP::SiconosVector damping() const

get damping matrix (diagonal only, pointer link)

Return

pointer on a SiconosVector

Right-hand side computation

void initRhs(double t)

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

Parameters
• t: time of initialization

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

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

Parameters
• time: the current time

• q: generalized coordinates

• velocity: time derivative of the generalized coordinates

Miscellaneous public methods

bool isLinear()

Return

true if the Dynamical system is linear.

void display(bool brief = true) const

print the data of the dynamical system on the standard output