FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
CoRiBoDynamics::EnvironmentForces Class Reference

#include <TrawlCableConstraintSets.h>

+ Inheritance diagram for CoRiBoDynamics::EnvironmentForces:
+ Collaboration diagram for CoRiBoDynamics::EnvironmentForces:

Classes

struct  CableSegment
 
struct  ClumpWeight
 
struct  TrawlDoor
 

Public Member Functions

 EnvironmentForces (ConstraintSolver *solver, double timeConstant, const environment::wake::BodyWake &bodyWake)
 
void AddNewCableSegment (CableSegment cable)
 
void ComputeConstraints (const double T, const double *const X)
 
void AddTrawlDoor (TrawlDoor Door)
 
void AddClumpWeight (ClumpWeight Weight)
 
void FinalSetup (const std::string &objectName, ISimObjectCreator *creator)
 
void TakeWakes (const double T, const double *const X)
 
environment::EnvironmentProvider *const * EnvironmentPointerAddress () const
 The address of the environment pointer, which FinalSetup sets later: what the elements with added mass (AddedMassRigidElement) read (MARE-0314).
 
int NumBodies () const
 The number of bodies of the owner's BodyWake: the trawl doors (bodies 0 to their number − 1), then the clump weights.
 
const TrawlDoor * DoorOfBody (int body) const
 The door that is body body of the owner's BodyWake, or nullptr if the body is a clump weight.
 
const ClumpWeight * ClumpOfBody (int body) const
 The clump weight that is body body of the owner's BodyWake, or nullptr if the body is a door.
 

Protected Attributes

std::vector< CableSegment > m_Cables
 
std::vector< TrawlDoor > m_TrawlDoors
 
std::vector< ClumpWeight > m_ClumpWeights
 
double m_timeConstant
 
environment::EnvironmentProvider * m_environment
 
environment::SeafloorForcesInterface * m_seafloor = nullptr
 The shared SeafloorForces, set in FinalSetup: the soil load of each cable element, a rigid cylinder.
 
const environment::wake::BodyWake & m_bodyWake
 The owner's: the water velocity of the doors and clump weights, and the query the cables receive with.
 
environment::wake::ElementFlowInteraction m_flow
 The flow at the centres of the cable elements, the other objects' wakes taken per step as the owner receives (MARE-0223, ENV-0110).
 

Friends

class DoorAndClumpWakeBodies
 

Detailed Description

The water and seabed forces on the bodies of one constraint solver: the elements of its cable segments, its trawl doors and its clump weights.

The owner of the solver (a TrawlCable without the TrawlCable parameter, a RundDorg) holds one BodyWake (BodyWakeKind::SourceSet, named after it) and hands it to this object: the doors and the clump weights, the bodies of a DoorAndClumpWakeBodies, read their water velocity from it (sample point i = body i, NumBodies()), which leaves their own wake out (D3); with CastWake the owner casts their wakes through it (feature wake-casting-trawl, owner ruling O10a). The cable elements receive the other objects' wakes through an ElementFlowInteraction built from the owner's BodyWake (fhsim_environment ENV-0110): its lumped field is left out and its private field, the doors' and clumps' wakes, composed in, at the owner's cutoff tier (its WakeCutoff with CastWake, R47) and with its ExternalWakeUpdate. Every cable segment in the solver receives so: the TrawlCables that join the solver and the MooringCables in it see the doors' wakes too.

Constructor & Destructor Documentation

◆ EnvironmentForces()

CoRiBoDynamics::EnvironmentForces::EnvironmentForces ( ConstraintSolver *  solver,
double  timeConstant,
const environment::wake::BodyWake &  bodyWake 
)
Parameters
bodyWakeThe owning object's BodyWake, which the doors and clump weights read and the cable elements receive as (its query, cutoff tier and ExternalWakeUpdate); it must outlive this object.

Member Function Documentation

◆ FinalSetup()

void CoRiBoDynamics::EnvironmentForces::FinalSetup ( const std::string &  objectName,
ISimObjectCreator *  creator 
)

Finds the Environment of the cable elements (ElementFlowInteraction::FinalSetup) and keeps it for the elements' other environment queries.

Called from FinalSetup of every object that creates or joins this instance; a missing Environment is a setup error naming objectName.

Parameters
objectNameThe calling SimObject's name, for the error.
creatorThe calling SimObject's creator.

◆ TakeWakes()

void CoRiBoDynamics::EnvironmentForces::TakeWakes ( const double  T,
const double *const  X 
)

Takes the other objects' wakes at the centres of the cable elements for the step (MARE-0223, owner ruling R-c), as the owner receives (BodyWake::Query()).

Called once per step from PreOdeFcn of the object that created this instance (not of the objects that only add segments to it), with the step's start state, after the owner's BodyWake::Update, which takes the wakes at the doors and clump weights. The points are the elements' centres over all cable segments in the order of ComputeConstraints, the index the running element number. Does nothing without an environment.

Parameters
TThe time of the step start [s].
XThe states of the model at T.

The documentation for this class was generated from the following file: