Marine systems simulation
FlukeAnchor.h
1#ifndef CFlukeAnchor_H
2#define CFlukeAnchor_H
3
92#include "ISimObjectCreator.h"
93
94namespace rigidbody
95{
96class CRigidCompositeBody;
97};
98class CEnvironment;
99
100class FlukeAnchor : public SimObject
101{
102 public:
103 FlukeAnchor(const string& simObjectName, ISimObjectCreator* const creator);
104 ~FlukeAnchor();
105 void OdeFcn(const double T, const double* const X, double* const XDot, const bool bIsMajorTimeStep);
106
107 void FinalSetup(const double T, const double* const X, ISimObjectCreator* const creator);
108
109#ifdef FH_VISUALIZATION
110 void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator);
111 void RenderUpdate(const double T, const double* const X);
112#endif
113
114 const double* Position(const double T, const double* const X);
115 const double* Velocity(const double T, const double* const X);
116 const double* Theta(const double T, const double* const X);
117 const double* Omega(const double T, const double* const X);
118
119 protected:
121
122
123 double m_MaterialRho; // Total mass of anchor [kg]
124 double m_ShankLength; // Total volume displacement of anchor [m^3]
125 double m_ShankDiameter; // Relative added mass (to displaced fluid volume) [-]
126 double m_ShankThickness; // Total length of anchor [m]
127 double m_ShankFlukeAngle; // Length from anchor-tip to fluke [m]
128 double m_FlukeWidth; // Fluke width times fluke height [m^2]
129 double m_FlukeSideLength; // Main diameter of shank [m]
130 double m_FlukePointLength;
131 double m_FlukeThickness; // Anchor drag coefficient [-]
132
133 ISignalPort* m_Force;
134 int m_PositionIndex;
135 int m_VelocityIndex;
136 int m_ThetaIndex;
137 int m_OmegaIndex;
138
139 CEnvironment* m_environment;
140
141#ifdef FH_VISUALIZATION
142 Ogre::SceneNode* m_RenderNode;
143 Ogre::SceneNode* m_seabed;
144#endif
145};
146
147
148#endif
Definition: CEnvironment.h:10
Definition: FlukeAnchor.h:101
Definition: CRigidCompositeBody.h:12