FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
0120 — LocalThroughFlow 60–80° drag angle dependence misses Rudi/Zhan
ID 0120
Class KNOWN-LIMITATION
Severity 2
Status blocked

Models: —

Found: 2026-10-20, feature m1-mare-ready-batch (closing MARE-0131, fhsim_marine_elements, resolved 2026-10-20)

Decision needed: Owner: a different law form (not one more harmonic of KF2012 Eq. 12) or a speed- or solidity-dependent angle factor is needed to fit the 60 to 80° drag of Rudi and Zhan and their speed trend. Which, and does the default law then change again (every inclined-panel baseline moves)?

Evidence

The default law LocalThroughFlow (and ScreenKF2012) has C_D(θ) = c_d [(1 − a3 − a5) cos θ + a3 cos 3θ + a5 cos 5θ], default a3 = 0.07, a5 = 0 (kf2012::DragAngleFactor, include/fhsim_environment/hydrodynamics/KF2012Common.h). Its drag falls off faster with θ above 45° than the data. These A6 tests are disabled for that reason, measured against tolerance, with the default law (a3 = 0.07, b4 = 0.036; the numbers are in the comments of the tests):

  • PanelLoadLaw_Rudi.DISABLED_L5_DragAngleDependence_LocalThroughFlow (tolerance 0.08 absolute): C_D(60)/C_D(0) = 0.395 against Rudi's 0.483 (Sn 0.130), 0.492 (0.144), 0.549 (0.184), errors −0.088, −0.097, −0.154; C_D(80)/C_D(0) = 0.126 against 0.276, 0.238, 0.231, errors −0.150, −0.112, −0.105. The Sn 0.317 net passes at every angle.
  • PanelLoadLaw_Rudi.DISABLED_L5_LiftAngleDependence_LocalThroughFlow (0.08): C_L(30)/C_L(45) = 0.897 against 1.000 (Sn 0.130, −0.103), 1.091 (0.144, −0.194), 1.000 (0.184, −0.103), 1.019 (0.317, −0.122); C_L(80)/C_L(45) = 0.319 against 0.455 (0.130, −0.136) and 0.636 (0.144, −0.317). The 60° rows pass with b4 = 0.036 (they failed by −0.130 with b4 = 0.10).
  • PanelLoadLaw_Zhan.DISABLED_L8_AngleRatios_LocalThroughFlow (0.10): the model's R60/R0 = 0.395 at every row, Zhan's is 0.377 to 0.579; errors −0.184 (s 0.223, 1.0 m/s), −0.149 (0.223, 0.75), −0.110 (0.223, 0.5), −0.119 (0.128, 1.0); R30/R0 = 0.805 against 0.674 (s 0.128, 0.75 m/s, +0.131). The twin NetValidation_TowedPanel_VALIDATION.DISABLED_S1_L8_AngleRatios in fhsim_marine_elements fails the same way (5 of 18 rows).
  • PanelLoadLaw_Zhan.DISABLED_L8_SpeedTrendAt30And60Deg_LocalThroughFlow (10 %): R60(0.5)/R60(1.0) errors +38.7 % (s 0.128), +31.7 % (0.215), +18.8 % (0.223); R30(0.75)/R30(1.0) +20.1 % (0.128), +16.7 % (0.215). The angle factor does not depend on speed, Zhan's inclined load grows more slowly with it. Twin: DISABLED_S1_L8_SpeedTrendAt30And60Deg (8 of 12 rows fail).
  • PanelLoadLaw_Consistency.DISABLED_L9_DefaultHarmonicsSatisfyL5AndL8: 17 of 66 checks fail (6 drag and 6 lift rows of L5, 5 rows of L8; 16 with b4 = 0.10). The least-squares refit a3 = 0.046, b4 = 0.050 fails as many.

RMS(model − data) of the drag ratio against Rudi / Zhan / Løland (tools/fit_angle_harmonics.py of fhsim_marine_elements, MARE-0131): default a3 = 0.07 gives 0.065 / 0.131 / 0.136; a3 alone refit (0.005) 0.062 / 0.121 / 0.093; the three-harmonic fit a3 = −0.009, a5 = 0.028 gives 0.051 / 0.121 / 0.089.

The three-harmonic refit (a3 = −0.009, a5 = 0.028, now opt-in with HydroA5, default 0) was tried as default under owner ruling R1 and withdrawn on 2026-10-20: it fixed none of the ten disabled A6 tests, and it moved C_D(45°)/C_D(0) from 0.61 to 0.68 (15 to 20 % above MF2022 Eq. 10 for N19a, N18b and N20b), which broke the MF2022 tests L1, L3 and L4 at 45° that pass with a3 = 0.07. So the owner kept a3 = 0.07 and made a5 opt-in. See MARE-0131 (fhsim_marine_elements, resolved) and doc/user/hydrodynamics.md Section 9 and 11.4.

Effect

Inclined net panels at 60 to 80° to the flow, such as the side panels of a cage and the steep panels of a trawl, take a drag that is too low against Rudi (by 0.09 to 0.15 of C_D(0) at 60 to 80° for Sn below 0.2) and against Zhan (R60/R0 too low by up to 0.18), and a load that does not follow the speed trend of Zhan's nets. The lift at 45° and the drag at 0° and 45° are within MF2022.

Possible fix

  • A different form of the angle factor with the same C_D(0) = c_d and C_D(90°) = 0, for example a form in cos θ and a power of sin θ, fitted to Rudi, Løland and Zhan together and still within MF2022 at 45°. More harmonics of Eq. 12 do not do it: the refit above fits the angle data only by leaving MF2022 at 45°.
  • Or a factor that depends on speed (Zhan's trend) and on solidity (Rudi's Sn 0.130 to 0.184 against 0.317), as ScreenMF2022 uses Sn for the lift.

Test that would prove it

The ten disabled A6 tests above (and the two S1 twins) enabled and passing with untuned tolerances, and the MF2022 L1, L3, L4 and the L2 drag tests still passing.

Risk

Changes the load of every inclined panel under the default law: every inclined-net baseline of fhsim_marine_elements moves again (regenerate with owner approval), and the validation pages (tests/plot_validation.py).