|
FhSim
3.1.0
Marine systems simulation
|
| ID | 0109 |
| Class | KNOWN-LIMITATION |
| Severity | 1 |
| Status | blocked |
Models: —
Found: 2026-10-12, feature wake-casting-trawl: fhsim_marine_elements' TrawlCableWakes fixture (300 s) and fhsim_fishery's SteadyTow with CastWake.
Decision needed: what Freeze should do with an object that never reaches a steady state (oscillating doors, a rig in waves): hold the non-converged freeze, widen the re-arm test, or recommend (or default to) Periodic for such objects.
src/environment/WakeSchedule.cpp:230-237 (FreezesAfter): a round freezes when the change measure is below WakeTolerance (0.01) or after 1 + WakeIterations (4) rebuilds, WakeIterInterval (5 s) apart (:294-296); the exhausted case logs :316-317.Due (:125-133): the filtered source velocity u_s or the filtered ambient current at the source drifting by more than WakeRearmTolerance (0.1) of the relative flow speed at the freeze (:143-173), or the mean position moving more than WakeRearmDistance × √(W·H) from the frozen frame (:175-188). Rearm (:222-228) starts a new round at once.Freeze degenerates into a rebuild roughly every WakeIterInterval, each with a WakeBlendTime blend, with about 60 rebuild, freeze and re-arm lines each in 300 s: the cost and the log of Periodic with a 5 s period, without its predictability. The wakes are as current as a 5 s Periodic schedule would make them, so results are plausible; the log is noise.
WakeUpdate="Periodic" for oscillating objects in doc/user/wake-parameters.md, or let a consumer such as the trawl rig default to it.A TestWakeBody or TestWakeCluster whose velocity oscillates by ±20 % with a 10 s period, WakeUpdate="Freeze", 300 s: the number of rebuilds stays bounded (option 1) and the log holds at most a few re-arm lines.
Option 1 keeps a stale wake longer for an object that really changes its operating point during an oscillation; option 2 changes the results of consumers that switch.