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