FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
Testing report

Dated 2026-11-03, state of branch feature/coribo-structure.

Entry points

FH_WITH_TESTS registers two ctest entries. Their executables are in the playpen bin folder of the build tree.

ctest entry Label Needs licence What it runs
fhsim_coribo unit no gtest executable test_fhsim_coribo, 187 cases
fhsim_coribo_integration integration yes (SFH_LICENSE_FILE) gtest executable test_fhsim_coribo_integration, one scenario

Without a licence the integration test fails with "Cannot find a valid licence file"; it is not skipped. One unit case is disabled (DISABLED_SameStateEvaluatedTwice_GivesTheSameDerivatives, kept as a record of CORIBO-0012).

Unit tests (<tt>test_fhsim_coribo</tt>)

Suite What it checks
GeometryToolsJacobian, GeometryToolsJdotV Hand-derived Distance Jacobians and J'v terms against finite differences, per geometry pair
GeometryToolsDistance Distance of a point to a segment, a disk and a ring against hand values
JointConstraintJacobian, JointTest Quaternion constraint Jacobian against finite differences; hinge and varying ball joint behaviour
ConstraintSolver, ConstraintSolverElements, ConstraintSolverIdempotence Pool ownership, kinetic energy, symplectic step under Euler_i and Heun_i, late elements, non-finite solution
RigidElementInertia Free element, added mass and a pendulum against closed-form motion
CollisionManager, Pairs/*, InternalFrictionContact Supported and unsupported shape pairs, contact distance, friction contact blocks
ConjugateGradient, EigenMatrixDefs, SparseMatrixBuilder*, PoolAndSystemSizes/* CG on small systems, V4ptr bounds, sparse product, island growth and shrink, indices past 32767
CoreBoundThreadPool Inline and worker execution, task exceptions, core binding
LineStructure, SupergridLineStructure, RingStructure, DiscreteElementMerge, CylinderElementTest, CableSegmentDensity, PointRetractableCable Structure set-up, element counts and positions, merge of orientations, cylinder forces, cable densities
WinchLoadTest, WinchPinTest, WinchInitFileInfo, WinchInitStates Winch pop of elements, reaction force against a pin, init-states file loading
WinchableCable, Values/WinchableCableBeta, SpacePartitioner Initial conditions, Beta and XML input guards, partitioner guard

Scenario <tt>WinchableCable</tt> (<tt>test_fhsim_coribo_integration</tt>)

FhSim runs the shipped example for 1 s (tests/in/WinchableCable). The test checks that the run reaches 1 s, that the six WinchForce columns are finite, and compares them with the baseline WinchableCable_ref.csv (winch reaction force every 0.1 s).

The compare is an absolute RMS of 1e-10 on values read from 7-digit CSV text. In effect the result must be equal in the 7 printed digits. The scenario is sensitive to CORIBO-0012 (the CG solve starts from the previous solution), so a change of that start guess can move the baseline.

Coverage gaps still open

  • SupergridWinchCable winding and unwinding has no unit test. A test needs a winch, an init-states file and a towing block.
  • Winch and the structure classes are tested only through the scenario, apart from the cases above.
  • WinchableCable has no SimObject-level Jacobian; the engine uses finite differences.

Reading guide: constraint-solver issues are in issues/; resolved ones that shaped these tests are CORIBO-0001 (no test), CORIBO-0002 (Jacobians unchecked) and CORIBO-0006 (point-disk sign).