One equation of state from trickle to surcharge · TPA · Godunov/HLL · live Rankine–Hugoniot audit
Why the slot exists. Drag the depth toward the crown: top width T → 0, so gravity-wave celerity c = √(gA/T) → ∞. That blow-up is incompressibility’s lie — the assumption fails, not the pipe.
Controls
c = √( g·A(y) / T(y) )
Flow area A
–
Top width T
–
Celerity c
–
The Preissmann slot patches the geometry (keep T finite above the crown). Clean physics patches the assumption: water compresses, walls stretch, Korteweg gives a finite acoustic speed a. Dashed line: that elastic ceiling.
Cross-section & celerity blow-up
Left: circular section, water at y/D with the shrinking chord T. Right: c(y/D) heading for the asymptote at the crown; the dashed cyan line is the elastic wave speed a set in Tab 3 — the celerity real physics actually delivers when the pipe seals.
Same slope, different honesty. Above full, a slot of width Tₛ = gAª/a² and the elastic TPA branch store water at the identical rate — both give celerity a. The differences live elsewhere: phantom slot geometry, sub-atmospheric heads, and the crown-width discontinuity.
Equation of state
free: h = y(A) · sealed: h = D + a²(A−Aª)/(gAª)
Slot width Tₛ
–
Storage slope dA/dh
–
Head at probe
–
Both branches above Aª have slope a²/(gAª) — verified to 4×10&supmin;¹⁰ %. The slot is not wrong about storage; it is wrong about what exists: an open channel that cannot hold pressure below the crown, with a width discontinuity the solver must smooth — artifice patching artifice.
Head vs area — three stories near the crown
■ shared free-surface branch ■ Preissmann slot (head can never drop below crown while full) ■ TPA elastic branch, with the dashed sub-atmospheric extension a slot cannot represent — a sealed full bore at h < D.
Where a comes from. Fluid bulk modulus K and wall stiffness E·e set the acoustic speed — physics, not a tuning knob. Then feel the price: the acoustic CFL cuts your explicit timestep the moment one cell seals.
Lowering a to escape this penalty is sneaking the slot back in through the wave speed. The semi-implicit escape (Casulli–Stelling) keeps the timestep and filters sub-step acoustics instead — the same discrete continuity equation degenerates into a pressure-Poisson solve when dV/dη→0. Zero switching, mass to machine precision.
The whole argument, running. One conserved pair (A,Q), one EOS, first-order Godunov with an HLL Riemann solver. The pressurization front is just a shock — its speed is audited against Rankine–Hugoniot live, and continuity closes at machine zero because finite volumes make mass error impossible, not small.
Scenario
D = 1 m · L = 200 m · horizontal · frictionless · wet bed — a laboratory pipe in the Wiggert / Trajkovic tradition, so the shock audit is clean.
Pipe profile · HGL · velocity
Sim time
0.00 s
Δt now
–
Steps / s
–
Front x
–
w measured
–
w Rankine–Hugoniot
–
Max surcharge hₛ
–
Continuity error
–
Where honesty gets hard. Two things a single-valued φ(A) cannot know, and one thing nobody’s engine knows yet.
The two-state ambiguity
Take A a hair below Aª. Is that a ventilated channel with a sliver of air at the crown — or a sealed full bore pulled sub-atmospheric? Same A. Different pressure. Different physics.
Depth / head
–
Gauge pressure @ crown
–
Ventilation state is real physical information the state vector must carry — advect a pressurization indicator, or use Kerger’s negative slot. That is physics, not artifice.
One cell, two truths
The frontier nobody has crossed
Every engine on this page — slot, TPA, semi-implicit — is single-phase. Real surcharge entrains air; trapped pockets stiffen, spring, and vent, changing the transient completely (geysering says hello). Slot-free is achievable today. Air-honest is the actual frontier — and worth putting on the SWMM6 table.
Receipts. Every number in this app ran in Node before a pixel was drawn — the FableMeter pattern. Results below are from that run, not aspirations.
FableMeter verification — 17/17 passed
Check
Result
Error
A, T at half-full & full vs analytic
exact
0
I₁ half-full = 2R³/3 (Simpson)
0.0833297
4.3e-3 %
I₁ full = Aª·D/2
0.392679
5.2e-3 %
c half-full, D=1 m
1.9627 m/s
2.7e-3 %
Korteweg: steel D=0.5, e=10 mm
1190 m/s
1.8e-2 %
Korteweg: PVC D=0.3, e=10 mm
309 m/s
0.13 %
TPA storage slope = slot slope gAª/a²
match
3.9e-10 %
Still water stays still (500 steps)
max|u| = 0
0
Bore speed vs Rankine–Hugoniot (mass)
7.998 vs 8.046 m/s
0.60 %
R–H mass vs momentum consistency
first-order front smear
4.0 %
Continuity over full pressurization run
2.25e-13 %
machine zero
Transition point y*/D at a=50 m/s
0.999992
last 8e-4 % of depth
Transition point: the free branch is used until its own celerity reaches a — at a=50 m/s that happens at 99.9992 % of depth. Above it, the elastic branch. No width is ever added above the crown; phantom storage is exactly zero.
Design notes — what this engine is and is not
State & flux. Conserved (A,Q) everywhere. F = [Q, Q²/A + gI₁(A)] with I₁ extended past full as I₁* + (a²/g)(A−A*), so the pressurized characteristic speed is exactly a. One system, two stiffnesses, zero switching.
Scheme. First-order Godunov, HLL fluxes, CFL 0.45, lookup-table geometry (I₁ by Simpson). Deliberately the simplest honest thing: shocks captured, mass conserved by construction, fronts smeared over a few cells — which is why the R–H momentum check reads 4 % while mass reads 0.6 %.
Scope. Horizontal, frictionless, wet-bed, single-phase, prismatic circular pipe. Slope and Manning friction are source terms this scheme accepts readily; they are omitted so the shock audit stays clean.
Display convention. HGL above the crown uses hₛ = a²(A−Aª)/(gAª); behind a bore A/Aª ≈ 1.005, so the elastic strain stays where Korteweg physics lives.
References — the lineage
Wiggert (1972) — transient flow in free-surface, pressurized systems: the canonical lab data.
Trajkovic, Ivetic, Calomino & D’Ippolito (1999) — gate-induced pressurization experiments; the Gate Slam preset is their thought experiment.
Vasconcelos, Wright & Roe (2006) — the Two-component Pressure Approach: elastic pipe storage instead of a slot.
Kerger, Archambeau, Erpicum, Dewals & Pirotton (2011) — exact Riemann solver for mixed flow and the negative Preissmann slot for sub-atmospheric bores.
Casulli & Stelling (2013); Casulli & Zanolli — semi-implicit mixed flow with nested-Newton convergence guarantees; production-proven in 3Di.
Sharior, Hodges et al. (2023) — dynamic Preissmann slot in SWMM5+: making the slot adaptive rather than absent.
Preissmann (1961); Cunge & Wegner (1964) — where the slot began, and a reminder it was a brilliant patch for its decade.
The SWMM6 table stake: a conservative formulation makes continuity error impossible by construction, not small. This page is a 1-D existence proof running in a browser tab. Air-honest mixed flow is the claim that would actually earn the word unprecedented.
SLOT-FREE // how to use
Free-surface → pressurized flow with no Preissmann slot, no artificial gap, no special-case switching. Five minutes with these sliders beats fifty pages on mixed flow.
1
Drag the depth to the crownTab 1 — watch celerity blow up as T→0. That singularity is the reason the slot was invented.
2
Compare the slot and the elastic branchTab 2 — identical storage slope above full; the differences are phantom geometry and sub-atmospheric honesty.
3
Pick a pipe materialTab 3 — Korteweg turns K, E, D, e into a wave speed, then shows the acoustic CFL bill. Send a to the simulator.
4
Run the boreTab 4 — slam the gate, watch a pressurization shock, and audit its speed against Rankine–Hugoniot while continuity holds at machine zero.
5
Record the receipt● Make a GIF captures a captioned WebM of the run. Reopen this guide any time with the ? button; every tab has its own one-line intro.