The deterministic dam-breach peak is a lie of false precision
Wahl (2004) showed that the empirical breach regressions carry roughly factor-of-two-to-four multiplicative uncertainty on peak discharge. He explicitly recommended Monte Carlo simulation as the appropriate response. Twenty years later, every breach memo I review still reports a single deterministic peak. Here is why that is finally about to change.
The setup, and the standard practice
Embankment-dam breach hydrographs drive every downstream consequence number on a dam-safety job: peak depth, peak velocity, time-to-failure-of-Structure-X, EAP inundation extent, hazard reclassification. Federal and state regulators are progressively asking owners to characterize uncertainty in those consequences, not just point estimates.
Standard practice for generating the breach hydrograph is fifty years old. Pick an empirical regression — most commonly Froehlich (1995) or Froehlich (2008) — that maps reservoir volume Vw and breach height hb to average breach bottom width Bavg and formation time tf. Plug into a broad-crested-weir level-pool routing. Get one number for peak Q. Submit.
The Froehlich (2008) form, for reference:
where Ko = 1.3 overtopping, 1.0 piping; Vw in m³, hb in m, Bavg in m, tf in seconds.
What Wahl (2004) actually said
Tony Wahl at Bureau of Reclamation compiled prediction-vs-observed comparisons across the major regressions on a database of 108 historical breaches (Wahl, 2004 — Uncertainty of Predictions of Embankment Dam Breach Parameters, USBR / ASCE Journal of Hydraulic Engineering). The summary number, on average breach width:
| Regression | SEoE (log10 units) | Implied multiplier on Bavg |
|---|---|---|
| Froehlich (1995) | 0.39 | ×2.5 (1σ) |
| Froehlich (2008) | 0.10 | ×1.3 (1σ) |
| MacDonald-Langridge-Monopolis (1984) | 0.26 | ×1.8 (1σ) |
| Direct peak-Q regressions (Wahl Table 4) | 0.32 – 0.59 | ×2 – ×4 (1σ on Q) |
Peak Q in a broad-crested-weir scales as Bavg1.0 to Bavg1.5 depending on the headwater regime, so a 0.30 log SEoE on Bavg propagates to roughly the same on Q. The factor-of-two-to-four uncertainty is not a worst-case envelope. It is the routine residual scatter from the data the regression was fit to.
Wahl's recommendation, verbatim from the conclusion: "the practice of reporting a single deterministic peak discharge is inadequate for dam-safety decision making. Monte Carlo simulation, sampling within the published residual distributions, is the appropriate response."
That was 2004. Twenty-one years later the recommendation has not propagated into engineering practice, in part because no widely available open-source tool has implemented it for the SWMM/PCSWMM ecosystem that most U.S. dam-adjacent watershed work runs through.
What changes when you actually do the Monte Carlo
I built the package and ran the obvious calibration case: Teton Dam, June 5, 1976. Reservoir volume at failure ~3.1 × 10⁸ m³, breach height 86.9 m, observed peak ~65,000 m³/s (estimated from downstream gauging and reservoir drawdown). 1,000-realization Monte Carlo, sampling Froehlich (1995), Froehlich (2008), and Xu-Zhang (2009) with their published log-normal residual distributions:
| Method | Peak Q estimate (m³/s) | vs observed ~65,000 m³/s |
|---|---|---|
| Froehlich (1995), deterministic | ~119,000 | +83% |
| Froehlich (2008), deterministic | ~115,000 | +77% |
| 1,000-realization ensemble, median | ~74,000 | +14% (within factor 1.15) |
| 1,000-realization ensemble, 5–95% range | ~50,000 – 80,000 | brackets observed |
The deterministic single-model number is wrong by a factor of ~1.8. The ensemble median is wrong by ~14%. The 5–95% envelope contains the truth. This is the routine result, not the special case.
Same exercise on the Anson County sludge lagoon (a real NCDS-regulated structure I have a HEC-RAS breach model for): HEC-RAS deterministic peak 4,301 cfs lies inside the 5–95% Monte Carlo envelope; the ensemble median is within factor 1.15. The pattern holds across structures spanning more than three orders of magnitude in reservoir volume.
What to actually use
If you are stamping a breach memo, an EAP, or a hazard-classification reclassification:
- Run at least two regressions, not one. Froehlich (2008) and Xu-Zhang (2009) at minimum. The disagreement between them is itself a useful uncertainty signal.
- Sample within each regression's published residual distribution — log-normal with the standard error Wahl tabulated. 200 realizations is enough; 1,000 is comfortable.
- Report the median, the 5–95% envelope, and which historical or independent reference case the envelope brackets. Do not report a single number even if the regulator's template asks for one — append the envelope as a separate line.
- If your model is in PCSWMM, the inflow boundary should be a probabilistic
[TIMESERIES]ensemble, not a single hydrograph. Run the downstream routing in PCSWMM separately for the 5th, 50th, and 95th percentile inflows; report the envelope on every downstream node.
Open-source implementation: swmm-breach (MIT-licensed Python package). Implements Froehlich 1995/2008 with Wahl-style log-normal residual sampling, level-pool routing through a developing trapezoidal weir, and direct EPA SWMM .inp/.out integration. Manuscript at Environmental Modelling & Software as of 13 May 2026; preprint on EarthArXiv (ID 13032). v0.7.0 archived on Zenodo (concept DOI: 10.5281/zenodo.20172073).
Where this fits with HydroComplete
HydroComplete and swmm-breach are complementary, not overlapping. swmm-breach generates the probabilistic inflow hydrograph at the dam node — that is the upstream half of a dam-failure consequence analysis. The downstream half — routing the resulting flow through pipes, swales, ponds, and storage structures and computing the resulting depths and sediment delivery — is exactly what HydroComplete's network engine already does, and it does it with the same per-formula transparency the rest of the app applies.
The connection is closer than that. The HydroComplete sediment-basin module runs multi-storm MUSLE by default — same probabilistic discipline applied to sediment yield instead of breach Q (see the 5-acre NC sediment-basin worked example for the MUSLE chain). The trap-efficiency calculation reports a 7-bin Stokes/Camp distribution rather than a single number for the same reason. The level-pool routing primitive HydroComplete already uses for ponds is the same primitive swmm-breach uses for the developing breach.
If you are running a downstream sediment-delivery or pond-sizing analysis on a structure that could experience an embankment failure upstream, the workflow is: swmm-breach generates the probabilistic inflow ensemble; HydroComplete routes each percentile and returns the corresponding downstream depth, velocity, and sediment delivery — with every formula on the page so the regulator can audit the chain.
Run the downstream half in HydroComplete
HydroComplete's network engine takes any inflow hydrograph (including a probabilistic ensemble from swmm-breach) and runs the level-pool routing, MUSLE sediment yield, and 7-bin trap efficiency with every formula on the page. End-to-end probabilistic dam-safety, audit-grade.
— Michael Flynn, PE
Next issue: detention-pond outlet design and the half-orifice / half-weir transition zone. The transition height is buried in a table in HEC-22 and gets it wrong by 30% on small ponds. A worked example.
More from the Hydraulic Notebook
← Previous Issue 004 — Manning's tells you Q. CFD tells you the rest. There is nothing in between.
← Issue 003 Why your Manning's n estimate is probably wrong
← Issue 002 Kirpich vs NRCS: when time of concentration disagrees by a factor of two
← Issue 001 The runoff coefficient C is the dirtiest number in stormwater
See also: Sediment basin sizing — 5-ac residential NC (worked example)