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

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

 1#ifndef FirstOrderR_H
 2#define FirstOrderR_H
 3
 4#include "Interaction.hpp"
 5#include "Relation.hpp"
 6
 7
 8class FirstOrderR : public Relation {
 9public:
10  enum FirstOrderRDS { x, z, r, DSlinkSize };
11  enum FirstOrderRVec { e, relationVectorsSize };
12  enum FirstOrderRMat {
13    mat_C,
14    mat_D,
15    mat_F,
16    mat_B,
17    mat_K,
18    relationMatricesSize
19  };
20
21protected:
22
23  ACCEPT_SERIALIZATION(FirstOrderR);
24
25
26  FirstOrderR(RELATION::SUBTYPES newType)
27      : Relation(RELATION::FirstOrder, newType) {}
28
29
30
31
32  SP::SimpleMatrix _C{nullptr};
33
34
35  SP::SimpleMatrix _D{nullptr};
36
37
38  SP::SimpleMatrix _F{nullptr};
39
40
41  SP::SimpleMatrix _B{nullptr};
42
43
44  SP::SimpleMatrix _K{nullptr};
45
46public:
47
48  virtual ~FirstOrderR() noexcept = default;
49
50
51  void initialize(Interaction &inter) override;
52
53
54  inline void setCPtr(SP::SimpleMatrix newC) { _C = newC; }
55
56
57  inline void setBPtr(SP::SimpleMatrix newB) { _B = newB; }
58
59
60  inline void setDPtr(SP::SimpleMatrix newD) { _D = newD; }
61
62
63  inline void setFPtr(SP::SimpleMatrix newF) { _F = newF; }
64
65
66  inline SP::SimpleMatrix C() const override { return _C; }
67
68
69
70  inline SP::SimpleMatrix H() const override { return _C; }
71
72
73  inline SP::SimpleMatrix D() const { return _D; }
74
75
76  inline SP::SimpleMatrix F() const { return _F; }
77
78
79  inline SP::SimpleMatrix B() const { return _B; }
80
81
82  inline SP::SimpleMatrix K() const { return _K; }
83};
84#endif