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