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* forceB(const double T, const double* const X);
84 void calculations(const double T, const double* const X);
85 void calculationsCommon(const double T, const double* const X) const;
86
87#ifdef FH_VISUALIZATION
88 void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator);
89 void RenderUpdate(const double T, const double* const X);
90#endif
91
92protected:
93 int m_numElements;
94 int* m_pos;
95 int* m_vel;
96
97 double m_length;
98 double m_alpha;
99 double m_beta;
100 double m_epsilon;
101 double m_bendingStiffness;
102 double m_linearDamping;
103 int counter;
104
105 double m_totalLength;
106 double m_kineticEnergy;
107
108 ISignalPort* m_posA;
109 ISignalPort* m_posB;
110 ISignalPort* m_velA;
111 ISignalPort* m_velB;
112
113 ICommonComputation* m_calcDynamics;
114 double* m_lambda;
115 double* m_accel;
116
117 double m_forceB[3];
118
119#ifdef FH_VISUALIZATION
120 C3DLine* m_line;
121#endif
122};
123} // namespace RbCable
Definition RBCable.h:75
RBCable(const std::string &simObjectName, ISimObjectCreator *const creator)
reads parameters, registers states, output and intput ports.