FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
Wake parameters

The XML parameters of every SimObject that casts or receives wakes through environment::wake::BodyWake (contract C3), in one place. A SimObject's own documentation lists CastWake and refers here. They are read once, by ReadBodyWakeSettings(creator, kind) (include/fhsim_environment/BodyWake.h), which calls ReadWakeSettings (WakeSchedule.h), for a source set ReadSourceSetWakeSettings (WakeCaster.h), and ReadExternalWakeUpdate (ExternalWakes.h). What the schedule and the casters do with them is in Wakes.

Who reads what

Parameters A body (BodyWakeKind::Single: TestWakeBody, a sphere or disc with a shape caster, fhsim_marine_elements' Net/Disk, Net/Sphere, fhsim_base's Adaptive/CablePendulum (the ball), fhsim_fishery's Trawl/CenterWeight) A source set (BodyWakeKind::SourceSet: a net, TestWakeCluster)
CastWake and the common Wake* parameters (below) yes yes
WakeEvaluation, WakeLength, WakeGrid, WakeXStartFactor no yes
ExternalWakeUpdate yes yes

Every parameter is read whether or not CastWake is set, and the checks run only with CastWake. Without it, each one given in the input is logged once as "ignored: CastWake is not true" (ENV-0070, fhsim_marine_elements MARE-0335), since a receiver with, say, WakeUpdate="Periodic" would otherwise run without a word. ExternalWakeUpdate acts on every receiver, casting or not. The object's fluid density is not a wake parameter: it is the SimObject's own (Rho in the test models), handed to the BodyWake at construction.

The common parameters

Defaults by lead ruling R27 (choices, not fitted values); WakeIterations by owner ruling R130.

Parameter Default Meaning Setup error when
CastWake false Register and build the wake. –
WakeUpdate Freeze Off: one build at WakeBuildTime, never rebuilt (once more after a failed current lookup dropped the wake, ENV-0082). Freeze: a build at WakeBuildTime and up to WakeIterations more until converged, then frozen; re-armed when the source velocity or the ambient current at the source drifts, or the object moves away from its frozen wake. Periodic: a build every WakePeriod. not Off, Freeze or Periodic
WakeBuildTime 0 s Time of the first build (lead decision R51: keep 0). not finite
WakeIterations 4 Freeze: rebuilds after the first (owner ruling R130; 2 before). An N-row farm of casting structures needs N or more (owner ruling R121). negative
WakeIterInterval 5 s Freeze: time between those rebuilds. ≤ 0 or not finite
WakeTolerance 0.01 Freeze converges when the caster's change measure is below it: |ΔM|/M for a body or a source set without a private field; for one with a private field (a net) the larger of max|ΔR| at the sources and the |ΔM|/M of its lumped source (R121). ≤ 0 or not finite
WakePeriod 10 s Periodic: time between rebuilds. ≤ 0 or not finite
WakeRelaxation 1 Periodic: α in (0, 1], M = αM_new + (1 − α)M_old. outside (0, 1]
WakeBlendTime 2 s Smoothstep cross-fade of each rebuild; with 0, casters that rebuild in the same step see each other in PreOdeFcn order. negative, or above WakePeriod (Periodic) or WakeIterInterval (Freeze) (lead ruling R22)
WakeRearmTolerance 0.1 Freeze: drift of the filtered source velocity, or of the filtered ambient current at the source, relative to the relative flow speed at the freeze (at least 1 mm/s), that re-arms Freeze; a source velocity below it at the freeze is snapped to 0 (R50). ≤ 0 or not finite
WakeRearmDistance 0.1 Freeze: distance between the object's reference point and its frozen wake frame, as a fraction of √(frontal area), that re-arms Freeze (R50). ≤ 0 or not finite
WakeFilterTime 5 s Low-pass time constant of the source velocity and of the ambient current the re-arm watches; 0 does not filter. negative or not finite
WakeExpansion 0.05 Kernel expansion rate k (marenv contract C4). ≤ 0 or not finite
WakeCutoff 1e-3 (1) A source set's private grid: the deficit below which a footprint is truncated; not given, the grid's cutoff is sized from the number of sources (R48). (2) With CastWake: the receiver's cutoff tier of the other objects' wakes (owner decision R47); without CastWake that tier is 1e-4 and this parameter is ignored (and logged so). outside (0, 1)

The private field of a source set

Read by ReadSourceSetWakeSettings for BodyWakeKind::SourceSet only; they act on the object's private field (the shading of its own sources), not on the lumped wake the others see.

Parameter Default Meaning Setup error when
WakeEvaluation Grid Grid: the private field superposed once into a grid in the wake frame; Direct: the direct sum over the sources, the reference; None: no private field, the sources do not shade each other (ENV-0098). not Grid, Direct or None
WakeLength 0 m Grid reach beyond the object's rear source; 0 is the largest source diameter. negative
WakeGrid 0, 0, 0 Grid cells along the flow, across it and vertically; 0, 0, 0 sizes the grid from the sources at each rebuild (R48). a zero or negative count unless all three are 0
WakeXStartFactor 0.5 x_start = max(WakeXStartFactor·D, x_start,min) of each private source: no deficit closer downstream. A body's lumped wake always starts at its rear face (QF7) and does not read it. negative

Receiving

Parameter Default Meaning Setup error when
ExternalWakeUpdate Step Step: the other objects' wakes and the own private field are composed once per integrator step at the sample points, in PreOdeFcn, and held for the step (owner decision R46, R135, R136); Evaluation: composed live in every evaluation, the reference. See The wakes, once per step: ExternalWakeUpdate. not Step or Evaluation