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