VERIFIED — draft +1.1% vs Archimedes; 11 damped cycles; Ca = 0.39 (physical)
Verify the coupled rigid-body/free-surface machinery: a half-density cuboid is cut out of a 1 m³
tank mesh, released ~0.054 m below its hydrostatic equilibrium, and heaves freely under
sixDoFRigidBodyMotion with mesh morphing (constrained to pure heave: line +
orientation constraints, so the decay is cleanly one-dimensional). Two known answers gate the
result: the Archimedes draft (m/ρAwp = 0.2505 m) and the hydrostatic heave period
T = 2π√(m/k), k = ρgAwp corrected for the closed tank. Case derives from the shipped
floatingObject tutorial with the motion solver switched to sixDoF and the asymmetric water
lump removed for a clean release.
This is the suite's first moving-body free-surface case — rigid-body 6-DOF coupled to VOF. The heave free decay is the exact numerical twin of the free-decay test every floating structure gets at model-test commissioning (FPSOs, semis, spars, floating-wind platforms): release from an offset, read off the natural period and damping. Verifying it qualifies:
| Quantity | Measured | Reference | Error / band | Status |
|---|---|---|---|---|
| Equilibrium draft | 0.2532 m | Archimedes 0.2505 m | +1.1% (gate ≤ 5%) | PASS |
| Decay envelope | 11 cycles, monotone | damped oscillation | δ = 0.34/cycle | PASS |
| Heave period | 1.149 s | Thyd = 0.973 s (no added mass) | ratio 1.18 ∈ [1.0, 1.6] | PASS |
| Implied added-mass coefficient | Ca ≈ 0.39 | rectangular-section range ~0.3–0.8 | ∈ [0.1, 1.5] | PASS |
Why the period is 18% above the waterplane-stiffness value — and why that is correct physics. The hydrostatic period T = 2π√(m/k) ignores the water the body drags along; the true period is 2π√((m+ma)/k). Solving the measured period for ma gives Ca = ma/(ρ∇) ≈ 0.39, inside the published range for heaving rectangular sections. A solver that missed the radiation/added-mass physics would land on the hydrostatic period — the offset is evidence the coupled hydrodynamics is working, so it is gated as a band, not hidden as an error.
| Item | Setting |
|---|---|
| Tank / body | 1×1×1 m tank; cuboid 0.3×0.2×0.5 m cut by topoSet + subsetMesh, bottom at z = 0.2333 m |
| Mesh | 20×20×30 background (11,640 cells after body cut); morphing via dynamicMotionSolverFvMesh |
| Motion | sixDoFRigidBodyMotion, Newmark; heave-only (line + orientation constraints); accelerationRelaxation 0.7 |
| Fill | Still water at 0.5368 m; closed-tank stiffness correction k/(1−Awp/Atank) applied to the reference period |
| Solver | interFoam (VOF) + kEpsilon RAS (tutorial numerics), maxCo = 1 |
| Recorder | sixDoFRigidBodyState function object (CoM history every time step) |
| Fast variant | 3.5 s (~3 min): 2 cycles, period within 0.3% of the 14 s run, draft within 1.3% — the regression test |
The case is generated by digitalmodel.solvers.openfoam.validation.build_floating_body_case; the
runner grew topoSet/subsetMesh stages so it runs end-to-end via
OpenFOAMRunConfig(run_topo_set=True, subset_mesh_set="c0", subset_mesh_patch="floatingObject",
run_set_fields=True). Archived copy: docs/api/cfd/cases/floating_body_decay/.
The 6-DOF/VOF coupling reproduces floating-body hydrostatics and free-decay dynamics: Archimedes draft to +1.1%, eleven monotonically damped cycles, and a heave period whose added-mass content (Ca ≈ 0.39) is physically consistent. The moving-body foundation for floating-structure RAO and wave-drift work is verified.
multiphase/interFoam/RAS/floatingObject (base case; motion
solver switched to sixDoFRigidBodyMotion with heave-only constraints).tests/solvers/openfoam/validation/test_floating_body.py.Generated from a real OpenFOAM v2312 solve. All chart data and animation frames are computed directly from the solved fields and body-state history — no values are hand-entered.