Program listing for file kernel/src/modelingTools/FirstOrderType2R.hpp#
Return to documentation for this file
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