|
| | 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.
|
| |
|
|
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).
|
| |
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.
| 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
-
| T | The time of the step start [s]. |
| X | The states of the model at T. |