Program listing for file kernel/src/modelingTools/Lagrangian2d2DR.hpp#

 1#ifndef Lagrangian2d2DR_H
 2#define Lagrangian2d2DR_H
 3
 4#include "SiconosFwd.hpp"
 5#include "LagrangianScleronomousR.hpp"
 6
 7using namespace RELATION;
 8
 9
10class Lagrangian2d2DR : public LagrangianScleronomousR {
11protected:
12  ACCEPT_SERIALIZATION(Lagrangian2d2DR);
13
14
15  SP::SiconosVector _Pc1;
16  SP::SiconosVector _Pc2;
17
18
19  SP::SiconosVector _Nc;
20
21
22  void setpc1(SP::SiconosVector npc) { _Pc1 = npc; };
23
24
25  void setpc2(SP::SiconosVector npc) { _Pc2 = npc; };
26
27
28  void setnc(SP::SiconosVector nnc) { _Nc = nnc; };
29
30public:
31
32  bool _isOnContact = false;
33
34
35  Lagrangian2d2DR()
36      : LagrangianScleronomousR(), _Pc1(new SiconosVector(2)),
37        _Pc2(new SiconosVector(2)), _Nc(new SiconosVector(2))
38  {
39
40  }
41
42
43  virtual ~Lagrangian2d2DR() noexcept = default;
44
45  void initialize(Interaction &inter) override;
46
47
48  void computeh(const BlockVector &q, BlockVector &z,
49                SiconosVector &y) override;
50
51
52  void computeJachq(const BlockVector &q, BlockVector &z) override;
53
54
55
56
57
58  double distance() const;
59
60  inline SP::SiconosVector pc1() const { return _Pc1; }
61  inline SP::SiconosVector pc2() const { return _Pc2; }
62  inline SP::SiconosVector nc() const { return _Nc; }
63  void display() const override;
64
65  ACCEPT_STD_VISITORS();
66};
67TYPEDEF_SPTR(Lagrangian2d2DR)
68#endif