The SimObject-level net validation of the net-hydrodynamics plan (tests S1-S7, MARE-0106): the nets of this library, end to end through the environment, against measurements. The panel load laws alone (tests L1-L9) are validated with their tests in fhsim_environment's Panel load laws: validation report (its doc/user/validation/). Every page is generated by tests/plot_validation.py from the reports the tests write to tests/out/, the gtest XML of the run and tests/data/*.csv; do not edit the pages by hand. Regenerate them whenever a law or the wake changes:
conan build . -c user.fhsim:test_tier=slow <options> # every ctest entry, incl. -L validation
python3 tests/plot_validation.py
Conventions (every table): for loads and coefficients the error is model / measured − 1; for ratios and localCd it is model − measured (absolute); the margin is tolerance − |error|, negative when the row is outside the tolerance. Each chart shows the error of every law or variant per case, the shaded band being the tolerance (a dashed outline marks a second tolerance). Hover a marker for its numbers.
Known misfit of the default law. The two-harmonic KF2012 Eq. 14 angle form of LocalThroughFlow misfits the angle dependence of Rudi, Løland and Zhan at 60–80° (fhsim_marine_elements_issue_0131); its lift at 45° follows MF2022 Eq. 10 since MARE-0110 (resolved 2026-10-13). The numbers and the reasons for every test still disabled are in Section 11.4 of fhsim_environment's doc/user/hydrodynamics.md (summary: 11.4 The default law's lift and angle form against the data (MARE-0110, MARE-0131)) and in fhsim_environment's Panel load laws: validation report (its doc/user/validation/). The SimObject-level tests that repeat a failing load-law test stay DISABLED_ as it does; nothing is tuned to pass them.
Generated 2026-10-22 from commit 54caab2 2026-10-22 (with uncommitted changes under src/ or tests/); tests run 2026-10-22T08:19:44.257 (main entry) and 2026-10-22T08:34:15.500 (VALIDATION entry).
Pages
Benchmark and downstream run
Disabled tests
Every DISABLED_ test in the library's two ctest entries, with the issue and owner question that keeps it disabled. IDs come from the test's doc comment and from open issues that name the test. "none open" marks a disabled test that names no open issue; its reason is then only the comment quoted here. Perf tests (SimObjectPerf.*, ctest label perf, run by hand on a quiet machine) are left out: they are disabled on purpose.
| Test | Source | Issues | Owner question | Reason (the test's comment, first sentence) |
NetStructure.DISABLED_CatsMode_NewNodesStartBetweenTheOriginalEndNodes_MARE0390 | NetSpec_Test.cpp:503 | MARE-0390 | – | – |
Removed tests
Removed in the 2026-10-22 test audit (owner ruling 2026-10-22): DISABLED_ tests that failed against the current laws and had no open issue. Their facts are kept here; git log -S on the test's name recovers the code.
- S3 drag at Sn 0.19 against KF2012 Fig. 14, 7 speeds, tolerance 20 %. Failed at 0.12 m/s only: 10.13 N against 8.1 N (+25.0 %); the other six rows -8.0 % to +10.3 % (2026-10-13, MF2022 Eq. 10 lift of MARE-0110; before it 10.13 N and -8.5 % to +10.2 %; before the twine friction of MARE-0111 10.03 N, +23.8 %, and -10.4 % to +9.0 %). Every model value lies above the measurement where it fails (tolerance 20 %). The default law's angle form is the open load-law item MARE-0131 (Q11); KF2012 find the same over-prediction for Sn 0.35 and 0.43 and attribute it to the angle harmonics a3, b4 (KF2012 section 3.3: -28 % drag for Sn 0.43 at 1 m/s from a3 = 0 to 0.1). At the lowest speeds the provisional E (still-water shape) and the Freeze schedule, whose round has not converged at Sn 0.35 and 0.43 when the loads are read, may add to it. Not tuned (R20).
- S3 drag at Sn 0.35, 7 speeds, tolerance 20 %. Failed at 0.26 m/s only: 71.4 N against 57 N (+25.3 %); the other six rows -3.3 % to +13.0 % (2026-10-13, with the MF2022 Eq. 10 lift, about 30 % higher at this solidity; before it 72.0 N, +26.3 %, and +2.6 % to +18.3 %; before MARE-0111 71.34 N, +25.2 %, and +0.3 % to +13.1 %). Every model value lies above the measurement where it fails (tolerance 20 %). The default law's angle form is the open load-law item MARE-0131 (Q11); KF2012 find the same over-prediction for Sn 0.35 and 0.43 and attribute it to the angle harmonics a3, b4 (KF2012 section 3.3: -28 % drag for Sn 0.43 at 1 m/s from a3 = 0 to 0.1). At the lowest speeds the provisional E (still-water shape) and the Freeze schedule, whose round has not converged at Sn 0.35 and 0.43 when the loads are read, may add to it. Not tuned (R20).
- S3 drag at Sn 0.43, 7 speeds, tolerance 20 %. Failed at 0.26 m/s, 84.1 N against 70 N (+20.1 %), and 0.93 m/s, 217.2 N against 173 N (+25.5 %); the other five rows -0.8 % to +16.4 % (2026-10-13, with the MF2022 Eq. 10 lift; before it four rows failed: 0.26 m/s 85.2 N +21.7 %, 0.65 m/s 192.7 N +20.5 %, 0.76 m/s 213.5 N +29.3 %, 0.93 m/s 244.3 N +41.2 %). The twine friction of MARE-0111 loads the cage walls parallel to the current; before it only 0.76 m/s (204.8 N, +24.0 %) and 0.93 m/s failed. Every model value lies above the measurement where it fails (tolerance 20 %). The default law's angle form is the open load-law item MARE-0131 (Q11); KF2012 find the same over-prediction for Sn 0.35 and 0.43 and attribute it to the angle harmonics a3, b4 (KF2012 section 3.3: -28 % drag for Sn 0.43 at 1 m/s from a3 = 0 to 0.1). At the lowest speeds the provisional E (still-water shape) and the Freeze schedule, whose round has not converged at Sn 0.35 and 0.43 when the loads are read, may add to it. Not tuned (R20).
- S1 MF2022 text lift at 1.75 m/s, tolerance 15 % (twin of the fhsim_environment A6 lift test). Failed on N19a: 102 N measured, 81.2 N from S1 (-20.4 %, ratio 1.256; 88.9 N before MARE-0110). N33a passed since MARE-0110 (owner ruling 2026-10-13, c_l from the MF2022 Eq. 10 lift-to-drag ratio): 271 N measured, 243.5 N (-10.2 %; was 193.6 N, -28.6 %). MF2022's text lift for N19a lies above its own Eq. 10 trend, which the law now follows. S1 includes the in-plane twine friction (MARE-0111); A6 has 247.1 N and 83.5 N. Unchanged by the revised R1 (MARE-0131, 2026-10-20, lift b4 = 0.036: both cases are at 45 deg, where sin 4 theta = 0) and by option O1 for the drag (ENV-0120, 2026-10-21): N19a 81.2 N, -20.4 %.
- S1 Zhan angle ratios R30/R0 and R60/R0, tolerance 0.10. Failed (angle form, MARE-0131; drag only, unchanged by MARE-0110). S1 R60/R0 = 0.401-0.404 against Zhan's 0.377-0.579 (A6 without the twine friction: 0.395); errors -0.176 (s 0.223, 1.0 m/s), -0.142 (0.223, 0.75), -0.103 (0.223, 0.5), -0.136 (0.128, 0.25), -0.110 (0.128, 1.0); R30/R0 0.808 against 0.674 (s 0.128, 0.75 m/s, +0.134) and 1.307 (s 0.128, 0.25 m/s, -0.499): 7 of 24 rows. 2026-10-20 after the revised R1: 5 of 18 rows. 2026-10-21 with option O1 (ENV-0120, a3 = 0.017, a5 = 0.053, fhsim_environment 3.2.12): 1 of 18 rows, R60/R0 of the net s 0.215 at 0.5 m/s, model 0.481 against 0.377 (+0.104; the R60 row of s 0.223 at 1.0 m/s is -0.097). The owner accepts these near-misses (ENV-0120).
- S1 Zhan speed trend at 30 and 60 deg, tolerance 10 %. Failed: the inclined trend is close to the 0 deg trend while Zhan's R30 and R60 grow faster with speed. Owner ruling 2026-10-20 (ENV-0120): the trend comes from the net deforming in Zhan's frame, not from the panel law; FhSim models deformation in the structure, so a speed term in the law would count it twice. Errors R60(0.5)/R60(1.0) +38.3 % (s 0.128), +31.4 % (0.215), +18.6 % (0.223); R30(0.75)/R30(1.0) +20.1 % (0.128), +16.7 % (0.215): 13 of 24 rows (A6 without the twine friction: +38.7 %, +31.7 %, +18.8 %, 12 of 24). Re-run 2026-10-20 (revised R1) and 2026-10-21 (option O1): 8 of 12 rows fail, the speed trend does not depend on the angle form.
- S2 drag ratio with and without the wake against Rc/Rc_planar, tolerance 10 %. Failed: the model's wake lowers the cylinder drag by 7-15 %, Zhan's measurement is 18-35 % below their planar-derived prediction. Red run (K 1, k 0.05, v >= 0.5 m/s), model on/off: s 0.223 0.864/0.731 (+18.2 %), 0.868/0.722 (+20.2 %), 0.866/0.706 (+22.7 %); s 0.128 0.915/0.765 (+19.5 %), 0.922/0.820 (+12.4 %), 0.926/0.810 (+14.2 %); s 0.215 0.849/0.691 (+22.9 %), 0.862/0.659 (+30.8 %), 0.869/0.653 (+33.1 %) at 0.5/0.75/1.0 m/s. The deficit behind a panel is the pinned kernel's d_near = 1 - sqrt(1 - C_T) (MENV-0007, Q8): the mean flow ratio over the rear half is 0.85-0.93 (W9) where Zhan infer 0.69. The wake-off drag (41-75 N at 1 m/s) is also below Zhan's planar-derived 52-101 N: the side panels carry only twine friction under the screen laws (MARE-0111, Q13) and the default law's angle form differs (MARE-0131, Q11). Not tuned (R14, R20).
- W9 rear-half flow ratio for the net s 0.128, band up to 0.92. Failed at the upper edge: mean flow ratio over the rear half at caster level (MARE-0132) 0.9079, 0.9159, 0.9222, 0.9265 at 0.25-1.0 m/s against 0.92 (KF2012 Eq. 15), so 0.75 and 1.0 m/s are 0.002 and 0.007 above it (before phase F, flow probes: 0.909, 0.917, 0.923, 0.928). The pinned kernel's near-wake deficit is the quantity (MENV-0007, Q8); band and kernel not changed (R14). W9 for s 0.223 and 0.215 is asserted and passes.
- Grid against Direct on the pre-R48 default grid 96 x 48 x 48, from x = 4 m, max|dd| < 0.01. Failed (W5 of marenv, Q12, MENV-0008): the lateral cells are 0.24 m, above the near-wake width sigma ~ 0.2 D = 0.16 m, and the conservative deposit widens the wake to 0.6 cells; max|dd| 0.032 at x = 4-5.5 m and 0.015 at x = 6-20 m. That grid was the owner's choice after the B6 benchmark (Q12, 2026-09-27); since R48 an unset WakeGrid is sized from the panels. Grid 96 x 96 x 96 from x = 6 m is asserted (NetWake.GridAgreesWithDirectOnASmallNet).
- Grid refinement diagnostic and rebuild/query timing. Printed numbers only, no assertion (near-wake error falls with the lateral cell size; cost of a rebuild and of a flow query, B6). The numbers are in the benchmark page.
- R48 private grid against Direct, cage wall and trawl cone at 10^3 and 10^4 panels. Diagnostic of owner decision R48 (wake-performance review A5); results are the table in the user manual section on the wake grid (main_marine_elements.md).
- Characterisation harness C1 to C7 (batch B0 of the follow-up plan). Run by hand: scenes of the nets' and bodies' wake coupling (square net wakes off, with waves, Grid/Freeze, Direct/Periodic, disk + two nets + sphere, NetStructureWithConstraints under Freeze, the example trawl) dumped states, filtered log lines, wake rebuild counts, right-hand side and analytical Jacobian in hexadecimal floating point, to diff before and after a refactoring that must not change results. The refactorings are done; the harness and its scenes (tests/in/Characterisation) are removed. C8 and C9 stay in fhsim_environment.