|
FhSim
3.1.0
Marine systems simulation
|
| ID | 0314 |
| Class | KNOWN-LIMITATION |
| Severity | 2 |
| Status | blocked |
Models: RbCable/Cable
Found: 2026-09-28, implementing owner ruling R104 (MARE-0313) on fix/deep-review-merged
Decision needed: Owner: should these models' rigid cable elements carry the normal added mass Ca rho A L (Ca = 1, circular cylinder, DNV-RP-C205 (2021) Table A-1) in their inertia, of the wet part (as R93 for fhsim_base Cable), and then take (1 + Ca) rho f V a_n instead of rho f V a_n?
src/trawl_mooring_interaction/TrawlCable.cpp:440-458 (and the other sections, MooringCable.cpp, RundDorg.cpp): the element inertia vec6 is the dry mass SpesificWeight * L and the dry cylinder's moments; the TrawlCable page says "The model has no added mass".src/RMCable/Cable.cpp:106: m_mass = m_length * m_weight, the dry mass; the page says "The
hydrodynamic load model does not currently support the effect of added mass".trawl_cable_water::InWaterForce (src/trawl_mooring_interaction/CableSegmentWaterForce.h) and RbCable::AddAboveSeabedLoad (src/RMCable/CableRMWaterLoad.h) add the Froude–Krylov force rho f V a_n only, so the excitation stays consistent with the inertia: an element of mass rho V follows the water normal to its axis (tests CableWaves.TrawlCableElementTakesTheFroudeKrylovForce, CableWaves.CableRMElementTakesTheFroudeKrylovForce).The added-mass reaction -Ca rho A L r''_n and the matching excitation Ca rho A L a_n are both missing. A steel warp (rho_c = 7900) has about 13 % too little inertia normal to itself; a rope near neutral buoyancy half the inertia it should have, in still water as well as in waves.
Add Ca rho A L f (I - N N^T) to each element's translational inertia (the constraint solver takes a 6 x 6 mass per body; the wet fraction f makes it state dependent), and (1 + Ca) in the excitation.
A neutrally buoyant element released in still water with a normal velocity: its deceleration by drag is halved; in a wave it follows the water normal to itself with the full Morison inertia term.
Changes every TrawlCable, MooringCable, RundDorg and RbCable/Cable result with element accelerations normal to the line, with or without waves.
TrawlCable, MooringCable and RundDorg are done (320f7b8, owner decision 2026-09-30): their warp, bridle, chain and rope elements are AddedMassRigidElements (src/trawl_mooring_interaction/AddedMassRigidElement.h) with the translational inertia m I + Ca rho V f (I - N N^T), Ca = 1, f the wet fraction re-evaluated at every step, and the wave excitation is the Morison inertia force (1 + Ca) rho f V a_n. StandardRigidElement already rotates a body-frame diagonal mass and forms its Coriolis term, so the body-frame mass (m + Ca rho V f, m + Ca rho V f, m) is all it takes. Not included: the change of f in time (no df/dt term in the Coriolis force), the trawl door and the clump weight, and the added moment of inertia about a transverse axis. Tests: CableWaves.CableElementInertiaCarriesTheAddedMassNormalToItsAxis and CableWaves.TrawlCableElementTakesTheMorisonInertiaForce; there is no run-level test of a released element's deceleration.
Not done: RbCable/Cable. Its dynamics (src/RMCable/Cable.cpp) hold one scalar mass m_mass: the Schur complement of the constraint solve (JMiJt, about fifteen entries of the form (j == k) / m_mass), the constraint acceleration and the accelerations vDot all divide by it. A normal added mass makes the translational inertia a 3 x 3 matrix per element, m I + m_a f (I - N N^T), whose inverse N N^T / m + (I - N N^T) / (m + m_a f) replaces each of them, with the Coriolis term that a rotating non-isotropic mass has. That is a rewrite of the solve, not a parameter, and without a reference it could not be checked here, so it is left for its own change. Until then RbCable/Cable keeps the Froude-Krylov force alone, which is consistent with its inertia.