|
FhSim
3.1.0
Marine systems simulation
|
Dated 2026-11-03, state of branch feature/coribo-structure.
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).
| 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 |
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.
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).