Program listing for file kernel/src/modelingTools/Lagrangian2d2DR.hpp#
Return to documentation for this file
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