230#include "ITrawlCable.h"
235#ifdef FH_VISUALIZATION
236# include "sfh/ogre/C3DLine.h"
247 TrawlCable(
const std::string& simObjectName, ISimObjectCreator*
const creator);
258 void OdeFcn(
const double T,
const double*
const X,
double*
const XDot)
const;
263 void InitialConditionSetup(
const double T,
const double*
const currentIC,
double*
const updatedIC, ISimObjectCreator*
const creator);
269 void FinalSetup(
const double T,
const double*
const X, ISimObjectCreator*
const creator);
272#ifdef FH_VISUALIZATION
273 void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
274 void RenderUpdate(
const double T,
const double*
const X);
277 void Compute(
const double T,
const double*
const X);
278 void AddDependency(ICommonComputation* dependecy);
279 CoRiBoDynamics::ConstraintSolver* GetConstraintSolver();
283 double getRegulatorTimeConstant();
286 void MainCalculations(
const double T,
const double*
const X);
287 void MainCalculationsCommon(
const double T,
const double*
const X)
const;
297 void DistributeCatenary(CoRiBoDynamics::vec3 P1, CoRiBoDynamics::vec3 P2, std::vector<element> elements,
double L,
double* states,
int i1,
int i2, ISimObjectCreator* creator);
299 environment::EnvironmentProvider* m_environment;
306 Chirality m_Chirality;
308 double m_TrawlDoorMass;
309 double m_TrawlDoorArea;
310 double m_TrawlDoorLx;
311 double m_TrawlDoorLy;
312 double m_TrawlDoorLz;
313 CoRiBoDynamics::vec3 m_TrawlDoorWarpConnection;
314 CoRiBoDynamics::vec3 m_TrawlDoorTopBridleConnection;
315 CoRiBoDynamics::vec3 m_TrawlDoorBottomBridleConnection;
317 double m_ClumpWeightMass;
318 double m_ClumpWeightLength;
319 double m_ClumpWeightRadius;
322 double m_TopWarpLength;
323 double m_TopWarpElementLength;
352 std::set<ICommonComputation*> m_ExternalDependencies;
357 std::vector<element> m_TopWarpElements;
358 std::vector<element> m_WarpElements;
359 std::vector<element> m_TopBridleElements;
360 std::vector<element> m_BottomBridleElements;
362 element m_TrawlDoorWeightElement;
366 const double* winchForce(
const double T,
const double*
const X);
367 double m_winchForce[3];
368 int m_WinchPointConnectionIndex;
370 const double* TopBridleEndForce(
const double T,
const double*
const X);
371 double m_TopBridleEndForce[3];
372 int m_TopBridleEndPointConnectionIndex;
374 const double* BottomBridleEndForce(
const double T,
const double*
const X);
375 double m_BottomBridleEndForce[3];
376 int m_BottomBridleEndPointConnectionIndex;
378 const double* trawlDoorPosition(
const double T,
const double*
const X);
381 ICommonComputation* m_ContactForceCalculations;
382 void ContactForceCalculations(
const double T,
const double*
const X);
383 void ContactForceCalculationsCommon(
const double T,
const double*
const X)
const;
384 const double* normalForceTrawlDoor(
const double T,
const double*
const X);
385 const double* normalForceClumpWeight(
const double T,
const double*
const X);
386 const double* normalForceTopBridle(
const double T,
const double*
const X);
387 const double* normalForceBottomBridle(
const double T,
const double*
const X);
388 const double* normalForceWarp(
const double T,
const double*
const X);
389 const double* contactPositionTopBridle(
const double T,
const double*
const X);
390 const double* contactPositionBottomBridle(
const double T,
const double*
const X);
391 const double* contactPositionWarp(
const double T,
const double*
const X);
392 double m_normalForceTrawlDoor[1];
393 double m_normalForceClumpWeight[1];
394 double m_normalForceTopBridle[3];
395 double m_normalForceBottomBridle[3];
396 double m_normalForceWarp[3];
398 ISignalPort* m_WinchPosition;
399 ISignalPort* m_WinchVelocity;
401 ISignalPort* m_TopBridleEndPosition;
402 ISignalPort* m_TopBridleEndVelocity;
404 ISignalPort* m_BottomBridleEndPosition;
405 ISignalPort* m_BottomBridleEndVelocity;
407#ifdef FH_VISUALIZATION
410 Ogre::SceneNode** m_TopWarpNodes =
nullptr;
411 Ogre::SceneNode** m_WarpNodes =
nullptr;
412 Ogre::SceneNode** m_TopBridleNodes =
nullptr;
413 Ogre::SceneNode** m_BottomBridleNodes =
nullptr;
414 Ogre::SceneNode* m_TrawlDoorNode =
nullptr;
415 Ogre::SceneNode* m_ClumpWeightNode =
nullptr;
416 C3DLine* m_TopWarpLine =
nullptr;
417 C3DLine* m_WarpLine =
nullptr;
418 C3DLine* m_TopBridleLine =
nullptr;
419 C3DLine* m_BottomBridleLine =
nullptr;
Definition TrawlCableConstraintSets.h:119
Definition TrawlCableConstraintSets.h:71
Definition TrawlCableConstraintSets.h:11
Definition ITrawlCable.h:18
Definition TrawlCable.h:240
double m_CollisionFrequencyCoefficient
Frequency response coefficient.
Definition TrawlCable.h:338
double m_TopBridleLength
Warp cable length.
Definition TrawlCable.h:334
double m_WarpLength
Nominal cable diameter.
Definition TrawlCable.h:333
void InitialConditionSetup(const double T, const double *const currentIC, double *const updatedIC, ISimObjectCreator *const creator)
double m_frequencyCoefficient
Bridle cable length.
Definition TrawlCable.h:337
CoRiBoDynamics::TrawlCableJointConstraint * m_JointConstraint
collision constraints
Definition TrawlCable.h:349
double m_TopBridleDiameter
Nominal cable diameter.
Definition TrawlCable.h:330
double m_BottomBridleElementLength
Length of discrete cable elements.
Definition TrawlCable.h:342
CoRiBoDynamics::TrawlCableCollisionManager * m_CollisionManager
6dof rigid body constrained dynamic solver
Definition TrawlCable.h:348
CoRiBoDynamics::TrawlCableCollisionManager * GetCollisionManager()
6dof rigid body constrained dynamic solver
int m_NumTopBridle
The number of discrete cable elements in the warp.
Definition TrawlCable.h:326
double m_BottomBridleDiameter
Nominal cable diameter.
Definition TrawlCable.h:331
CoRiBoDynamics::EnvironmentForces * GetEnvironmentForces()
structural joint constraints
TrawlCable(const std::string &simObjectName, ISimObjectCreator *const creator)
double m_WarpElementLength
Frequency response coefficient.
Definition TrawlCable.h:340
CoRiBoDynamics::TrawlCableJointConstraint * GetJointConstraint()
collision constraints
double m_WarpDiameter
The number of discrete cable elements int the lower bridle.
Definition TrawlCable.h:329
double m_BottomBridleLength
Bridle cable length.
Definition TrawlCable.h:335
double m_collisionDampingFactor
Length of discrete cable elements.
Definition TrawlCable.h:344
int m_NumBottomBridle
The number of discrete cable elements in the top bridle.
Definition TrawlCable.h:327
CoRiBoDynamics::EnvironmentForces * m_environmentForces
structural joint constraints
Definition TrawlCable.h:350
double m_TopBridleElementLength
Length of discrete cable elements.
Definition TrawlCable.h:341
ICommonComputation * m_MainCalculations
list of all (unique) CommonComputation nodes that have registered external geometry in the cable coll...
Definition TrawlCable.h:354
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:347
Definition TrawlCable.h:290