FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
TorpedoAnchor.h
1#ifndef CTorpedoAnchor_H
2#define CTorpedoAnchor_H
3
106#include <fhsim/simobject/ISimObjectCreator.h>
107namespace rigidbody
108{
109class CRigidCompositeBody;
110};
111namespace environment
112{
113class EnvironmentProvider;
114}
115
116class TorpedoAnchor : public SimObject
117{
118 public:
119 TorpedoAnchor(const std::string& simObjectName, ISimObjectCreator* const creator);
121 void OdeFcn(const double T, const double* const X, double* const XDot) const;
122
123 void FinalSetup(const double T, const double* const X, ISimObjectCreator* const creator);
124
125#ifdef FH_VISUALIZATION
126 virtual void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator);
127 virtual void RenderUpdate(const double T, const double* const X);
128#endif
129
130 const double* Position(const double T, const double* const X);
131 const double* Velocity(const double T, const double* const X);
132 const double* Quater(const double T, const double* const X);
133 const double* Omega(const double T, const double* const X);
134
135 // Jacobian support (drag, soil and added-mass derivatives omitted)
136 bool HasJacobians() const override;
137 void OdeJacobian(double T, const double* X, double* J, int nStates) override;
138 int GetJacobianSparsity(int nStates, int* rowPtr, int* colIdx) override;
139
140 protected:
142
143 double m_MaterialRho; // Total mass of anchor [kg]
144 double m_ShankLength; // Total volume displacement of anchor [m^3]
145 double m_ShankDiameter; // Relative added mass (to displaced fluid volume) [-]
146 double m_ShankThickness; // Total length of anchor [m]
147 double m_ShankFlukeAngle; // Length from anchor-tip to fluke [m]
148 double m_FlukeWidth; // Fluke width times fluke height [m^2]
149 double m_FlukeSideLength; // Main diameter of shank [m]
150 double m_FlukePointLength; // Length of fluke point [m]
151 double m_FlukeThickness; // Thickness of fluke [m]
152
153 ISignalPort* m_Force;
154 int m_PositionIndex;
155 int m_VelocityIndex;
156 int m_QuaterIndex;
157 int m_OmegaIndex;
158
159 environment::EnvironmentProvider* m_environment;
160
161#ifdef FH_VISUALIZATION
162 Ogre::SceneNode* m_RenderNode;
163#endif
164};
165
166#endif
Definition TorpedoAnchor.h:117
Definition CRigidCompositeBody.h:12