forces function object compared to the exact MacCamy-Fuchs (1954) linear diffraction
force — and to its small-ka Morison inertia limit. Headline regime ka = 0.955
(D/L = 0.30), squarely in the diffraction band. Issue #1171, epic #1161.CFD peak inline force matches the exact MacCamy-Fuchs diffraction force (within 15%) at the correct diffraction phase — and sits well below the Morison inertia estimate, so the case genuinely discriminates diffraction physics
Every prior marine case in the suite validated wave propagation (the #1170 numerical wave tank) or body motion (the #1302 wave-excited float). This case validates wave force: the inline load a regular wave exerts on a fixed surface-piercing cylinder — the canonical offshore design load for monopiles, jacket legs, risers and platform columns. It is checked against the MacCamy-Fuchs closed form, the exact linear-diffraction solution for exactly this geometry, so the comparison is analytical ground truth, not another numerical model.
Inline wave force sets the base shear and overturning moment on any surface-piercing column. Two design routes exist, and this case gates the boundary between them:
Because the diffraction reduction (28%) is comfortably larger than the 15% force gate, a Morison prediction genuinely fails the gate while the diffraction reference passes — the case truly discriminates diffraction physics rather than being satisfiable by either model.
The black trace is the CFD inline force Fx(t) over the settled window; the dotted red curve is a single-harmonic least-squares fit at the wave frequency, and the blue band is the MacCamy-Fuchs amplitude (mean ± F0) evaluated at the measured incident wave height — so the comparison is against the wave the cylinder actually saw, not the nominal input. A clean single-harmonic force at the wave period is itself a check: at this ka the load is inertia/diffraction dominated, so it is very nearly sinusoidal (drag, which would add a phase-locked third harmonic, is negligible).
Three estimates of the same peak inline force. The Morison inertia bar (Cm = 2, added mass Ca = 1 for a circle) is what a small-body method predicts; the MacCamy-Fuchs bar is the exact diffraction force (MF / Morison = 0.717); the CFD bar is the measured peak. The CFD landing on the MacCamy-Fuchs bar — and clearly below Morison — is the whole point: the model resolves the diffraction reduction a Morison estimate cannot.
Sweeping the diffraction parameter ka (by varying the cylinder diameter at the fixed headline wave) traces the transition the closed form encodes. As ka → 0 the effective inertia coefficient Cmeff = 4A(ka)/(π ka²) → 2 and the force collapses onto the Morison inertia limit (MF / Morison → 1) — the long-wave anchor. As ka grows past the diffraction threshold (ka ≈ 0.5, D/L ≈ 0.16), wave scattering pulls the force progressively below Morison and drops Cmeff. The green star marks the headline case, chosen deliberately in the diffraction band so the CFD must reproduce a load a Morison model cannot.
| Quantity | CFD (measured) | Reference ± tol | Status | Note |
|---|---|---|---|---|
| Peak inline force | 12.12 N | 12.55 N ± 15% | PASS | rel. error +3.4% vs MacCamy-Fuchs at measured H |
| Force lead over velocity γ | 71.5° | 69.58° ± 15° | PASS | phase error +1.9° (diffraction departs 20.4° from the 90° inertia lead) |
| Loading period | 0.796 s | 0.800 s ± 5% | PASS | period error 0.5% — force is at the wave frequency |
Reading the gate. The force amplitude is graded against MacCamy-Fuchs re-evaluated at the measured incident wave height (from a Goda–Suzuki gauge split), so a small wave-generation error does not leak into the force verdict. The phase gate checks the force lead over the free-surface velocity γ = 90° − δ: the diffraction departure δ from the ideal 90° inertia lead is the signature of diffraction, and matching it confirms the CFD captures the scattered-wave phase, not just the amplitude. The period gate confirms the load is at the wave frequency.
MacCamy & Fuchs (1954) solved the linear diffraction of a regular wave by a rigid vertical circular cylinder exactly. The total inline force amplitude on a cylinder of radius a in a wave of height H, wavenumber k (from ω² = g k tanh kh), depth h is
F0 = (2 ρ g H / k²) · tanh(kh) · A(ka),
A(ka) = 1 / √(J₁′(ka)² + Y₁′(ka)²)
with the force leading the incident crest / free-surface velocity by γ = 90° − δ,
δ = atan2(J₁′(ka), Y₁′(ka)). The factor A(ka) is the diffraction amplitude correction and δ its phase
departure; both → the Morison inertia limit (Cm = 2) as ka → 0. The reference is frozen in pure
Python (scipy.special derivative Bessel functions) in
digitalmodel.solvers.openfoam.validation.maccamy_fuchs; every curve in this report is recomputed
from it at report-build time — no reference number is hand-entered.
The cylinder (D = 0.3 m) sits at x = 3.5 m — beyond two wavelengths from the inlet, in the fully
established wave region — in the verified #1170 StokesII wave on a 3D half-domain (a symmetry plane through
the cylinder axis; the far y-wall a slip wall > 5 D from the axis for low blockage). The still-water line
lands on a background cell face (the #1165/#1302 VOF lesson), background resolution is > 20 cells per
wavelength, and the inline force is the integrated pressure + viscous load from an OpenFOAM forces
function object over the cylinder patch. The incident wave height is measured by a Goda–Suzuki least-squares
split over an upstream gauge array so the cylinder's own scattered field cannot pollute the incident
amplitude, and the peak force is a single-harmonic least-squares fit over the settled window.
CFD peak inline force matches the exact MacCamy-Fuchs diffraction force (within 15%) at the correct diffraction phase — and sits well below the Morison inertia estimate, so the case genuinely discriminates diffraction physics. The suite now closes the loop from wave generation (#1170) to wave loading: a measured CFD inline force checked against an exact diffraction closed form for the same geometry, in a regime where the industry-standard Morison estimate is 28% wrong. This is the CFD analogue of the diffraction load path the OrcaWave/AQWA pipeline computes — verified here against analytical ground truth before any experiment.
interFoam/laminar/waves/stokesII (waves, verified in #1170) +
forces function object.tests/solvers/openfoam/validation/test_maccamy_fuchs.py.Generated from a real OpenFOAM v2312 solve (inline force via the forces function
object) and the frozen MacCamy-Fuchs closed form. All reference curves are recomputed live from the closed
form at build time; the only measured inputs are the CFD fields in results.json — no values are
hand-entered.