digitalmodel · CFD verification suite · marine · wave loading · interactive

Surface-Piercing Cylinder Wave Loading vs MacCamy-Fuchs Diffraction

The suite's first true wave-loading validation: a rigid, bottom-mounted, surface-piercing vertical circular cylinder (D = 0.3 m) in the verified #1170 regular wave (H = 0.03 m, T = 0.8 s, depth 0.4 m), with the inline horizontal force from an OpenFOAM 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

SolverinterFoam + forces FO, ESI v2312 (StokesII waves, #1170)
ReferenceMacCamy & Fuchs (1954) TM-69 — exact linear diffraction
Regimeka = 0.955, D/L = 0.30 → diffraction (ka > 0.5)
MacCamy-FuchsF0 = 12.55 N at measured H = 25.5 mm
Diffraction reductionMF / Morison = 0.717 (28% below Morison)
Regression testtests/solvers/openfoam/validation/test_maccamy_fuchs.py

1  Objective

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.

What this gates in real work

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.

2  Measured inline force

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).

3  CFD vs MacCamy-Fuchs vs Morison

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.

4  The Morison → diffraction transition

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.

5  Known-answer gate

QuantityCFD (measured)Reference ± tolStatusNote
Peak inline force12.12 N12.55 N ± 15%PASSrel. error +3.4% vs MacCamy-Fuchs at measured H
Force lead over velocity γ71.5°69.58° ± 15°PASSphase error +1.9° (diffraction departs 20.4° from the 90° inertia lead)
Loading period0.796 s0.800 s ± 5%PASSperiod 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.

6  The MacCamy-Fuchs reference

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.

7  Numerical model

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.

8  Conclusion

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.

References

  1. MacCamy, R.C. & Fuchs, R.A. (1954). Wave Forces on Piles: A Diffraction Theory. U.S. Army Corps of Engineers, Beach Erosion Board, Technical Memorandum No. 69.
  2. Morison, J.R. et al. (1950). The force exerted by surface waves on piles. Petroleum Transactions AIME 189 — the inertia + drag small-body limit.
  3. Sarpkaya, T. & Isaacson, M. (1981); Chakrabarti, S.K. (1987); Faltinsen, O.M. (1990) — diffraction regime and Cm.
  4. OpenFOAM ESI v2312: interFoam/laminar/waves/stokesII (waves, verified in #1170) + forces function object.
  5. digitalmodel issue #1171 under epic #1161; frozen reference + regression test 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.