|
FhSim
3.1.0
Marine systems simulation
|
| ID | 0121 |
| Class | BUG |
| Severity | 1 |
| Status | blocked |
Models: — (annotated on the fhsim_environment library group)
Found: 2026-10-20, hydrodynamics overview section 7 (doc/hydrodynamics-overview.md in fhsim_workspace), feature m2-hydro-doc-gaps
Decision needed: Owner: share one lower Reynolds bound for KF2012 Eq. 10, and which (10^1.5 = 31.62 as in the screen laws, or 32 as in TwineCrossFlow)? Moving TwineCrossFlow to 31.62 changes its result for Re in [31.62, 32) (see Effect).
The same KF2012 Eq. 10 polynomial (panel_formulas::CylinderDragCoefficient, shared since MARE-0155) is clamped at two lower bounds:
include/fhsim_environment/hydrodynamics/KF2012Common.h:44: const double kMinReynolds = 31.622776601683793; (10^1.5), used by ScreenKF2012, ScreenMF2022 and LocalThroughFlow.include/fhsim_environment/hydrodynamics/TwineCrossFlow.h:102: const double kMinReynolds = 32.0;, with the doc comments at :16, :44, :49 and :219 saying "32 <= Re <= 10^4".Both cite KF2012 p. 223. The bound was not shared when the polynomial was (MARE-0155).
C_D,cyl is 1.765 at 31.62 and 1.758 at 32 (0.4 % apart). Only twine Reynolds numbers in [31.62, 32) are affected: TwineCrossFlow holds C_D at the 32 value there, the screen laws do not. For a 1 mm twine at nu = 1.19e-6 m²/s that is a normal speed of about 3.8 cm/s. The change in the force is at most 0.4 % in that narrow band and zero elsewhere. Flag bit 1 (Re clamped) would also change in that band.
Put kMinReynolds and kMaxReynolds in PanelFormulas.h next to CylinderDragCoefficient and use them in both places. Choose 31.62 (the polynomial's stated fit range start, and the value used by most laws). Update the four comments in TwineCrossFlow.h and doc/user/hydrodynamics.md. Re-baseline any TwineCrossFlow result whose Re falls in the band (run tools/compare_results.py; expected none in the shipped cases).
A test that evaluates both law families at Re = 31.8 and checks the same C_D,cyl, and that the clamp flag is set for Re < 31.62 in both.
Low. Tiny result change in a narrow band; needs the owner's choice of bound.