|
FhSim
3.1.0
Marine systems simulation
|
| 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)?
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.
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.
ScreenMF2022 uses Sn for the lift.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.
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).