FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
RBCable.h
1#pragma once
66#include <fhsim/simobject/SimObject.h>
67#ifdef FH_VISUALIZATION
68# include "sfh/ogre/C3DLine.h"
69#endif
70
71
72namespace RbCable
73{
74class RBCable : public SimObject
75{
76public:
77 RBCable(const std::string& simObjectName, ISimObjectCreator* const creator);
78 ~RBCable();
79 void OdeFcn(const double T, const double* const X, double* const XDot) const;
80 void InitialConditionSetup(const double T, const double* const currentIC, double* const updatedIC, ISimObjectCreator* const creator);
81
82 const double* const totalLength(const double T, const double* const X);
83 const double* forceA(const double T, const double* const X);
84 const double* forceB(const double T, const double* const X);
85 void calculations(const double T, const double* const X);
86 void calculationsCommon(const double T, const double* const X) const;
87
88#ifdef FH_VISUALIZATION
89 void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator);
90 void RenderUpdate(const double T, const double* const X);
91#endif
92
93protected:
94 int m_numElements;
95 int* m_pos;
96 int* m_vel;
97
98 double m_length;
99 double m_alpha;
100 double m_beta;
101 double m_epsilon;
102 double m_bendingStiffness;
103 double m_linearDamping;
104 int counter;
105
106 double m_totalLength;
107 double m_kineticEnergy;
108
109 ISignalPort* m_posA;
110 ISignalPort* m_posB;
111 ISignalPort* m_velA;
112 ISignalPort* m_velB;
113
114 ICommonComputation* m_calcDynamics;
115 double* m_lambda;
116 double* m_accel;
117
118 double m_forceA[3];
119 double m_forceB[3];
120
121#ifdef FH_VISUALIZATION
122 C3DLine* m_line;
123#endif
124};
125} // namespace RbCable
Definition RBCable.h:75
RBCable(const std::string &simObjectName, ISimObjectCreator *const creator)
reads parameters, registers states, output and intput ports.