digitalmodel · CFD verification suite · case 9 · marine · interactive

Wave-Excited Floating Body: Overset Heave RAO vs the Long-Wave Limit

A half-density box floats in the verified StokesII regular wave (#1170), free to heave (#1169 constraints) on a rigid overset component mesh (overInterDyMFoam). At λ/B ≈ 29 the quasi-static limit pins the answer: a small floating body is a wave follower, heave RAO → 1. Issue #1302, epic #1161.

VERIFIED — heave RAO 1.017 (+1.7% vs the wave-follower limit); draft +2.1%; periodic at T

SolveroverInterDyMFoam + sixDoF, v2312
WaveStokesII H = 0.05 m, T = 3 s, d = 0.4 m, λ = 5.77 m
Body0.2×0.2 m section, ρ = 500 kg/m³, λ/B = 29
Heave RAO1.017 vs 1.0 (gate ±15%)
Incident amplitudeai = 0.0236 m (upstream split, Kr = 0.098)
Regression testtests/solvers/openfoam/validation/test_wave_excited_body.py

1  Objective

Verify wave-excited rigid-body motion — the mechanism behind every seakeeping RAO. The verified numerical wave tank (#1170) and the verified heave-constrained sixDoF body (#1169) are combined into one case: a 0.2 m box floating at its Archimedes draft at x = 13 m, excited by the established regular wave. In the long-wavelength limit (λ/B ≈ 29, excitation period 3 s » heave natural period ~0.63–0.89 s) a freely heaving body rides the surface: heave RAO → 1 (Newman 1977, ch. 6). The incident amplitude is measured by a Goda–Suzuki incident/reflected split over the upstream gauge array, so the body's own scattered field cannot pollute the denominator.

What this gates in real work

This is the suite's first wave-body interaction case — incident waves exciting a floating structure whose motion feeds back on the flow. It is the CFD twin of the regular-wave RAO test run for every floating asset (FPSOs, semis, spars, floating wind, installation barges):

2  Why overset — the morphing-mesh failure this case retires

The first attempt at this case used the #1169 machinery unchanged: dynamicMotionSolverFvMesh morphing a 2D slab background around the moving body. It floats perfectly through the calm ramp and dies at first wave arrival — the distance-blended point motion shears a waterline corner cell to zero volume and the run aborts on a deltaCoeffs divide-by-zero, reproducibly across decompositions, Courant settings and blending distances (diagnosis on #1302). The overset approach eliminates the failure structurally: the component mesh around the body moves rigidly (no cell ever deforms) and the flow is interpolated across the overlap (inverseDistance). This is the standard OpenFOAM path for wave + moving body, and the machinery the suite now has verified for large-motion cases. One more portability note: sixDoFRigidBodyState hard-casts the mesh to dynamicMotionSolverFvMesh, so under the overset mesh the body state is parsed from the sixDoF report on log lines instead.

3  The response — animated

animation frame
Steady-state wave-excited heave (x–z slice around the body, last two wave periods): the box rides the incident wave on its rigid overset component mesh. Dashed line = still-water level.

4  Heave response

Gauge at x = 8.8 m excluded (red ×): the sample ray lands bit-exactly on a cell face and the interfaceHeight walk double-counts cell columns, reporting an impossible mean water level. Detected by the mean-level guard in incident_wave_split and reported, not hidden — the same class of lesson as the Kleefsman density-aware probes.

QuantityMeasuredReferenceError / gateStatus
Heave RAO (2Az/Hi)1.0171.0 (wave-follower limit)+1.7% (gate ±15%)PASS
Mean draft0.1021 mArchimedes 0.1000 m+2.1% (gate ±5%)PASS
Response period3.001 swave period 3 s+0.0% (gate ±5%)PASS
Incident wave at the array2ai = 0.0472 minput H = 0.05 m-5.6%, Kr = 0.098consistent
Fast regression variant (250×35, ~75 min at 8-way)RAO 1.006, draft +2.0%, T 3.002 sreference values reproducedmesh-consistentPASS

Why RAO → 1 is the right gate — and what would break it. At λ/B ≈ 29 the wave surface is essentially flat across the body, and the excitation is far below the heave resonance; hydrostatics dominates and the body tracks the surface. Deviations of order kB/2 and (ω/ωn)² are a few percent — well inside the ±15% gate. A solver with broken wave kinematics, wrong buoyancy coupling, or overset interpolation losses would miss the limit; a body with significant draft-to-wavelength ratio or excited near resonance would legitimately depart from 1 (that departure IS the RAO curve this case is the anchor of).

5  Numerical model

ItemSetting
Backgroundverified #1170 NWT (375×49, 20 m, top raised to 0.7 m), StokesII inlet + active absorption both ends
Component50×42 block around the body, hole by topoSet + subsetMesh, rigid overset motion (innerDistance » component size)
OversetdynamicOversetFvMesh, inverseDistance interpolation, zoneID via merged-mesh topoSet (v2312 floatingBody tutorial recipe)
MotionsixDoFRigidBodyMotion, Newmark, heave-only (line + orientation constraints), accelerationRelaxation 0.7
Body0.2×0.2 m, ρ = 500 kg/m³ → Archimedes draft 0.10 m; starts at equilibrium (no decay transient)
Schemes#1170 wave-fidelity divs (linearUpwind momentum, vanLeer alpha) + tutorial overset blocks; maxCo = maxAlphaCo = 0.65
RecordersixDoF report on log lines (last outer-corrector per step); 8 interfaceHeight gauges
Runtwo-stage: component blockMesh→topoSet→subsetMesh, then background blockMesh→mergeMeshes→topoSet→setFields→overInterDyMFoam (runner grew mergeMeshes + mesh-prep-only stages)

The case is generated by digitalmodel.solvers.openfoam.validation.build_wave_excited_body_case. Archived copy with analyzer: docs/api/cfd/cases/wave_excited_body/. The long solve is opt-in for the regression suite via DIGITALMODEL_RUN_LONG_CFD=1 (Kleefsman tier).

6  Conclusion

The overset wave-body machinery reproduces the long-wave limit: heave RAO 1.017 against the theoretical 1.0, mean draft within 2.1% of Archimedes, response locked to the wave period. The deforming-mesh failure that parked this case is retired, and the suite now has a verified path to CFD RAOs for floating structures — the direct bridge to the OrcaWave/AQWA diffraction pipeline.

References

  1. OpenFOAM ESI v2312 tutorials: multiphase/overInterDyMFoam/floatingBody (overset recipe), multiphase/interFoam/laminar/waves/stokesII (wave generation, verified in #1170), multiphase/overInterDyMFoam/twoSquaresOutDomain (2D overset precedent).
  2. Newman, J.N. (1977). Marine Hydrodynamics, MIT Press — quasi-static response of small floating bodies in long waves.
  3. Goda, Y. & Suzuki, Y. (1976). Estimation of incident and reflected waves in random wave experiments — gauge-array split (N-gauge least-squares form, as in the #1170 case).
  4. digitalmodel issue #1302 (diagnosis of the morphing collapse + this fix) under epic #1161; regression test tests/solvers/openfoam/validation/test_wave_excited_body.py.

Generated from a real OpenFOAM v2312 solve. All chart data and animation frames are computed directly from the solved fields, gauge records and body-state history — no values are hand-entered.