1#ifndef CTrawlDoor_base_H
2#define CTrawlDoor_base_H
8#include "sfh/sim/kinematics.h"
10#include <EnvironmentProvider.h>
14#ifdef FH_VISUALIZATION
15#include "OgreParticleSystem.h"
16#ifdef USE_BILLBOARD_LABELS
17#include "sfh/ogre/CMovableText.h"
126 virtual void OdeFcn(
const double dT,
const double*
const adX,
double*
const adXDot,
const bool bIsMajorTimeStep);
129#ifdef FH_VISUALIZATION
131 virtual void RenderInit(Ogre::Root*
const pOgreRoot, ISimObjectCreator*
const pCreator);
134 virtual void RenderUpdate(
const double dT,
const double*
const adX);
138 virtual void TD_HydroForces(
const double pRelVel[],
double *pAlpha,
double *pBeta,
double *pU,
double pForceSS[]);
140 virtual void TD_HydroForces_SS(
double TD_Area,
double rho,
const double pRelVel[],
double alpha,
double beta,
double U,
double* pCoeffSS,
double* pForceSS);
141 virtual void TD_HydroCoeff_SS(
double alpha,
double beta,
double pCoeffSS[]);
142 virtual void TD_vel2HydroAng(
const double pRelVel[],
double* pAlpha,
double* pBeta,
double* pU);
143 virtual void AddExternalForces(
double dT,
const double*
const adX);
144 virtual void AddInternalForces();
145 virtual void AddHydroForces();
146 virtual void AddDampingForces();
147 virtual void AddBottomForces(){};
148 virtual void CalcDerivatives(
double dT,
double*
const adXDot,
const double*
const adX);
149 virtual void CalcFoundation(
const double dT,
const double*
const adX,
double*
const adXDot,
bool bIsMajorTimeStep);
150 virtual void AddExternalForce(
const double adPos_d[3],
const double adForceExternal_n[3]);
151 virtual void CalcOutput(
const double dT,
const double*
const adX);
152 void FinalSetup(
const double dT,
const double *
const adX, ISimObjectCreator*
const pCreator);
162 double m_dMassInverse[6][6];
163 double m_mdCornerPos_body[4][3];
167 double m_adOutOfBoundCoeff[6];
168 double m_adHydrodynamicCorrections[6];
171 double m_adWarpPos_d[3];
172 double m_adLBPos_d[3];
173 double m_adUBPos_d[3];
183 environment::EnvironmentProvider* m_pEnvironment;
191 const double* OutPos1(
const double dT,
const double*
const adX);
192 const double* OutPos3(
const double dT,
const double*
const adX);
193 const double* OutPos2(
const double dT,
const double*
const adX);
194 const double* OutVel1(
const double dT,
const double*
const adX);
195 const double* OutVel3(
const double dT,
const double*
const adX);
196 const double* OutVel2(
const double dT,
const double*
const adX);
198 double m_adOutPos1[3];
199 double m_adOutPos3[3];
200 double m_adOutPos2[3];
201 double m_adOutVel1[3];
202 double m_adOutVel3[3];
203 double m_adOutVel2[3];
205 unsigned long m_IStatePos;
206 unsigned long m_IStateQuater;
207 unsigned long m_IStateLocalVel;
208 unsigned long m_IStateOmega;
209 unsigned long m_IStateHydroForce;
212 double ma_adSumForces[6];
217 const double* ma_adXPos_n;
218 const double* ma_adXQuater;
219 const double* ma_adXVel_d;
220 const double* ma_adXOmega;
223 double ma_adXVel_n[3];
224 double ma_adHydroForceSS[6];
225 double ma_adRelVel_d[6];
226 double ma_adWaterVel_d[3];
228#ifdef FH_VISUALIZATION
229 void BottomContactRenderInit();
230 void RenderBottomContact(
double depth,
double m_aCornerPos_ned[4][3],
double m_adSubmergence[4]);
231 Ogre::ParticleSystem* m_particleSystem;
232 Ogre::SceneNode* m_particleNode;
233 Ogre::ParticleEmitter* m_particleEmitter;
234 Ogre::Vector3 m_visualizationScale;
236 std::string m_sMeshName;
238 double m_dLengthScale;
239 double m_dHeightScale;
240 double m_dCurvatureScale;
241 Ogre::Entity* m_pRenderEntity;
242 Ogre::SceneNode* m_pRenderNode;
243 Ogre::Quaternion m_InitOrientation;
244 Ogre::SceneManager* m_pSceneMgr;
246#ifdef USE_BILLBOARD_LABELS
247 Ogre::SceneNode* m_BBRenderNode;
248 Ogre::CMovableText* m_BBTxt;
Definition CTrawlDoor_base.h:120
double m_adForce_LB[3]
A pointer to the force.
Definition CTrawlDoor_base.h:178
double m_adWaterVel_n[3]
The water velocity in the door position.
Definition CTrawlDoor_base.h:180
double m_dRhoWater
The density of the surrounding fluid.
Definition CTrawlDoor_base.h:176
double m_adForce_warp[3]
A pointer to the Warp force.
Definition CTrawlDoor_base.h:177
double m_dRhoDoor
The density of the trawl door material.
Definition CTrawlDoor_base.h:164
bool m_bIsPort
Is this a port trawl door?
Definition CTrawlDoor_base.h:154
CTrawlDoor_base(std::string sSimObjectName, ISimObjectCreator *pCreator)
The constructor sets the pointer to the output object and the parser object.
ICommonComputation * m_pCommonCalc
Calculations necessary for more than one output port.
Definition CTrawlDoor_base.h:181
ISignalPort * m_pInLB_F
The cable length input port.
Definition CTrawlDoor_base.h:187
double m_dMass
The mass of the object.
Definition CTrawlDoor_base.h:161
ISignalPort * m_pInUB_F
The cable length input port.
Definition CTrawlDoor_base.h:188
double m_dArea
The trawldoor area.
Definition CTrawlDoor_base.h:156
ISignalPort * m_pInWarp_F
The cable length input port.
Definition CTrawlDoor_base.h:186
double m_adForce_UB[3]
A pointer to the input force.
Definition CTrawlDoor_base.h:179
double m_adCOG[3]
The trawl door center of gravity.
Definition CTrawlDoor_base.h:155
virtual void OdeFcn(const double dT, const double *const adX, double *const adXDot, const bool bIsMajorTimeStep)
Calculates the state derivatives.