Program listing for file kernel/src/modelingTools/LagrangianRheonomousR.hpp

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

 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