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