FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
0081 — NetCableElementTest still puts sphere and disk mass and weight on the wrong end and splits disk drag as −pos and 1 − pos (Windows only)
ID 0081
Class BUG
Severity 2
Status blocked
Models Net/NetStructureTest, Net/NetStructureABAQUS
Found 2026-09-25, independent review of the net fix batch (f54a717..1c6d4d2)
Decision needed Approve the result-changing fix, which cannot be compiled or tested on Linux: src/net/Test/ builds only when WIN32 is defined (src/net/CMakeLists.txt:8).

Evidence

MARE-0058 made the four compiled net cable elements put a sphere's or disk's mass, weight and drag on end A with weight 1 − pos and on end B with weight pos (pos measured from end A, where the appendage is drawn). The Windows-only NetCableElementTest, used by Net/NetStructureTest and Net/NetStructureABAQUS, still has the old convention in src/net/Test/NetCableElementTest.cpp:

  • CalcMassAndWeight, :517-518 (spheres) and :524-525 (disks): m_massInWater[0] += mass * pos, m_massInWater[1] += mass * (1 - pos); the weight in water at :536-537 and :543-544 the same. End A gets the fraction pos, the opposite of MARE-0058.
  • The disk drag, :348-349:

    force_disk_a += (0 - m_diskPos[disk])* ( coeffN * vel_t + coeffT * vel_n);
    force_disk_b += (1 - m_diskPos[disk])* ( coeffN * vel_t + coeffT * vel_n);

    The weights −pos and 1 − pos add up to 1 − 2 pos, not 1: a disk in the middle gives no net drag, and a disk at end A pushes end B.

The sphere drag (:321-322) already follows MARE-0058, since MARE-0071.

The same disk drag also keeps the areas and coefficients that MARE-0074 replaced in the compiled elements: D (D − d/π) face-on and the friction coefficient m_tangentialFrictionCoeffDisk on the edge area.

Effect

In Net/NetStructureTest and Net/NetStructureABAQUS, a sphere's or disk's mass and weight load the wrong end, and a disk's drag has the wrong total and the wrong split. A cable with an off-centre appendage gives different dynamics than the same net under Net/NetStructure.

Possible fix

Swap the end weights in CalcMassAndWeight to 1 − pos on [0] and pos on [1], and use (1 - m_diskPos[disk]) on force_disk_a and m_diskPos[disk] on force_disk_b, as NetCableElement does. Optionally align the disk areas and coefficient with MARE-0074.

Test that would prove it

On Windows, the tests/in/NetStructure/NetStructure_DiskDragOffCentre_in.xml scenario under Net/NetStructureTest: end A of the disk and sphere cables must carry 0.75 of the appendage's mass, weight and drag. See MARE-0031 for the missing Windows test coverage.

Risk

Changes every Net/NetStructureTest and Net/NetStructureABAQUS model with spheres or disks. The change cannot be compiled on Linux, so it would be unverified until built on Windows.