|
| | DoorAndClumpWakeBodies (EnvironmentForces &forces) |
| |
|
int | NumBodies () const override |
| | The number of doors plus the number of clump weights.
|
| |
|
environment::wake::WakeCastState | Body (const double *X, int body) const override |
| | The centre and velocity of the body's element [m], [m/s], NED.
|
| |
|
double | BodyRadius (int body) const override |
| | √(L·W/π) for a door, √(2rL/π) for a clump weight [m].
|
| |
| environment::wake::SourceLoad | BodyLoad (const double *X, int body, const double bodyVel[3], const double waterVel[3]) const override |
| |
The doors, then the clump weights, of an EnvironmentForces as the bodies of an IndexedWakeCastingObject.
The owner of the EnvironmentForces (a TrawlCable without the TrawlCable parameter, a RundDorg) hands it to its BodyWake (BodyWakeKind::SourceSet) in PreOdeFcn. The bodies are those of the EnvironmentForces (EnvironmentForces::NumBodies, DoorOfBody, ClumpOfBody); a body's centre and velocity are those of its rigid element (a door's plate, not its weight body). Each body's source is a disc of the body's projected area: radius √(L·W/π) for a door, √(2rL/π) for a clump weight (owner ruling O9a). Its load is the hydrodynamic part of the body's water law (trawl_cable_water::DoorHydrodynamicForce, ClumpWeightHydrodynamicForce: no weight and buoyancy) at the caster's inflow, without waves, and the momentum deficit M = F·ê_U/(½ρ|U|²) of that force along the relative flow U, so a door's lift casts nothing; ρ the laws' kRhoWater, solidity 0.
The bodies are read when the caster asks, so a door added after the owner registered its BodyWake (by a TrawlCable that joins the solver in a later FinalSetup) is a body from the first update on. Every function is double only, has no side effects and never throws.