Program listing for file kernel/src/simulationTools/MLCPProjectOnConstraints.hpp

Program listing for file kernel/src/simulationTools/MLCPProjectOnConstraints.hpp#

 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