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

 1#ifndef FirstOrderType2R_H
 2#define FirstOrderType2R_H
 3
 4#include "FirstOrderR.hpp"
 5
 6typedef void (*Type2PtrH)(unsigned int, double*, unsigned int, double*, unsigned int, double*);
 7typedef void (*Type2PtrG)(unsigned int, double*,  unsigned int, double*);
 8
 9
10class FirstOrderType2R : public FirstOrderR
11{
12protected:
13
14  ACCEPT_SERIALIZATION(FirstOrderType2R);
15
16
17public:
18
19
20  FirstOrderType2R() : FirstOrderR(RELATION::Type2R){};
21
22
23  FirstOrderType2R(const std::string& pluginh, const std::string& pluging);
24
25
26  FirstOrderType2R(const std::string& pluginh, const std::string& pluging, const std::string& pluginJacobianhx, const std::string& pluginJacobianglambda);
27
28
29  virtual ~FirstOrderType2R() noexcept = default;
30
31
32  void initialize(Interaction& inter) override;
33
34
35  inline void checkSize(Interaction& inter) override {};
36
37
38  virtual void computeh(double time, const BlockVector& x, const SiconosVector& lambda, SiconosVector& y);
39
40
41  virtual void computeg(double time, const SiconosVector& lambda, BlockVector& r);
42
43
44  virtual void computeJachx(double time, const BlockVector& x, const SiconosVector& lambda, SimpleMatrix& C);
45
46
47  virtual void computeJacglambda(double time, const SiconosVector& lambda, SimpleMatrix& B);
48
49
50  virtual void computeJachlambda(double time, const BlockVector& x, const SiconosVector& lambda, SimpleMatrix& D);
51
52
53  void computeOutput(double time, Interaction& inter,
54                 unsigned int level = 0) override;
55
56
57  void computeInput(double time, Interaction& inter,
58                unsigned int level = 0) override;
59
60
61  bool requireResidu() override
62  {
63    return true;
64  }
65
66  void computeJach(double time, Interaction& inter) override;
67
68  void computeJacg(double time, Interaction& inter) override;
69
70  ACCEPT_STD_VISITORS();
71
72};
73
74TYPEDEF_SPTR(FirstOrderType2R)
75
76#endif