FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
Marine_elements Overview

SimObject Elements such as nets, cables etc. The set of available SimObjects can be found in modules. Known review issues are listed in Review issues — fhsim_marine_elements. Test coverage and Jacobian verification are summarised in Testing report. The theory of the net panel load laws is fhsim_environment's page Hydrodynamics: shape and panel load laws (doc/user/hydrodynamics.md), where the laws live; how the nets and bodies here cast their wakes is in Net hydrodynamics: methods manual. The validation of the nets against measurements, with every disabled test and its issue, is in Net hydrodynamics: SimObject-level validation report; the laws alone are validated in fhsim_environment's Panel load laws: validation report. What an input written for 2.0.0 or the 3.x development tags has to change for 3.0.0 is in Migrating to 3.0.0. The parameters and the net definition file that Net/NetStructure and Net/NetStructureWithConstraints share (their net core) are in Net core: shared parameters and net file format.

Net hydrodynamics: user guide

Since 3.0 the two triangular-panel net structures, Net/NetStructure and Net/NetStructureWithConstraints, compute each panel's hydrodynamic load with one interchangeable load law, at a solidity the structure defines, from the free-stream velocity the environment supplies at the panel centroid: the current, the waves and the wakes of other structures, minus the panel velocity. Net/NetStructure and Net/NetStructureWithConstraints can also cast their own wake into the environment, where every other SimObject that asks for a water velocity sees it as one lumped source; Net/Disk and Net/Sphere can too. This section tells you how to choose and set these up. The equations of the laws are in fhsim_environment's doc/user/hydrodynamics.md, those of the wakes in Net hydrodynamics: methods manual, the vocabulary in CONTEXT.md, and the reasons in doc/adr/.

The parameters below are read by both structures unless a table says otherwise. Every parameter is optional. The full per-SimObject tables are on each SimObject's page.

Load law and fluid

Parameter Unit Default Read for Meaning
HydroModel – LocalThroughFlow all laws LocalThroughFlow, ScreenKF2012, ScreenMF2022 or TwineCrossFlow. Any other name is a setup error.
HydroA3 – 0.07 (LocalThroughFlow), 0 (ScreenKF2012) LocalThroughFlow, ScreenKF2012 Third drag harmonic a3 of KF2012 Eq. 14. From −0.125 to 0.25, else a setup error: above it the drag turns negative at grazing angles (trawl panels nearly along the tow, cage side panels at 75–90° to the current), below it C_D is no longer largest at normal incidence (MARE-0208). A value that is not finite is a setup error.
HydroB4 – 0.10 (LocalThroughFlow), 0 (ScreenKF2012) LocalThroughFlow, ScreenKF2012 Fourth lift harmonic b4 of KF2012 Eq. 14. Within −0.5…0.5, else a setup error: beyond it the lift changes sign near 0° or 90°.
HydroInduction bool false ScreenKF2012 Apply the MF2022 induction factor f = (1 + r)/2. LocalThroughFlow always applies it.
Rho kg/m³ 1025 all Water density, for the panel loads and the panels' weight in water and inertia, and for the cable elements' weight in water, drag and (NetStructure, NetStructureWithConstraints) inertia.
Nu m²/s 1.19e-6 all Kinematic viscosity, for the panel Reynolds number.
Ct_nominal – 0.01 TwineCrossFlow Tangential drag coefficient of the bars, multiplied by π.
CnKnots_nominal – 0.4 TwineCrossFlow Knot drag coefficient on the knot area πd_k²/4.
knotDiameterRatio – 2 all Knot diameter d_k as a multiple of the twine diameter BarD. TwineCrossFlow: the knot drag and the twine length L₀ − d_k that takes normal drag. Every law, on a panel with bar data: the twine length L₀ − d_k of the in-plane twine friction (MARE-0111). Read by NetStructure and NetStructureWithConstraints.

A parameter is read only for the law that has it; ScreenMF2022 has none. The TwineCrossFlow names are those of the constants the 3.x twine model used, so 3.x inputs that set them keep working.

Solidity

Parameter Where Unit Default Meaning
SolidityModel main file – MeshOpening MeshOpening: Sₙ = K·t/(L₀ sin φ cos φ), with t = BarD, L₀ = BarL and φ the half opening angle of the deformed panel, so it follows the deformation. Fixed: a constant per panel, the net file's Sn, else Solidity. Any other name is a setup error.
KnotFactor main file – 1.0 MeshOpening: the knot factor K, the ratio of the true solidity to the twine-only 2t/s.
Solidity main file – none Fixed: the solidity of every panel without an Sn attribute. Fixed with neither is a setup error.
Sn each El<n> of the net file's NetElements – none Fixed: the panel's solidity, overriding Solidity. Panels refined from it inherit it. Ignored by MeshOpening.

Wake casting

Read by Net/NetStructure and Net/NetStructureWithConstraints (both through fhsim_environment's ReadSourceSetWakeSettings; the list with every check is its doc/user/wake-parameters.md). Net/Disk and Net/Sphere read the same parameters except WakeEvaluation, WakeLength, WakeGrid and WakeXStartFactor (fhsim_environment's ReadWakeSettings). The defaults are choices approved by the programme lead, not fitted values (lead ruling R27). Without CastWake every one of them given in the input except ExternalWakeUpdate is ignored, and the log names each with "ignored: CastWake is not true" (MARE-0335, fhsim_environment ENV-0070).

TrawlCable (the one that owns the solver) and RundDorg read the parameters of a source set too (3.0.2, feature wake-casting-trawl): with CastWake they cast the wakes of the trawl doors and clump weights in their solver, one disc source per body of its projected area (door √(L·W/π), clump weight √(2rL/π)) whose momentum deficit is its hydrodynamic force along its relative flow (lift casts nothing). The doors and clump weights never see their own lumped wake; a door or clump weight can see its own source in the private field once it overtakes its frozen wake (the field moves at the source velocity of the last rebuild; fhsim_environment src/environment/WakeCaster.h, "What the caster leaves out"). Every cable segment in the solver (warps, bridles, the TrawlCables that join it, MooringCables) receives as the owner: it sees the private field of the doors and clump weights, never their lumped source; other objects (a net) see only the lumped source. WakeEvaluation is Direct unless given (owner ruling 2026-10-12, as for a WakeGroup), not a source set's Grid. With WakeEvaluation="Grid" the private grid reaches WakeLength beyond the rearmost body (one source diameter by default; the clump weights at the bridle ends are a rig's rearmost bodies); Direct has no such reach. A TrawlCable that joins another one's solver ignores its own wake parameters and ExternalWakeUpdate and logs each one given.

Parameter Unit Default Meaning
CastWake bool false Register the object's lumped wake in the environment under the SimObject's name, and rebuild it (and a net's private field) on schedule.
WakeUpdate – Freeze Off: one build at WakeBuildTime, never rebuilt (once more after a failed current lookup dropped the wake, ENV-0082, MARE-0339). Freeze: rebuilt while the net deforms, then held. Periodic: rebuilt every WakePeriod.
WakeEvaluation – Grid (TrawlCable, RundDorg: Direct) The net's private field, which only its own panels and cables sample: Grid: the sources are superposed once into a grid (a query costs one interpolation). Direct: a direct sum over the panels, the reference, for small nets. None: no private field, the panels do not shade each other, and the lumped source is that of the unshaded panel forces (fhsim_environment ENV-0098). Other objects see the lumped source either way.
WakeBuildTime s 0 Time of the first build. The default stays 0 (lead decision R51): a build on the undeformed net is followed by rebuilds while it settles, and the snap and distance re-arm of WakeRearmDistance keep the frozen wake with the net; a time when the net has settled (the cage example uses 20 s) saves those rebuilds.
WakeIterations – 4 Freeze: rebuilds after the first while the net deforms (owner ruling R130; 2 before). An N-row farm of casting structures needs N or more (owner ruling R121; see Schedule below), so the default covers up to four rows.
WakeIterInterval s 5 Freeze: time between those rebuilds.
WakeTolerance – 0.01 Freeze: the wake is frozen once the change between two rebuilds is below this: for a net the larger of the largest change of the velocity ratio r = 1 − d of its private field at a panel centroid and the relative change |ΔM|/M of its lumped source (owner ruling R121); for a Disk or Sphere |ΔM|/M. A round that runs out of WakeIterations is logged "without converging".
WakePeriod s 10 Periodic: time between rebuilds.
WakeRelaxation – 1 Periodic: relaxation α in (0, 1] of each panel's momentum deficit and of the lumped source's, α M_new + (1 − α) M_old.
WakeBlendTime s 2 Duration of the smooth cross-fade from the old wake to the new at each rebuild. A setup error when above WakePeriod (Periodic) or WakeIterInterval (Freeze).
WakeRearmTolerance – 0.1 Freeze: drift of the source velocity, or of the ambient current at the structure, from its value at the freeze, relative to the mean relative flow speed then (at least 1 mm/s), that re-arms Freeze (logged).
WakeRearmDistance – 0.1 Freeze: distance of the structure's reference point (a net's area-weighted mean node position, a body's centre) from its frozen wake frame, as a fraction of its size √(frontal area), that re-arms Freeze (logged). At the freeze a source velocity below WakeRearmTolerance of the flow is snapped to 0, so a moored cage's frozen wake stays in place (owner ruling R50).
WakeFilterTime s 5 Time constant of the low-pass filter on the node velocities (a body: its velocity) that gives the source velocity, and on the ambient current the re-arm watches; 0 does not filter.
WakeLength m 0 Grid: reach of the private field's grid beyond the net's rear panel; 0 is the largest panel diameter, so the grid covers the structure. It does not change the wake other objects see (before phase F it did, and 0 was five times the net's size).
WakeGrid cells sized Grid: cells along the flow, across it and vertically. When not given (or 0, 0, 0) the grid is sized from the panels (owner decision R48): cells at most 2 mean panel disc diameters along the flow and 0.75 across it, at least 96, 48, 48, at most 4·10⁶ cells, and a margin of 2 largest panel diameters beyond the outermost centroids across the flow. Given, the cells are as given and the lateral margin is 3 far-wake widths, as before R48. The rebuild line in the log names the cells.
WakeExpansion – 0.05 Wake expansion rate k of the kernel, σ/D = k x/D + ε.
WakeXStartFactor – 0.5 The kernel starts x_start = max(WakeXStartFactor·D, 0.02 m) downstream of each panel, D the diameter of a disc of the panel's area; it ramps in by a smoothstep over 0.079 D behind x_start, to the full kernel at the Eq. 11 meter 0.579 D for the default (fhsim_environment, owner ruling R-b), instead of switching on as a step.
WakeCutoff – sized Two roles. (1) Grid: deficit below which a panel's wake footprint is truncated in a net's private field. When not given, min(1e-3, 0.1/N) for N panels (owner decision R48): 1e-4 at 10³ panels, 1e-5 at 10⁴. A lumped wake has no grid. (2) With CastWake, for nets, Disk and Sphere alike: the receiver cutoff tier of the other objects' wakes (owner decision R47): each step a registered field whose deficit stays below it at the object's points is left out; when not given 1e-3. Without CastWake the tier is 1e-4 and this parameter is ignored. A Direct net uses role (2) only.
ExternalWakeUpdate – Step When the other objects' registered wakes and a net's own private field are composed at the panel centroids, cable midpoints and body centres: Step once per integrator step in PreOdeFcn (after the object's own rebuild), held for every RK stage and Jacobian evaluation of the step (owner decision R46, owner ruling R135; about 1e-4 relative against live; during a rebuild blend the held samples take the blend weight of each evaluation's time, owner ruling R136; Euler_i and StableSolver_i evaluate at the take and are unchanged); Evaluation in every evaluation, the reference. The ambient current and the waves stay live. Read by every object above, casting or not, and by every cable SimObject (Cable/LumpedMass, Cable/Branched, RbCable/*, TrawlCable, RundDorg; MARE-0223), whose element midpoints receive the other objects' wakes this way at the non-casting tier 1e-4.

Choosing a load law

Law Velocity it works on Coefficients from Solidity it assumes Re dependence Load in the panel plane
LocalThroughFlow (default) arrival velocity Uₙ = f·U∞, f = (1 + r)/2 KF2012 screen model with the MF2022 induction factor; level anchored to MF2022 image-measured yes (KF2012 Eq. 10) none
ScreenKF2012 U∞ (Uₙ with HydroInduction) KF2012 Eqs. 9–14 projected area, S_c = 2t/s − (t/s)² yes none
ScreenMF2022 U∞, induction included in the coefficients MF2022 Eq. 10, the Rn = 2000 fit image-measured; fitted for 0.18–0.36 none none
TwineCrossFlow the flow along and across each bar the twine cross-flow model of FhSim 3.x, with the cylinder polynomial held outside 32 ≤ Re ≤ 10⁴ (R58) twine geometry; Sₙ only sets the speed-up yes, per bar bar friction and cross-flow drag

Cages. Use the default, LocalThroughFlow, with a solidity that matches its assumption (image-measured, or 2t/s with a knot factor; see below). Its drag at normal incidence is within −7 to +7 % of MF2022, the anchor dataset (ADR 0005), and it keeps the Reynolds dependence that ScreenMF2022 lacks. ScreenMF2022 reproduces MF2022 Eq. 10 directly; use it inside its fit range and near its Reynolds number (it underpredicts at model scale, Rn of a few hundred). ScreenKF2012 without induction reproduces the KF2012 paper, and lies +16 to +27 % above MF2022 at normal incidence.

Trawls. The default, LocalThroughFlow, is the law for trawls as well (owner answer to Q17, 2026-09-27); no trawl measurements are at hand to choose another. Most of a trawl's netting lies at small angles to the flow. Every KF2012 Eq. 14 harmonic carries cos θ, so the screen laws' own load vanishes at θ = 90°; since MARE-0111 (resolved) they add TwineCrossFlow's twine friction in the panel plane (methods manual § 3.1), but not its cross-flow drag on the bars. On one panel at 80° and 0.5 m/s, LocalThroughFlow gives 72.5 % less force than the 3.x twine model (74.3 % less without the friction), and TwineCrossFlow 25 % less (MARE-0111, MARE-0094). An upright panel heavier than water now sinks edgewise at a terminal speed under the default law (0.58 m/s on the FreeDrift panel, against 0.088 m/s under TwineCrossFlow). TwineCrossFlow with KnotFactor="1.1" reproduces the 3.x force at normal incidence.

Be aware of the open findings before you rely on a result:

  • Lift and angle dependence of the default law (fhsim_marine_elements_issue_0110; disclosed by owner decision 2026-09-27, the replacement angle form is 0131 — Default law: replace the two-harmonic angle form with three harmonics, refitted to MF2022, Rudi, Løland and Zhan). At 45° the lift of LocalThroughFlow is 26–31 % below MF2022 for the high-solidity nets. Its angle dependence at 60–80° is weaker than Rudi 1988, Løland 1991 and Zhan 2006 show, and refitting a3 and b4 does not remove the misfit: the two-harmonic form itself misfits. 11 validation tests stay disabled until it is replaced. This affects inclined panels, so the deformed shape of a cage more than its drag.
  • Only twine friction in the panel plane (MARE-0111, resolved by owner decision): the screen laws add TwineCrossFlow's friction term (c_t π, on the actual bars) for flow along the netting, but not the bars' in-plane cross-flow drag; a panel evaluated without bar data gets none. For a cage this adds up to 7 % drag at 0.93 m/s in the Lader validation (Validation: Lader 2009 cages (S3, S4)).
  • Velocity ratio clamped at low solidity (MARE-0109, resolved by owner decision). MF2022 Eq. 11, r = 1.08 − 0.97·Sₙ, exceeds 1 below Sₙ ≈ 0.0825; r is clamped to 1 there and PanelLoad::flags bit 3 is set, so LocalThroughFlow (and ScreenKF2012 with HydroInduction) is KF2012 without induction for such open netting. This is far outside MF2022's range of 0.18–0.36.
  • Unstretched bar length in the mesh-opening solidity (MARE-0113, closed as won't fix by the owner). MeshOpening uses the unstretched L₀ and t: stretching also thins the twine, so the owner keeps both unstretched. The laws load the deformed panel area, so at a fixed φ the load grows with the square of the bar stretch. Net/NetStructure's twine tension keeps bars near L₀. Net/NetStructureWithConstraints panels have no tension; there a slack panel with bars at 0.8 L₀ gets 36 % less drag.
  • ScreenMF2022 outside its fit range warns at setup (HydroModel parameter message) and extrapolates. Below Sₙ = 0.1005001 the angle fit of its Eq. 10 polynomials gives a negative C_D over part of 45°–90° (and below 0.0789 at 45° itself), so the law clamps Sₙ into [0.1005001, 0.5] (owner decisions on Q5 and QG1, MARE-0130); C_D(θ) ≥ 0 at every θ.

Supplying the solidity

Solidity moves the load as much as the choice of law, and the laws never compute it (ADR 0003). Give the value the law's coefficients assume: image-measured for LocalThroughFlow and ScreenMF2022, the projected area S_c for ScreenKF2012. Feeding 2t/s to a law fitted to image-measured solidity gives too low a load.

From an image-measured solidity Sₙₘ (backlit photographs, knots included, as MF2022 measured it):

  • SolidityModel="Fixed" with Solidity="<Sₙₘ>", or per panel with Sn in the net file. The solidity then stays constant whatever the panel's deformation. This is the right choice when the netting keeps roughly the mesh opening it was measured at.
  • Or SolidityModel="MeshOpening" with the knot factor that reproduces Sₙₘ at the mesh opening φₘ it was measured at: K = Sₙₘ·L₀ sin φₘ cos φₘ / t, which is K = Sₙₘ/(2t/L₀) at φₘ = 45°. The solidity then follows the deformation.

From twine diameter and mesh size (2t/s with a knot factor K): SolidityModel="MeshOpening" (the default), with the twine diameter t in BarD, the bar length (mesh side) s in BarL, and KnotFactor="<K>". At φ = 45° this gives Sₙ = K·2t/s. K = 1 (the default) is the twine-only estimate, right for knotless netting. MF2022 found image-measured solidity 2–27 % above 2t/s: K of about 1.08–1.11 for most of their nets and 1.16–1.23 for super-knot netting. The 3.x twine model had an implicit K = 1.1.

Knot factors from MF2022 Table 2 must be converted (lead ruling R18). This library defines K against 2t/s. MF2022 define theirs against the cylinder solidity S_c = 2t/s − (t/s)² (MF2022 Eq. 2), so Sₙₘ = K_MF·S_c = K_MF·(1 − t/(2s))·2t/s, and

K = K_MF · (1 − t/(2s))

For N33a (t/s ≈ 0.148) MF2022's K = 1.21 becomes K ≈ 1.12.

The laws clamp Sₙ into their valid range (KF2012-based laws and TwineCrossFlow: [1e-4, 0.5]; ScreenMF2022: [1e-3, 0.5]) and flag it in the panel load; MeshOpening itself is unbounded at a closed mesh (φ → 0 or 90°).

Casting a wake

Turn on CastWake when another structure, a probe, a cable or a body lies downstream of the net, or when the net's own rear panels lie in the wake of its front panels (a cage's rear wall, the aft part of a trawl). A panel never sits in its own wake: the kernel starts x_start downstream of each source. The wake is defined relative to the net's source velocity, so a towed net drags the water behind it along, and a net drifting with the current casts none.

  • What others see (ADR 0006). A casting net keeps a private per-panel field for its own panels and cable elements, and registers one lumped source for everyone else: the net's total panel drag along the flow over the frontal rectangle of its nodes, starting at its rear face (methods manual § 14. The wake a net or a body casts). A separate SimObject inside the net (a sinker tube, an internal rope, a probe) therefore sees no internal wake of that net, and VisualFieldPlane shows the lumped wakes only.
  • Bodies. Net/Disk and Net/Sphere with CastWake register one lumped source from their drag and silhouette (14.3 Bodies: Net/Disk and Net/Sphere); a second body downstream feels it.
  • Schedule. Keep the default Freeze for a steady tow and for a moored cage or farm, and set WakeBuildTime to when the net has settled; the log shows each rebuild, the freeze and each re-arm. In a farm a cage's lumped wake depends on the cages upstream of it (R87), and a change reaches one row further per rebuild, so an N-row farm needs WakeIterations ≥ N (owner ruling R121): a net converges on the larger of its private max|ΔR| and its lumped |ΔM|/M, and a round that runs out of iterations is logged "without converging". The default 4 (owner ruling R130) covers a farm of up to four rows; a single net that still drifts at its builds may need more as well. Freeze is re-armed, and both wakes are rebuilt, when the source velocity or the ambient current at the structure drifts by more than WakeRearmTolerance of the relative flow speed at the freeze (MARE-0136, fhsim_environment ENV-0039): an aquaculture cage under a tidal or turning current, a current that strengthens or slackens, or a trawl that changes speed or tows into a different current. Each re-arm starts a new round (a build and up to WakeIterations more, WakeIterInterval apart); Periodic remains the choice for a current that changes all the time, such as a tidal cycle resolved over the whole run. Use Periodic with a WakePeriod shorter than the manoeuvre for turning or accelerating nets: between rebuilds the frozen wake moves at the source velocity of the last rebuild, so a manoeuvring net can move into its own wake (fhsim_marine_elements_issue_0116). Off builds once.
  • Grid or direct. Grid costs O(1) per query and suits nets of hundreds of panels or more; a rebuild of 968 panels on the default grid takes 29–41 ms. Direct sums over every panel per query (21 µs per query over 968 panels) and is the reference for small nets.
  • Cost and accuracy. Net hydrodynamics: benchmark of load laws and wake evaluation measures both per grid size and WakeCutoff: on a 968-panel net Grid adds ×1.13 to the right-hand side and Direct ×14.7. Before phase F a structure of about 10³ panels lost most of its far wake at the default cutoff 1e-3; since then other objects see the lumped source, and a second cage behind a first is within 0.5 % of the direct evaluation at every grid and cutoff (§ 11). The owner kept WakeCutoff 1e-3 and WakeGrid 96 × 48 × 48 as defaults (Q12) until the deep review found them +5.9 % (cage) and +12 % (trawl) off in drag at 10⁴ panels; since owner decision R48 both are sized from the panels when not given (table below). Both stay user-settable.
  • Resolution. When the builder logs "x_start is below 1.5 cells along the flow", refine the grid along the flow (WakeGrid) or shorten WakeLength. Since phase F the private grid covers only the structure; on a 10³-panel cage the default grid and cutoff agree with the direct sum to 0.012 in deficit at the panel centroids and to +0.36 % in drag (Net hydrodynamics: benchmark of load laws and wake evaluation § 11). These were the defaults the owner kept (Q12). At 10⁴ panels they are not accurate; the sized defaults of R48 are. Drag of the structure at rest with each centroid in the private field, against Direct (NetWake.DISABLED_R48_PrivateGridAgainstDirect; cage wall radius 20 m, 20 m deep, Sn 0.2, 0.5 m/s; trawl cone 100 m, radius 12 m to 1 m, Sn 0.25, 1.5 m/s; one rebuild, one core of a shared machine, times ±50 %):
Structure Old default (96 × 48 × 48, 1e-3) Sized default (R48)
Cage, 1024 panels (self-shading 9.0 %) +0.41 %, 67–93 ms 96 × 48 × 48, 1e-4: −0.31 %, 0.2–0.3 s
Cage, 10 000 panels (9.1 %) +5.90 %, 0.16–0.24 s 96 × 100 × 52, 1e-5: −0.99 %, 3.1–4.8 s
Trawl cone, 1024 panels (11.4 %) +3.91 %, 15–28 ms 96 × 48 × 48, 1e-4: +0.56 %, 0.26–0.43 s
Trawl cone, 10 000 panels (14.4 %) +12.1 %, 20–35 ms 96 × 54 × 54, 1e-5: +1.1 %, 4.5–8.3 s

A 10⁴-panel right-hand side costs about 2–3 ms, so under Periodic with the default 10 s period (about 7000 right-hand sides per period at 10 ms steps, 15–20 s) a 4–8 s rebuild adds 20–50 %; under Freeze the three rebuilds of a round cost 10–25 s once. For a 10⁴-panel trawl manoeuvring under Periodic, a longer WakePeriod or an explicit coarser WakeGrid and larger WakeCutoff trade accuracy for time; the old defaults are WakeGrid="96, 48, 48" and WakeCutoff="1e-3".

  • Structures that are not simulated. Place their wakes with PorousDiscWakeSource from fhsim_environment: one analytic porous-disc wake from an area and a momentum deficit M = drag/(½ρU²). Take M from a simulation of the structure alone, as the farm example does: to reproduce a simulated net's lumped wake, copy M, the area and the rear centre from its last rebuild log line ("lumped source M = … m^2, area … m^2, rear centre (…) m") into MomentumDeficit, Area and Position, and set WakeXStartFactor="0", since a lumped wake starts at the rear face (QF7) while the default 0.5 starts it half a diameter downstream of Position (fhsim_environment wakes.md, § PorousDiscWakeSource).
  • The wake acts on the current, not on the wave particle velocity. The analytical Jacobian holds no wake term.
  • Sundials BDF. Set <LinearSolver Type="DENSE"/> and <Jacobian Type="dense"/> in the <Integrator>. FhSim's default linear solver collapses the step at every wake blend or load ramp on a dense net (fhsim_marine_elements_issue_0122).

Worked examples

The examples are in examples/input/. Each runs headless from the playpen of a build without visualisation, and writes modeloutput.csv there:

cd build/no_vis/Release/playpen/bin
./FhSim ../../../../../examples/input/<example>.xml

FhSim hands the net structures the path of the input file, not its folder, so the reader looks for a net definition file in the working directory; the examples name their net files relative to the playpen directory above. Each file's header comment states the setup, the expected result and things to try.

Example Shows Result
NetHydroTowedPanel.xml A 1 m × 1 m panel towed by a 10 N pull through still water, default law, MeshOpening solidity Tows at 0.371 m/s
NetHydroTrawlConeWake.xml A trawl-like cone (84 panels) towed at about 1.5 m/s with TwineCrossFlow, casting a frozen gridded wake Freezes after two builds; 1.53 m/s with the wake, 1.51 m/s without; 1.74 m/s under LocalThroughFlow
NetHydroCageInCurrent.xml A moored cage (84 panels, six mooring lines) in a 0.3 m/s current Drag about 1.15 kN, M ≈ 25 m²
NetHydroCageFarm.xml The same cage behind four upstream cages placed as PorousDiscWakeSource wakes Drag about 0.61 kN (−47 %)
NetHydroCageOwnWake.xml The same cage casting its own gridded wake, so its rear panels are sheltered Drag about 1.04 kN (−9 %)

The net files ExampleTowedPanelNet.xml, ExampleConeNet.xml and ExampleCageNet.xml describe their geometry in their header comments.