Program listing for file kernel/src/simulationTools/GlobalRollingFrictionContact.hpp#
Return to documentation for this file
1#ifndef GlobalRollingFrictionContact_H
2#define GlobalRollingFrictionContact_H
3
4#include "GlobalFrictionContact.hpp"
5#include "SiconosVector.hpp"
6#include "SimpleMatrix.hpp"
7#include "GlobalRollingFrictionContactProblem.h"
8#include "Friction_cst.h"
9
10
11typedef int (*GRFC3D_Driver)(GlobalRollingFrictionContactProblem*, double*, double*, double*, SolverOptions*);
12TYPEDEF_SPTR(GlobalRollingFrictionContactProblem)
13
14
15class GlobalRollingFrictionContact : public GlobalFrictionContact
16{
17private:
18
19 GlobalRollingFrictionContact() = default;
20
21protected:
22
23 ACCEPT_SERIALIZATION(GlobalRollingFrictionContact);
24
25
26 int _contactProblemDim = 5;
27
28
29 SP::MuStorage _mu_r;
30
31
32 GRFC3D_Driver _g_rolling_driver;
33
34 GlobalRollingFrictionContactProblem _numerics_problem;
35public:
36
37
38 GlobalRollingFrictionContact(int dimPb, int numericsSolverId = SICONOS_GLOBAL_ROLLING_FRICTION_3D_NSGS_WR);
39
40
41 GlobalRollingFrictionContact(int dimPb, SP::SolverOptions options);
42
43
44 virtual ~GlobalRollingFrictionContact(){};
45
46
47
48
49 inline int getGlobalRollingFrictionContactDim() const
50 {
51 return _contactProblemDim;
52 }
53
54
55 inline size_t getGlobalSizeOutput() const
56 {
57 return _sizeGlobalOutput;
58 }
59
60
61 inline SP::MuStorage mur() const
62 {
63 return _mu_r;
64 }
65
66
67 inline double getMur(unsigned int i) const
68 {
69 return (*_mu_r)[i];
70 }
71
72
73
74
75 void initialize(SP::Simulation sim);
76
77
78 SP::GlobalRollingFrictionContactProblem globalRollingFrictionContactProblem();
79
80
81 GlobalRollingFrictionContactProblem *globalRollingFrictionContactProblemPtr();
82
83
84 int solve(SP::GlobalRollingFrictionContactProblem problem = SP::GlobalRollingFrictionContactProblem());
85
86
87 virtual bool preCompute(double time);
88
89
90 virtual int compute(double time);
91
92
93 bool checkCompatibleNSLaw(NonSmoothLaw& nslaw);
94
95 void updateMu();
96 void updateMur();
97 void display() const;
98};
99
100#endif