217#include "ITrawlCable.h"
222#ifdef FH_VISUALIZATION
223# include "sfh/ogre/C3DLine.h"
234 TrawlCable(
const std::string& simObjectName, ISimObjectCreator*
const creator);
245 void OdeFcn(
const double T,
const double*
const X,
double*
const XDot)
const;
250 void InitialConditionSetup(
const double T,
const double*
const currentIC,
double*
const updatedIC, ISimObjectCreator*
const creator);
256 void FinalSetup(
const double T,
const double*
const X, ISimObjectCreator*
const creator);
259#ifdef FH_VISUALIZATION
260 void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
261 void RenderUpdate(
const double T,
const double*
const X);
264 void Compute(
const double T,
const double*
const X);
265 void AddDependency(ICommonComputation* dependecy);
266 CoRiBoDynamics::ConstraintSolver* GetConstraintSolver();
270 double getRegulatorTimeConstant();
273 void MainCalculations(
const double T,
const double*
const X);
274 void MainCalculationsCommon(
const double T,
const double*
const X)
const;
284 void DistributeCatenary(CoRiBoDynamics::vec3 P1, CoRiBoDynamics::vec3 P2, std::vector<element> elements,
double L,
double* states,
int i1,
int i2, ISimObjectCreator* creator);
286 environment::EnvironmentProvider* m_environment;
293 Chirality m_Chirality;
295 double m_TrawlDoorMass;
296 double m_TrawlDoorArea;
297 double m_TrawlDoorLx;
298 double m_TrawlDoorLy;
299 double m_TrawlDoorLz;
300 CoRiBoDynamics::vec3 m_TrawlDoorWarpConnection;
301 CoRiBoDynamics::vec3 m_TrawlDoorTopBridleConnection;
302 CoRiBoDynamics::vec3 m_TrawlDoorBottomBridleConnection;
304 double m_ClumpWeightMass;
305 double m_ClumpWeightLength;
306 double m_ClumpWeightRadius;
309 double m_TopWarpLength;
310 double m_TopWarpElementLength;
339 std::set<ICommonComputation*> m_ExternalDependencies;
344 std::vector<element> m_TopWarpElements;
345 std::vector<element> m_WarpElements;
346 std::vector<element> m_TopBridleElements;
347 std::vector<element> m_BottomBridleElements;
349 element m_TrawlDoorWeightElement;
353 const double* winchForce(
const double T,
const double*
const X);
354 double m_winchForce[3];
355 int m_WinchPointConnectionIndex;
357 const double* TopBridleEndForce(
const double T,
const double*
const X);
358 double m_TopBridleEndForce[3];
359 int m_TopBridleEndPointConnectionIndex;
361 const double* BottomBridleEndForce(
const double T,
const double*
const X);
362 double m_BottomBridleEndForce[3];
363 int m_BottomBridleEndPointConnectionIndex;
365 const double* trawlDoorPosition(
const double T,
const double*
const X);
368 ICommonComputation* m_ContactForceCalculations;
369 void ContactForceCalculations(
const double T,
const double*
const X);
370 void ContactForceCalculationsCommon(
const double T,
const double*
const X)
const;
371 const double* normalForceTrawlDoor(
const double T,
const double*
const X);
372 const double* normalForceClumpWeight(
const double T,
const double*
const X);
373 const double* normalForceTopBridle(
const double T,
const double*
const X);
374 const double* normalForceBottomBridle(
const double T,
const double*
const X);
375 const double* normalForceWarp(
const double T,
const double*
const X);
376 const double* contactPositionTopBridle(
const double T,
const double*
const X);
377 const double* contactPositionBottomBridle(
const double T,
const double*
const X);
378 const double* contactPositionWarp(
const double T,
const double*
const X);
379 double m_normalForceTrawlDoor[1];
380 double m_normalForceClumpWeight[1];
381 double m_normalForceTopBridle[3];
382 double m_normalForceBottomBridle[3];
383 double m_normalForceWarp[3];
385 ISignalPort* m_WinchPosition;
386 ISignalPort* m_WinchVelocity;
388 ISignalPort* m_TopBridleEndPosition;
389 ISignalPort* m_TopBridleEndVelocity;
391 ISignalPort* m_BottomBridleEndPosition;
392 ISignalPort* m_BottomBridleEndVelocity;
394#ifdef FH_VISUALIZATION
397 Ogre::SceneNode** m_TopWarpNodes =
nullptr;
398 Ogre::SceneNode** m_WarpNodes =
nullptr;
399 Ogre::SceneNode** m_TopBridleNodes =
nullptr;
400 Ogre::SceneNode** m_BottomBridleNodes =
nullptr;
401 Ogre::SceneNode* m_TrawlDoorNode =
nullptr;
402 Ogre::SceneNode* m_ClumpWeightNode =
nullptr;
403 C3DLine* m_TopWarpLine =
nullptr;
404 C3DLine* m_WarpLine =
nullptr;
405 C3DLine* m_TopBridleLine =
nullptr;
406 C3DLine* m_BottomBridleLine =
nullptr;
Definition TrawlCableConstraintSets.h:119
Definition TrawlCableConstraintSets.h:71
Definition TrawlCableConstraintSets.h:11
Definition ITrawlCable.h:18
Definition TrawlCable.h:227
double m_CollisionFrequencyCoefficient
Frequency response coefficient.
Definition TrawlCable.h:325
double m_TopBridleLength
Warp cable length.
Definition TrawlCable.h:321
double m_WarpLength
Nominal cable diameter.
Definition TrawlCable.h:320
void InitialConditionSetup(const double T, const double *const currentIC, double *const updatedIC, ISimObjectCreator *const creator)
double m_frequencyCoefficient
Bridle cable length.
Definition TrawlCable.h:324
CoRiBoDynamics::TrawlCableJointConstraint * m_JointConstraint
collision constraints
Definition TrawlCable.h:336
double m_TopBridleDiameter
Nominal cable diameter.
Definition TrawlCable.h:317
double m_BottomBridleElementLength
Length of discrete cable elements.
Definition TrawlCable.h:329
CoRiBoDynamics::TrawlCableCollisionManager * m_CollisionManager
6dof rigid body constrained dynamic solver
Definition TrawlCable.h:335
CoRiBoDynamics::TrawlCableCollisionManager * GetCollisionManager()
6dof rigid body constrained dynamic solver
int m_NumTopBridle
The number of discrete cable elements in the warp.
Definition TrawlCable.h:313
double m_BottomBridleDiameter
Nominal cable diameter.
Definition TrawlCable.h:318
CoRiBoDynamics::EnvironmentForces * GetEnvironmentForces()
structural joint constraints
TrawlCable(const std::string &simObjectName, ISimObjectCreator *const creator)
double m_WarpElementLength
Frequency response coefficient.
Definition TrawlCable.h:327
CoRiBoDynamics::TrawlCableJointConstraint * GetJointConstraint()
collision constraints
double m_WarpDiameter
The number of discrete cable elements int the lower bridle.
Definition TrawlCable.h:316
double m_BottomBridleLength
Bridle cable length.
Definition TrawlCable.h:322
double m_collisionDampingFactor
Length of discrete cable elements.
Definition TrawlCable.h:331
int m_NumBottomBridle
The number of discrete cable elements in the top bridle.
Definition TrawlCable.h:314
CoRiBoDynamics::EnvironmentForces * m_environmentForces
structural joint constraints
Definition TrawlCable.h:337
double m_TopBridleElementLength
Length of discrete cable elements.
Definition TrawlCable.h:328
ICommonComputation * m_MainCalculations
list of all (unique) CommonComputation nodes that have registered external geometry in the cable coll...
Definition TrawlCable.h:341
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)
CoRiBoDynamics::ConstraintSolver * m_ConstraintSolver
Relative damping coefficient of contact constraint. 1 is critical damping.
Definition TrawlCable.h:334
Definition TrawlCable.h:277