Program listing for file kernel/src/modelingTools/LagrangianScleronomousR.hpp#
Return to documentation for this file
1#ifndef LagrangianScleronomousR_H
2#define LagrangianScleronomousR_H
3
4#include "LagrangianR.hpp"
5#include "SimpleMatrixFriends.hpp"
6
7class LagrangianScleronomousR : public LagrangianR {
8
9protected:
10
11 ACCEPT_SERIALIZATION(LagrangianScleronomousR);
12
13
14
15
16 SP::PluggedObject _plugindotjacqh{nullptr};
17
18
19 SP::SiconosVector _dotjacqhXqdot{nullptr};
20
21
22 void _zeroPlugin() override;
23
24
25 LagrangianScleronomousR() : LagrangianR(RELATION::ScleronomousR) {
26 _zeroPlugin();
27 }
28
29public:
30
31 LagrangianScleronomousR(const std::string &pluginh,
32 const std::string &pluginJacobianhq);
33
34
35 LagrangianScleronomousR(const std::string &pluginh,
36 const std::string &pluginJacobianhq,
37 const std::string &pluginDotJacobianhq);
38
39
40 virtual ~LagrangianScleronomousR() noexcept = default;
41
42 void initialize(Interaction &inter) override;
43
44
45 void checkSize(Interaction &inter) override;
46
47
48 inline SP::SiconosVector dotjacqhXqdot() { return _dotjacqhXqdot; };
49
50
51 virtual void computeh(const BlockVector &q, BlockVector &z, SiconosVector &y);
52
53
54 virtual void computeJachq(const BlockVector &q, BlockVector &z);
55
56
57 virtual void computeDotJachq(const BlockVector &q, BlockVector &z,
58 const BlockVector &qDot);
59
60
61 void computedotjacqhXqdot(double time, Interaction &inter,
62 VectorOfBlockVectors &DSlink);
63
64
65 void computeJach(double time, Interaction &inter) override;
66
67
68 void computeJacg(double time, Interaction &inter) override {}
69
70
71 void computeOutput(double time, Interaction &inter,
72 unsigned int derivativeNumber = 0) override;
73
74
75 void computeInput(double time, Interaction &inter,
76 unsigned int level = 0) override;
77
78 ACCEPT_STD_VISITORS();
79};
80
81TYPEDEF_SPTR(LagrangianScleronomousR)
82
83#endif