|
FhSim
3.1.0
Marine systems simulation
|
| ID | 0080 |
| Class | BUG |
| Severity | 3 |
| Status | blocked |
| Models | Net/NetStructureArray |
| Found | 2026-09-25, building the MARE-0066 fixture |
| Decision needed | Approve the result-changing fix: add each cable element's end masses (NetCableElement::m_massInWater, as Net/NetStructure does at NetStructure.cpp:281) to the node inertia. |
src/net/NetStructureArray.cpp, CreateDataStructures (about :1090-1108), zeroes m_inertia and adds only 20 kg (kInertiaFromExternalLines) to each node with a force input. The panel loop (about :1060) adds the panel mass. No line adds the cable elements' mass, although NetCableElement::CalcMassAndWeight computes it (m_massInWater), and the cable weight is applied as a force.
A node that belongs only to cable elements and has no force input has zero inertia, and CalcStateDerivatives divides by it: its acceleration is NaN and the run fails. A one-cable Net/NetStructureArray whose lower end has no force input gives NaN at the first step. Nodes that do have mass from panels or input ports get the cable weight but not the cable mass, so heavy cables fall too fast.
Add, for each cable element, m_massInWater[0] and [1] to the inertia of its two nodes, as Net/NetStructure does in its data-structure setup.
tests/in/NetStructureArray/NetStructureArray_MaxAcceleration_in.xml without N2 in NodeInputs: the run must give finite output, and N2 must sink at the cable's g (ρ − ρ_w) / (ρ + ρ_w) when the cable is heavy.
Changes the results of every Net/NetStructureArray model with cable elements.