Class LCP#

Defined in Program listing for file kernel/src/simulationTools/LCP.hpp

class LCP : public LinearOSNS#

Formalization and Resolution of a Linear Complementarity Problem (LCP)

This class is devoted to the formalization and the resolution of the Linear Complementarity Problem (LCP) defined by :

\[\begin{split} w = q + M z \\ w \geq 0, z \geq 0, z^{T} w =0 \end{split}\]

where

  • \( w \in R^{n} \) and \( z \in R^{n} \) are the unknowns,

  • \( M \in R^{n \times n } \) and \( q \in R^{n} \)

The LCP main components are:

  • a problem (variables M,q and size of the problem), which directly corresponds to the LinearComplementarityProblem structure of Numerics

  • the unknowns z and w

For details regarding the available options, see Nonsmooth problems formulations and available solvers in users’ guide.

Public Functions

LCP(int numericsSolverId = SICONOS_LCP_LEMKE)#

constructor from numerics solver id

Parameters:

numericsSolverId – id of numerics solver, default = SICONOS_LCP_LEMKE

LCP(SP::SolverOptions options)#

constructor from a pre-defined solver options set

Parameters:

options – the options set

~LCP() noexcept = default#

destructor

int solve()#

Call numerics solver.

Returns:

int information about the solver convergence (output from numerics driver, linearComplementarity_driver, check numerics doc. for details).

virtual int compute(double time) override#

Compute the unknowns z and w and update the corresponding Interactions (y and lambda )

Parameters:

time – : current time

Returns:

int, information about the solver convergence (output from numerics driver, linearComplementarity_driver, check numerics doc. for details).