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

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

 1#ifndef FirstOrderLinearTIR_H
 2#define FirstOrderLinearTIR_H
 3
 4#include "FirstOrderR.hpp"
 5
 6
 7class FirstOrderLinearTIR : public FirstOrderR {
 8
 9protected:
10
11  ACCEPT_SERIALIZATION(FirstOrderLinearTIR);
12
13
14  SP::SiconosVector _e{nullptr};
15
16
17  void initialize(Interaction &inter) override;
18
19
20  void checkSize(Interaction &inter) override;
21
22public:
23
24  FirstOrderLinearTIR(SP::SimpleMatrix C, SP::SimpleMatrix B);
25
26
27  FirstOrderLinearTIR(SP::SimpleMatrix C, SP::SimpleMatrix D,
28                      SP::SimpleMatrix F, SP::SiconosVector e,
29                      SP::SimpleMatrix B);
30
31
32  virtual ~FirstOrderLinearTIR() noexcept = default;
33
34
35  void computeh(const BlockVector &x, const SiconosVector &lambda, BlockVector &z,
36                SiconosVector &y);
37
38
39  void computeg(const SiconosVector &lambda, BlockVector &r);
40
41
42  void computeOutput(double time, Interaction &inter,
43                     unsigned int level = 0) override;
44
45
46  void computeInput(double time, Interaction &inter,
47                    unsigned int level = 0) override;
48
49
50  void display() const override;
51
52
53  inline void setePtr(SP::SiconosVector newe) { _e = newe; }
54
55
56  inline SP::SiconosVector e() const { return _e; }
57
58
59  inline bool isLinear() override { return true; }
60
61
62
63  void computeJach(double time, Interaction &inter) override{};
64  void computeJacg(double time, Interaction &inter) override{};
65
66  ACCEPT_STD_VISITORS();
67};
68
69TYPEDEF_SPTR(FirstOrderLinearTIR)
70
71#endif