274#include "DoorAndClumpWakeBodies.h"
275#include "ITrawlCable.h"
276#include "CableSegment.h"
284#ifdef FH_VISUALIZATION
285# include "sfh/ogre/C3DLine.h"
296 TrawlCable(
const std::string& simObjectName, ISimObjectCreator*
const creator);
307 void OdeFcn(
const double T,
const double*
const X,
double*
const XDot)
const;
312 void InitialConditionSetup(
const double T,
const double*
const currentIC,
double*
const updatedIC, ISimObjectCreator*
const creator);
318 void FinalSetup(
const double T,
const double*
const X, ISimObjectCreator*
const creator);
326 void PreOdeFcn(
const double T,
const double*
const X, IStateUpdater*
const updater)
override;
329#ifdef FH_VISUALIZATION
330 void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
331 void RenderUpdate(
const double T,
const double*
const X);
334 void Compute(
const double T,
const double*
const X)
override;
339 void MainCalculations(
const double T,
const double*
const X);
340 void MainCalculationsCommon(
const double T,
const double*
const X)
const;
348 Chirality m_Chirality;
350 double m_TrawlDoorMass;
351 double m_TrawlDoorArea;
352 double m_TrawlDoorLx;
353 double m_TrawlDoorLy;
354 double m_TrawlDoorLz;
355 CoRiBoDynamics::vec3 m_TrawlDoorWarpConnection;
356 CoRiBoDynamics::vec3 m_TrawlDoorTopBridleConnection;
357 CoRiBoDynamics::vec3 m_TrawlDoorBottomBridleConnection;
359 double m_ClumpWeightMass;
360 double m_ClumpWeightLength;
361 double m_ClumpWeightRadius;
364 double m_TopWarpLength;
365 double m_TopWarpElementLength;
392 std::set<ICommonComputation*> m_ExternalDependencies;
397 std::vector<trawl_mooring::ElementStates> m_TopWarpElements;
398 std::vector<trawl_mooring::ElementStates> m_WarpElements;
399 std::vector<trawl_mooring::ElementStates> m_TopBridleElements;
400 std::vector<trawl_mooring::ElementStates> m_BottomBridleElements;
406 const double* winchForce(
const double T,
const double*
const X);
407 double m_winchForce[3];
408 int m_WinchPointConnectionIndex;
410 const double* TopBridleEndForce(
const double T,
const double*
const X);
411 double m_TopBridleEndForce[3];
412 int m_TopBridleEndPointConnectionIndex;
414 const double* BottomBridleEndForce(
const double T,
const double*
const X);
415 double m_BottomBridleEndForce[3];
416 int m_BottomBridleEndPointConnectionIndex;
418 const double* trawlDoorPosition(
const double T,
const double*
const X);
421 ICommonComputation* m_ContactForceCalculations;
422 void ContactForceCalculations(
const double T,
const double*
const X);
423 void ContactForceCalculationsCommon(
const double T,
const double*
const X)
const;
424 const double* normalForceTrawlDoor(
const double T,
const double*
const X);
425 const double* normalForceClumpWeight(
const double T,
const double*
const X);
426 const double* normalForceTopBridle(
const double T,
const double*
const X);
427 const double* normalForceBottomBridle(
const double T,
const double*
const X);
428 const double* normalForceWarp(
const double T,
const double*
const X);
429 const double* contactPositionTopBridle(
const double T,
const double*
const X);
430 const double* contactPositionBottomBridle(
const double T,
const double*
const X);
431 const double* contactPositionWarp(
const double T,
const double*
const X);
432 double m_normalForceTrawlDoor[1];
433 double m_normalForceClumpWeight[1];
434 double m_normalForceTopBridle[3];
435 double m_normalForceBottomBridle[3];
436 double m_normalForceWarp[3];
438 ISignalPort* m_WinchPosition;
439 ISignalPort* m_WinchVelocity;
441 ISignalPort* m_TopBridleEndPosition;
442 ISignalPort* m_TopBridleEndVelocity;
444 ISignalPort* m_BottomBridleEndPosition;
445 ISignalPort* m_BottomBridleEndVelocity;
447#ifdef FH_VISUALIZATION
450 Ogre::SceneNode** m_TopWarpNodes =
nullptr;
451 Ogre::SceneNode** m_WarpNodes =
nullptr;
452 Ogre::SceneNode** m_TopBridleNodes =
nullptr;
453 Ogre::SceneNode** m_BottomBridleNodes =
nullptr;
454 Ogre::SceneNode* m_TrawlDoorNode =
nullptr;
455 Ogre::SceneNode* m_ClumpWeightNode =
nullptr;
456 C3DLine* m_TopWarpLine =
nullptr;
457 C3DLine* m_WarpLine =
nullptr;
458 C3DLine* m_TopBridleLine =
nullptr;
459 C3DLine* m_BottomBridleLine =
nullptr;
What a TrawlCable that owns a rig offers the cables that join it (a TrawlCable with TrawlCable,...
Definition ITrawlCable.h:18
Definition TrawlCable.h:289
const trawl_mooring::RigParts * m_rig
The rig this cable's elements are on: its own, or that of the TrawlCable it joins (set in FinalSetup)...
Definition TrawlCable.h:390
double m_CollisionFrequencyCoefficient
Frequency response coefficient.
Definition TrawlCable.h:380
double m_TopBridleLength
Warp cable length.
Definition TrawlCable.h:376
double m_WarpLength
Nominal cable diameter.
Definition TrawlCable.h:375
void InitialConditionSetup(const double T, const double *const currentIC, double *const updatedIC, ISimObjectCreator *const creator)
double m_frequencyCoefficient
Bridle cable length.
Definition TrawlCable.h:379
double m_TopBridleDiameter
Nominal cable diameter.
Definition TrawlCable.h:372
double m_BottomBridleElementLength
Length of discrete cable elements.
Definition TrawlCable.h:384
int m_NumTopBridle
The number of discrete cable elements in the warp.
Definition TrawlCable.h:368
double m_BottomBridleDiameter
Nominal cable diameter.
Definition TrawlCable.h:373
TrawlCable(const std::string &simObjectName, ISimObjectCreator *const creator)
double m_WarpElementLength
Frequency response coefficient.
Definition TrawlCable.h:382
void Compute(const double T, const double *const X) override
Runs the owner's main calculation (the solver's dynamics) at T, X.
void PreOdeFcn(const double T, const double *const X, IStateUpdater *const updater) override
double m_WarpDiameter
The number of discrete cable elements int the lower bridle.
Definition TrawlCable.h:371
double m_BottomBridleLength
Bridle cable length.
Definition TrawlCable.h:377
double m_collisionDampingFactor
Length of discrete cable elements.
Definition TrawlCable.h:386
int m_NumBottomBridle
The number of discrete cable elements in the top bridle.
Definition TrawlCable.h:369
double m_TopBridleElementLength
Length of discrete cable elements.
Definition TrawlCable.h:383
void AddDependency(ICommonComputation *dependecy) override
Adds a joining cable's common computation, which the owner's main calculation runs first.
ICommonComputation * m_MainCalculations
list of all (unique) CommonComputation nodes that have registered external geometry in the cable coll...
Definition TrawlCable.h:394
std::unique_ptr< trawl_mooring::TrawlRig > m_ownRig
Relative damping coefficient of contact constraint. 1 is critical damping.
Definition TrawlCable.h:389
void OdeFcn(const double T, const double *const X, double *const XDot) const
void FinalSetup(const double T, const double *const X, ISimObjectCreator *const creator)
const trawl_mooring::RigParts & Rig() const override
The rig's solver and its shared parts.
The state indices of one rigid element and its index in the solver.
Definition CableSegment.h:32
The parts of one constraint solver that every cable on it uses.
Definition TrawlRig.h:47