3#include "sfh/sim/kinematics.h"
5#include <fhsim/simobject/SimObject.h>
6#include <fhsim_environment/EnvironmentProvider.h>
11#ifdef FH_VISUALIZATION
12# include "OgreParticleSystem.h"
13# ifdef USE_BILLBOARD_LABELS
14# include "sfh/ogre/CMovableText.h"
123 virtual void OdeFcn(
const double dT,
const double*
const adX,
double*
const adXDot)
const override;
134 bool HasJacobians()
const override;
135 void OdeJacobian(
double T,
const double* X,
double* J,
int nStates)
override;
136 int GetJacobianSparsity(
int nStates,
int* rowPtr,
int* colIdx)
override;
140#ifdef FH_VISUALIZATION
142 virtual void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
145 virtual void RenderUpdate(
const double dT,
const double*
const adX);
149 virtual void TD_HydroForces(
const double relVel[],
double* alpha,
double* beta,
double* pU,
double forceSS[]);
151 virtual void TD_HydroForces_SS(
double TD_Area,
double rho,
const double relVel[],
double alpha,
double beta,
double U,
double* coeffSS,
double* forceSS);
152 virtual void TD_HydroCoeff_SS(
double alpha,
double beta,
double coeffSS[]);
153 virtual void TD_vel2HydroAng(
const double relVel[],
double* alpha,
double* beta,
double* pU);
154 virtual void AddExternalForces(
double dT,
const double*
const adX);
155 virtual void AddInternalForces();
156 virtual void AddHydroForces();
157 virtual void AddDampingForces();
158 virtual void AddBottomForces() { };
159 virtual void CalcDerivatives(
double dT,
double*
const adXDot,
const double*
const adX);
160 virtual void CalcFoundation(
const double dT,
const double*
const adX,
double*
const adXDot);
161 virtual void AddExternalForce(
const double adPos_d[3],
const double adForceExternal_n[3]);
162 virtual void CalcOutput(
const double dT,
const double*
const adX);
163 void CalcOutputCommon(
const double dT,
const double*
const adX)
const;
164 void FinalSetup(
const double dT,
const double*
const adX, ISimObjectCreator*
const creator);
174 double m_massInverse[6][6];
175 double m_mdCornerPos_body[4][3];
179 double m_outOfBoundCoeff[6];
180 double m_hydrodynamicCorrections[6];
183 double m_warpPos_d[3];
195 environment::EnvironmentProvider* m_environment;
203 const double* OutPos1(
const double dT,
const double*
const adX);
204 const double* OutPos3(
const double dT,
const double*
const adX);
205 const double* OutPos2(
const double dT,
const double*
const adX);
206 const double* OutVel1(
const double dT,
const double*
const adX);
207 const double* OutVel3(
const double dT,
const double*
const adX);
208 const double* OutVel2(
const double dT,
const double*
const adX);
217 unsigned long m_IStatePos;
218 unsigned long m_IStateQuater;
219 unsigned long m_IStateLocalVel;
220 unsigned long m_IStateOmega;
221 unsigned long m_IStateHydroForce;
224 double ma_adSumForces[6];
229 const double* ma_adXPos_n;
230 const double* ma_adXQuater;
231 const double* ma_adXVel_d;
232 const double* ma_adXOmega;
235 double ma_adXVel_n[3];
236 double ma_adHydroForceSS[6];
237 double ma_adRelVel_d[6];
238 double ma_adWaterVel_d[3];
240#ifdef FH_VISUALIZATION
241 void BottomContactRenderInit();
242 void RenderBottomContact(
double depth,
double m_cornerPos_ned[4][3],
double m_submergence[4]);
243 Ogre::ParticleSystem* m_particleSystem;
244 Ogre::SceneNode* m_particleNode;
245 Ogre::ParticleEmitter* m_particleEmitter;
246 Ogre::Vector3 m_visualizationScale;
248 std::string m_meshName;
250 double m_lengthScale;
251 double m_heightScale;
252 double m_curvatureScale;
253 Ogre::Entity* m_renderEntity;
254 Ogre::SceneNode* m_renderNode;
255 Ogre::Quaternion m_InitOrientation;
256 Ogre::SceneManager* m_sceneMgr;
258# ifdef USE_BILLBOARD_LABELS
259 Ogre::SceneNode* m_BBRenderNode;
260 Ogre::CMovableText* m_BBTxt;
Definition TrawlDoorBase.h:117
double m_area
The trawldoor area.
Definition TrawlDoorBase.h:168
virtual void OdeFcn(const double dT, const double *const adX, double *const adXDot) const override
Calculates the state derivatives.
double m_force_warp[3]
A pointer to the Warp force.
Definition TrawlDoorBase.h:189
double m_rhoDoor
The density of the trawl door material.
Definition TrawlDoorBase.h:176
TrawlDoorBase(std::string simObjectName, ISimObjectCreator *creator)
The constructor sets the pointer to the output object and the parser object.
double m_waterVel_n[3]
The water velocity in the door position.
Definition TrawlDoorBase.h:192
double m_cOG[3]
The trawl door center of gravity.
Definition TrawlDoorBase.h:167
double m_rhoWater
The density of the surrounding fluid.
Definition TrawlDoorBase.h:188
double m_force_LB[3]
A pointer to the force.
Definition TrawlDoorBase.h:190
double m_force_UB[3]
A pointer to the input force.
Definition TrawlDoorBase.h:191
ISignalPort * m_inLB_F
The cable length input port.
Definition TrawlDoorBase.h:199
double m_mass
The mass of the object.
Definition TrawlDoorBase.h:173
ISignalPort * m_inUB_F
The cable length input port.
Definition TrawlDoorBase.h:200
bool m_isPort
Is this a port trawl door?
Definition TrawlDoorBase.h:166
ISignalPort * m_inWarp_F
The cable length input port.
Definition TrawlDoorBase.h:198
ICommonComputation * m_commonCalc
Calculations necessary for more than one output port.
Definition TrawlDoorBase.h:193