Program listing for file kernel/src/simulationTools/MLCPProjectOnConstraints.hpp#
Return to documentation for this file
1#ifndef MLCPProjectOnConstraints_H
2#define MLCPProjectOnConstraints_H
3
4#include "MLCP.hpp"
5#include "OSNSMatrixProjectOnConstraints.hpp"
6
7class MLCPProjectOnConstraints : public MLCP {
8protected:
9 ACCEPT_SERIALIZATION(MLCPProjectOnConstraints);
10
11
12 double _alpha;
13
14
15 bool _doProjOnEquality;
16
17 bool _useMassNormalization;
18
19public:
20
21 void computeOptions(SP::Interaction inter1, SP::Interaction inter2) override;
22
23
24 MLCPProjectOnConstraints(int numericsSolverId = SICONOS_MLCP_ENUM,
25 double alpha = 1.0);
26
27
28 MLCPProjectOnConstraints(SP::SolverOptions options, double alpha = 1.0);
29
30
31 ~MLCPProjectOnConstraints(){};
32
33
34 double alpha() { return _alpha; };
35
36
37 void setAlpha(double newval) { _alpha = newval; };
38
39 inline void setDoProjOnEquality(bool v) { _doProjOnEquality = v; }
40
41
42 void displayBlocks(SP::InteractionsGraph indexSet) override;
43
44
45 void display() const override;
46
47 void initOSNSMatrix() override;
48
49
50 void updateInteractionBlocks() override;
51
52
53 virtual void updateInteractionBlocksOLD();
54
55
56 void computeDiagonalInteractionBlock(
57 const InteractionsGraph::VDescriptor &vd) override;
58
59
60 void
61 computeInteractionBlock(const InteractionsGraph::EDescriptor &vd) override;
62
63
64 void computeqBlock(InteractionsGraph::VDescriptor &vd,
65 unsigned int pos) override;
66
67
68 void computeq(double time) override;
69
70
71 void postCompute() override;
72
73
74 virtual void postComputeLagrangianR(SP::Interaction inter, unsigned int pos);
75
76
77 virtual void postComputeNewtonEulerR(SP::Interaction inter, unsigned int pos);
78
79 ACCEPT_STD_VISITORS();
80};
81
82#endif