VERIFIED — surge front within 10% gate; mass conserved to <10⁻⁶
Reproduce the classic 2D collapse of a water column on a rigid horizontal plane and verify the
volume-of-fluid (VOF) free-surface machinery — interface capturing (MULES), setFields phase
initialisation, gravity-driven p_rgh formulation and the entraining atmosphere boundary — against
the canonical experiment of Martin & Moyce (1952). A water column of base width a = 0.1461 m and height
2a (the n² = 2 configuration) is released instantaneously in a plain 8a × 4a tank.
The measured quantity is the dimensionless surge-front position Z = x/a against
T = t √(2g/a).
The dam break is the canonical proxy for sudden free-surface release and surge loading. Verifying it qualifies the same interFoam VOF machinery used for:
p_rgh formulation; the mass-conservation gate (<10⁻⁶ here) is what keeps long
sloshing histories physical (#637–#643).Downstream backlog now unblocked: wave loading #1169–#1173 (olaFlow wave generation feeds the same solver family). Full-scale note: at prototype scale the front speed scales with √(gh) — a verified 0.29 m column maps by Froude similarity to the 5–15 m deck-relative freeboards of real green-water events.
The computed front tracks the experiment closely in slope (front celerity) from the start; the visible offset at early T is the experiment's finite gate-release time. The literature-standard correction (applied identically by the Lethe benchmark) is a +0.175 dimensionless time shift; toggle the raw/shifted traces in the legend to compare. With the shift, every digitized point agrees within 8.1%.
| Comparison | Mean deviation | Max deviation | Gate | Status |
|---|---|---|---|---|
| Z(T) with +0.175 gate-release shift | 3.0% | 8.1% | ≤ 10% | PASS |
| Z(T) uncorrected (raw) | 9.8% | 17.8% at T≈1 | sanity ≤ 15% (mean) | PASS |
| Total water volume drift | 6.4e-07 | — | < 1% | PASS |
Both raw and corrected metrics are asserted in the regression test
(DAM_BREAK_SOLVE_TOLERANCE = 6% on the corrected mean plus a 15% raw-mean sanity bound), so the known
experimental artifact is documented rather than silently absorbed.
A volFieldValue function object integrates alpha.water over the domain every time step.
The initial volume matches the analytic column volume to five digits (the uniform mesh is sized
dx = a/36 so the column edges fall exactly on cell faces); total drift 6.4e-07.
| Item | Setting |
|---|---|
| Geometry | Column a × 2a (a = 0.1461 m, n²=2) in a plain 8a × 4a tank; 2D (one cell deep, empty front/back) |
| Mesh | 288×144 uniform blockMesh (41,472 cells); dx = a/36 so column edges sit on faces; non-orthogonality 0 |
| Solver | interFoam (VOF, two incompressible phases), laminar; adjustable Δt, maxCo = maxAlphaCo = 1 |
| Interface | MULES, cAlpha 1, MULESCorr yes, vanLeer alpha convection |
| Boundaries | no-slip walls; atmosphere totalPressure + pressureInletOutletVelocity + inletOutlet (entraining) |
| Initialisation | setFields box — runner support: OpenFOAMRunConfig(run_set_fields=True) / openfoam run --set-fields |
| Properties | water ν = 10⁻⁶, ρ = 1000; air ν = 1.48×10⁻⁵, ρ = 1; σ = 0.07 |
| Mesh independence | 144×72 test mesh reproduces the deviations (mean 2.9% / max 8.1%); interFoam ~10 s at that size |
The case is generated by digitalmodel.solvers.openfoam.validation.build_dam_break_case; the archived copy
(with the analysis script) lives at docs/api/cfd/cases/dam_break/.
The interFoam VOF stack reproduces the canonical dam-break benchmark: surge-front kinematics within 8.1% of every digitized Martin & Moyce point (with the standard gate-release correction; 3.0% mean), raw comparison within the documented experimental-release offset, and machine-level mass conservation. Suite status: 5/5 verified cases.
chaos-polymtl/lethe, examples/multiphysics/dam-break/dam-break-2d.py.multiphase/interFoam/laminar/damBreak/damBreak (base dictionaries).tests/solvers/openfoam/validation/test_dam_break.py.Generated from a real OpenFOAM v2312 solve. All chart data and animation frames are computed directly from the solved fields of the archived case — no values are hand-entered.