Case study · Graham Creek, Ottawa

All 12 rainfall events, on the correct days

One question: if SWMMCanada builds a model with zero manual input and zero calibration, how close does it get to a real flow gauge? The test basin is Graham Creek at Nepean, Water Survey of Canada station 02KF015 — a 22.09 km² gauged basin in Ottawa. The area of interest is the official WSC drainage polygon, not a hand-drawn box, so the model drains exactly what the gauge measures.

12 / 12Rainfall events reproduced same-day
−22.3%Total volume bias (PBIAS)
22.09 km²Official WSC basin, built in one call
0Parameters tuned toward the gauge
Daily rainfall and daily mean flow at Graham Creek, Ottawa, June to September 2024: the observed WSC gauge record in black and the uncalibrated SWMMCanada model in blue, with a same-day simulated response under every rainfall pulse
Summer 2024 at Graham Creek. Top: daily rainfall. Bottom: daily mean flow — black is the gauge, blue is the uncalibrated model. Every rain pulse has a same-day simulated response; the simulated peaks are taller and narrower, and the simulated recessions drop to zero while the observed ones decay slowly.

Why this basin is a hard test

Graham Creek is half and half. The northern half is suburban Bells Corners — 60–80% impervious, densely sewered (3,585 municipal conduits, 3,550 manholes and 194 outfalls straight from Ottawa's open data). The southern half is National Capital Commission greenbelt including the Stony Swamp wetlands: imperviousness near zero, no sewers at all. A mixed urban–greenbelt basin is harder than a fully urban one, because the model has to get both the fast city water and the slow greenbelt water right.

Map of the Graham Creek study basin in Ottawa: the official WSC drainage polygon with the suburban storm network in the northern half, the National Capital Commission greenbelt in the southern half, and the gauge at the northwest outlet
The study area: the official WSC drainage polygon for station 02KF015, the municipal storm network it contains, and the gauge (black triangle) at the northwest outlet.

The numbers, read honestly

Metric Value What it means
Event detection 12 / 12, same day The rainfall → runoff → network → outflow chain is causally right.
Volume bias (PBIAS) −22.3% The correct order of magnitude with no tuning and no baseflow.
Wet-day mean (34 d) sim 0.696 vs obs 0.473 m³/s (+47%) A sewer-network model has no in-stream or wetland storage; the real creek crosses the Stony Swamp wetlands, which attenuate every peak.
Dry-day mean (88 d) sim 0.001 vs obs 0.165 m³/s The gap is groundwater baseflow — which a storm-runoff model deliberately does not simulate.
Daily NSE −2.49 Dominated by the two structural gaps above, not by random error.
Monthly means (sim / obs) Jun 0.28/0.42 · Jul 0.17/0.29 · Aug 0.24/0.22 · Sep 0.09/0.07 August and September nearly coincide.

The engine's own mass balance for the 122-day run: runoff continuity −0.16%, routing continuity −0.98%, both well inside SWMM's ±2% guideline. Of 448.5 mm of rain, 311 mm infiltrated (the greenbelt half at work), 23 mm evaporated, and 115 mm became runoff.

The error is explainable, not random. Two structural gaps account for it: no baseflow on dry days, and no wetland or in-stream storage on wet days. Both are consequences of modelling a pipe network rather than a creek — and both are stated rather than tuned away.

Engine validation

Every model is run, not just written

A model that assembles but will not execute is worth nothing, so real-city builds are run in the EPA SWMM 5.2 engine as part of validation — checked for zero engine errors and for mass-balance continuity inside SWMM's ±2% guideline. The Graham Creek run above closed at −0.16% runoff and −0.98% routing continuity over 122 days.

"Zero engine errors" means runnable, not calibrated. Every result on this page confirms that the model is structurally sound and executes without error. It is not a claim that the hydrology is accurate — parameters are first-pass estimates from open data. Calibrate against observations before using any output for design or decisions.

Fidelity to the source data

The generated network is the city's network

Victoria publishes storm mains with explicit topology, invert elevations, diameters and materials, so the built network can be checked field by field against the city's own map. Node positions are an exact copy of the source manholes and outfalls (0 m offset), and 89% of conduits lie within 1 m of the real pipe centreline (95% within 5 m) — the small residual is the straight node-to-node representation of a curved polyline.

Left: the City of Victoria official open-data storm map. Right: the generated SWMM network — conduits in black, junctions in blue, outfalls as red stars — overlaid on it, coinciding with the published pipes
Left: the City of Victoria official open-data storm map. Right: the generated SWMM network overlaid on it — they coincide.

Where a city publishes no node IDs

Ottawa publishes inverts, diameters and materials but no node IDs, so the topology is reconstructed by snapping pipe endpoints to shared nodes — the same shared assembler handles both cases. Outfalls come from the city's outlet layer plus a sink per disconnected component, so the network is always mass-balanced.

Left: the City of Ottawa official open-data storm pipes. Right: the generated SWMM network with geometry-inferred topology, tracing the same pipe grid
Left: the City of Ottawa official open-data storm pipes. Right: the generated network, topology inferred from geometry alone, tracing the same grid.

Subcatchments on real lot lines

Where a city publishes parcels and building footprints, drainage units are seeded on the real catch basins and shaped by real lot lines, with imperviousness from real buildings plus road right-of-way — far finer than a 30 m land-cover raster.

732 catch-basin subcatchments in downtown Victoria coloured by impervious percentage, next to the city's own 14 macro catchment areas
Catch-basin subcatchments in downtown Victoria coloured by impervious % (mean ~68%, realistic downtown variation), against the city's own 14 macro catchment areas.
Delineation

DEM catchments — but only where the terrain earns it

Subcatchments can be delineated from the conditioned DEM: depressions filled, OpenStreetMap streets burned in so urban flow follows roads, and D8 basins traced to each manhole. On flat ground that is false precision — a 30 m national DEM with ±1–2 m accuracy cannot resolve which side of a downtown street a raindrop runs down. So a two-layer honesty gate decides per area and records its readings in the validation report, with a resolution-aware threshold:

  • Below 4.0% median conditioned slope at ≥10 m DEM posting, the delineation honestly stays geometric (junction-Voronoi).
  • Under LiDAR (≤2 m posting, ~0.1–0.2 m accuracy) the threshold drops to 1.0% — at that resolution urban micro-slope is real signal, not noise.
  • A DEM result that fails validation falls back automatically.

The 4.0% default is measured, not guessed: seven downtown areas read 1.1–3.3% median slope (inside DEM noise → Voronoi), while a Kelowna hillside reads 9.12% and North Vancouver slopes read 13.25% (→ DEM basins). Downtown Ottawa, resolved onto the city's own 2020 LiDAR at 1 m, reads 2.52% — above the fine gate — and upgrades to 442 DEM basins with zero errors and 0.0% uncovered area, in 42 seconds.

Delineation on a Kelowna hillside area: 197 street-burned DEM basins with terrain-following boundaries instead of geometric polygons
The Kelowna hillside area crosses the gate at 9.12% median slope: 197 street-burned DEM basins, zero errors, 0.0% uncovered — terrain-following boundaries instead of geometric polygons.

Regression baselines lock today's delineation verdict on checked-in fixtures, so a future change to the method has to move them in a reviewed diff — it cannot silently degrade coverage.