File kernel/src/simulationTools/MLCPProjectOnConstraints.hpp#

Go to the source code of this file

Linear Complementarity Problem formulation and solving.

class MLCPProjectOnConstraints : public MLCP
#include <MLCPProjectOnConstraints.hpp>

Formalization and Resolution of a Mixed Linear Complementarity Problem (MLCP)

This class is devoted to the formalization and the resolution of the Mixed Linear Complementarity Problem (MLCP) for the specific problem of the projection onto the constraints in Mechanics

Public Functions

virtual void computeOptions(SP::Interaction inter1, SP::Interaction inter2) override

compute the number of inequality and equality for a given tuple of Interactions update the global number of equality(_n) and inequality (_m) set up _numerics_problem parameters (blocksRows and blocksIsComp )

Parameters:
  • inter1 – first interaction considered

  • inter2 – second interaction

MLCPProjectOnConstraints(int numericsSolverId = SICONOS_MLCP_ENUM, double alpha = 1.0)

constructor from data

Parameters:
  • numericsSolverId – solver id

  • alpha – alpha parameter value

MLCPProjectOnConstraints(SP::SolverOptions options, double alpha = 1.0)

constructor from a pre-defined solver options set.

Parameters:
  • options – the options set,

  • alpha – alpha parameter value

inline ~MLCPProjectOnConstraints()

destructor

inline double alpha()
Returns:

alpha value

inline void setAlpha(double newval)

setter for alpha

Parameters:

newval[in] new value for alpha parameter

inline void setDoProjOnEquality(bool v)#
virtual void displayBlocks(SP::InteractionsGraph indexSet) override

Display the set of blocks for a given indexSet.

Parameters:

indexSet – the graph of interactions

virtual void display() const override

print the data to the screen

virtual void initOSNSMatrix() override

initialize the _M matrix

virtual void updateInteractionBlocks() override

compute interactionBlocks if necessary (this depends on the type of OSNS, on the indexSets …)

virtual void updateInteractionBlocksOLD()

compute interactionBlocks if necessary (this depends on the type of OSNS, on the indexSets …)

virtual void computeDiagonalInteractionBlock(const InteractionsGraph::VDescriptor &vd) override

compute diagonal Interaction block

Parameters:

vd – a vertex (interaction) descriptor

virtual void computeInteractionBlock(const InteractionsGraph::EDescriptor &vd) override

compute diagonal Interaction block

Parameters:

vd – a vertex (interaction) descriptor

virtual void computeqBlock(InteractionsGraph::VDescriptor &vd, unsigned int pos) override

To compute a part of the “q” vector of the OSNS.

Parameters:
  • vd – vertex (interaction) which corresponds to the considered block

  • pos – the position of the first element of yOut to be set

virtual void computeq(double time) override

compute vector q

Parameters:

time – the current time

virtual void postCompute() override

post-treatment for MLCPProjectOnConstraints

virtual void postComputeLagrangianR(SP::Interaction inter, unsigned int pos)

post-treatment for MLCPProjectOnConstraints for LagrangianR

Parameters:
  • inter – the considered interaction

  • pos – interaction position in the global vector

virtual void postComputeNewtonEulerR(SP::Interaction inter, unsigned int pos)

post-treatment for MLCPProjectOnConstraints for NewtonEulerR

Parameters:
  • inter – the considered interaction

  • pos – interaction position in the global vector

ACCEPT_STD_VISITORS()#

Protected Functions

ACCEPT_SERIALIZATION(MLCPProjectOnConstraints)#

Protected Attributes

double _alpha#

??

bool _doProjOnEquality#

disabled or enabled projection On Equality (or Unilateral) for unilateral constraints

bool _useMassNormalization#