|
FhSim
3.1.0
Marine systems simulation
|
| ID | 0131 |
| Class | KNOWN-LIMITATION |
| Severity | 2 |
| Status | blocked |
Models: hydrodynamics::LocalThroughFlow (default law), hydrodynamics::ScreenKF2012 (same angle form); both selectable by HydroModel on Net/NetStructure and Net/NetStructureWithConstraints
Found: 2026-09-27, WP-G4 (lead ruling R36 (d)), from MARE-0110 and the owner answer to OWNER_QUESTIONS Q11
Decision needed: Owner: the refit below (a5 and b6 added) improves the angle fits but cannot fix the 26–31 % lift deficit at 45° (see "Fit, 2026-09-30", point 2). Adopt the refit values as the new defaults (a change to every inclined-panel baseline, A12 approval), fit a solidity-dependent lift instead, or keep the two-harmonic form?
The owner answered Q11 on 2026-09-27 with the lead's recommendation: disclose the misfit now, and replace the angle form later as a separate work package (R36 (d)). The misfit itself is MARE-0110 (0110 — Default load law misses lift at high solidity and the angle dependence of Rudi, Løland and Zhan (A6 disabled tests)), with the full numbers. In short: the two-harmonic KF2012 Eq. 14 form, C_D(θ) = cd[(1 − a3) cos θ + a3 cos 3θ] and C_L(θ) = cl[sin 2θ + b4 sin 4θ] (kf2012::DragAngleFactor, kf2012::LiftAngleFactorPerSinCos, src/hydrodynamics/KF2012Common.h), gives CL(45°) 26–31 % below MF2022 Eq. 10 for N33a, N36a, N33b (L1) and an angle dependence at 60–80° weaker than Rudi (L5), Løland (L6) and Zhan (L8). The L9 least-squares refit (a3 = 0.046, b4 = 0.050) leaves 16 of 66 L5/L8 checks failing, the same as the defaults, so the form has too few terms: no a3, b4 pair fits.
Inclined panels of every net under the default law get too little lift at high solidity and wrong drag and lift at 60–80°: the deformed shape of a cage and the steep panels of a trawl. Disclosed in the methods manual (Sections 9, 11.4, 13) and the validation report.
The work package (not started; nothing is tuned meanwhile, R20):
Inflow::liftBasis), no division by sin θ.tests/PanelLoadLaw_Consistency_Test.cpp), over the A1 data in tests/data/: MF2022 Eq. 10 CD(45)/CD(0) and CL(45) for the eight Table 2 nets (mf2022_eq10_11.csv, mf2022_table2_nets.csv, mf2022_text_loads.csv), Rudi 1988 via KF2012 Fig. 5 (rudi1988_kf2012fig5_digitised.csv), Løland 1991 KF2012 Eq. 4 (loland1991_eq4.csv) and Zhan 2006 R30/R0, R60/R0 at K = 1 (zhan2006_planar_tables1-3.csv, zhan2006_nets.csv). Report the fitted a3, a5, b4, b6, their per-dataset values and the residuals; the new defaults are an owner decision.ScreenMF2022 does with Eq. 10) is the alternative if a constant third harmonic cannot fit N19a and N36a together; decide from the fit.ScreenKF2012{a3, b4} backwards compatible (a5 = b6 = 0 reproduces today's loads) and add HydroA5, HydroB6 parameters only if the owner wants them user-settable (contract C3 addition, lead review).Enabled and passing, untuned tolerances (R20):
PanelLoadLaw_MF2022.DISABLED_L1_Eq10LiftAtRn2000_LocalThroughFlow, DISABLED_L2_TextLiftAt1p75_LocalThroughFlow, DISABLED_L2_TextLiftAt1p75_ScreenMF2022, DISABLED_L4_LocalCdPlateauAt0Deg; PanelLoadLaw_Rudi.DISABLED_L5_DragAngleDependence_LocalThroughFlow, DISABLED_L5_LiftAngleDependence_LocalThroughFlow; PanelLoadLaw_Loland.DISABLED_L6_DragAtNormalIncidence_LocalThroughFlow, DISABLED_L6_LiftCoefficient_LocalThroughFlow; PanelLoadLaw_Zhan.DISABLED_L8_AngleRatios_LocalThroughFlow, DISABLED_L8_SpeedTrendAt30And60Deg_LocalThroughFlow; PanelLoadLaw_Consistency.DISABLED_L9_DefaultHarmonicsSatisfyL5AndL8 (L9 rewritten for the new parameters: the defaults satisfy L5 and L8).NetValidation_TowedPanel_VALIDATION.DISABLED_S1_L2_TextLiftAt1p75, DISABLED_S1_L8_AngleRatios, DISABLED_S1_L8_SpeedTrendAt30And60Deg.sfh::ad::Dual<18>.Scope caveat: three of the 11 are at or near normal incidence, where every normalised angle form gives C_D(0) = cd: DISABLED_L4_LocalCdPlateauAt0Deg (the Re trend of localCd at 0°), the C_D(0) part of DISABLED_L6_DragAtNormalIncidence_LocalThroughFlow, and DISABLED_L2_TextLiftAt1p75_ScreenMF2022 (ScreenMF2022, Eq. 10 itself). An angle form cannot make these pass; the work package reports them and the owner decides whether they stay disabled with this issue or move to their own.
Changes the load on every inclined panel under the default law, and so every regression baseline with an inclined net (A12, owner approval, Q16) and the validation pages (regenerate with tests/plot_validation.py). Adds law parameters (a contract C2 change, lead review first).
Owner decision 2026-09-30: run the least-squares fit and report; the defaults are not changed. The script is tools/fit_angle_harmonics.py (numpy only, reads tests/data/). Unweighted least squares on absolute ratio residuals, as L9; the datasets are the angle ratios alone (the magnitudes cd and cl are the law's, not the form's): Rudi 1988 via KF2012 Fig. 5 (24 drag and 16 lift points), Zhan 2006 R30/R0 and R60/R0 at K = 1 (24 points) and, as the Rudi fit of Løland, KF2012 Eq. 4 sampled at Sn 0.13, 0.18, 0.25 and 0.317 every 15 degrees (28 drag and 5 lift points). The Løland sampling is mine, not one of the repository's L6 tests.
| form | fitted | RMS(model - data): Rudi / Zhan / Løland |
|---|---|---|
| drag, default a3 = 0.07 | 0.065 / 0.131 / 0.136 | |
| drag, a3 only | a3 = 0.005 | 0.062 / 0.121 / 0.093 |
| drag, a3 and a5 | a3 = -0.009, a5 = 0.028 | 0.051 / 0.121 / 0.089 |
| lift, default b4 = 0.10 | 0.119 (Rudi) / 0.078 (Løland) | |
| lift, b4 only | b4 = 0.036 | 0.115 / 0.028 |
| lift, b4 and b6 (b2 = 1 + b6) | b4 = 0.054, b6 = 0.063 | 0.085 / 0.081 |
SchubauerLiftCoefficient). Closing it needs a different cl: the solidity-dependent lift of option 3 of the possible fix (as ScreenMF2022 uses MF2022 Eq. 10). The item's premise that "the form has too few
terms" holds for the 60–80° angle dependence (L5, L6, L8) but not for L1 and L2.