OpenHydro Bench
Exact answer known1D · free surfaceCandidate

Tank emptying through an outlet

Does a storage tank drain at the right rate?

Test A1D-003
Rossman (2017)
Version 1.0.0
Right answer
Exact solution · Rossman (2017)
Results
5 models · closest 0.25 % off · see them ↓
Must
get the tank depth within 5 mm
Sketch, not to scale.

The model file

The suite writes this EPA SWMM 5 input file from the test's inputs. Each engine's own copy, as it ran, is in Run it yourself under its result below.

On the map: click any element to see its line in the file and every engine's result there over time.

What happens

A 2 m deep tank drains through an outlet whose flow grows with the square root of the depth. The depth after five minutes follows an exact formula.

Why it matters

Storage tanks and ponds are how drainage systems hold back floods. Their draining rate sets how much room is ready for the next storm.

A good model must

  • get the tank depth within 5 mm
  • get the outlet flow within 5 L/s

Exact answer and models

Depth in the tank as it drains

The exact depth follows h(t) = (√h₀ − C t / 2A)²; every engine steps through it.

Point at the chart to read every model's value; click a name to hide or show it.

How models did

In rank order: by each model's percent difference from the right answer, the largest over the test's accuracy checks (lower is better; results within 10 % of each other share a rank). Mass error, timing and NSE are shown beside it, not folded in. Each model runs the same inputs. Compare them in the results viewer →

RankModelDifferenceLargest difference inRun time
1Hydra urban drainage0.25 %Worst depth error0.01 s
2OpenSWMM 6 finite volume0.28 %Worst depth error0.20 s
3=OpenSWMM 6 dynamic wave0.33 %Worst depth error0.20 s
3=SWMM 5.1.15 previous release0.33 %Worst depth error0.03 s
3=EPA SWMM 5.2.4 dynamic wave0.33 %Worst depth error0.03 s
Hydra
Hydra 17 (NEER AI, Rust): its urban-drainage engine on the SWMM data model, run through its CLI with default settings
#1 0.25 % off

Run time, finest grid: 0.01 s · INTEL(R) XEON(R) PLATINUM 8573C, 2 cores, 15.6 GB, Linux 6.17.0-1022-azure (GitHub Actions (github-hosted, ubuntu24))

Settings: swmm (DYNWAVE routing, network.json as a SWMM input file)

Worst depth error
• 1.1 mm off
0.25 % of the exact 0.441 m storage depth at 300 s
Worst flow error
• < 0.0001 m³/s off
0.017 % of the exact 0.332 m³/s outlet flow

Scored with method 3.0 · Score card: Hydra urban drainage (17.0.0/4.1.1)

OpenSWMM 6
OpenSWMM Engine v6 with its new explicit finite-volume routing (FLOW_ROUTING FV): one cell per conduit on the channel tests, its default cells per pipe on the drainage networks
#2 0.28 % off

Run time, finest grid: 0.20 s · INTEL(R) XEON(R) PLATINUM 8573C, 2 cores, 15.6 GB, Linux 6.17.0-1022-azure (GitHub Actions (github-hosted, ubuntu24))

Settings: swmm (FV routing, network.json as a SWMM input file)

Worst depth error
• 1.3 mm off
0.28 % of the exact 0.441 m storage depth at 300 s
Worst flow error
• 0.000779 m³/s off
0.23 % of the exact 0.332 m³/s outlet flow

Scored with method 3.0 · Score card: OpenSWMM Engine v6 finite volume (6.0.0a4.dev1)

OpenSWMM 6
OpenSWMM Engine v6 (HydroCouple's SWMM 6, pre-release) with dynamic-wave routing
#3= 0.33 % off

Run time, finest grid: 0.20 s · INTEL(R) XEON(R) PLATINUM 8573C, 2 cores, 15.6 GB, Linux 6.17.0-1022-azure (GitHub Actions (github-hosted, ubuntu24))

Settings: swmm (DYNWAVE routing, network.json as a SWMM input file)

Worst depth error
• 1.4 mm off
0.33 % of the exact 0.441 m storage depth at 300 s
Worst flow error
• < 0.0001 m³/s off
0.023 % of the exact 0.332 m³/s outlet flow

Scored with method 3.0 · Score card: OpenSWMM Engine v6 dynamic wave (6.0.0a4.dev1)

SWMM 5.1.15
EPA SWMM 5.1.15, the release before 5.2: on the parity tests compared with SWMM 5.2.4, on the exact tests scored like any other engine
#3= 0.33 % off

Run time, finest grid: 0.03 s · INTEL(R) XEON(R) PLATINUM 8573C, 2 cores, 15.6 GB, Linux 6.17.0-1022-azure (GitHub Actions (github-hosted, ubuntu24))

Settings: swmm (DYNWAVE routing, network.json as a SWMM input file)

Worst depth error
• 1.4 mm off
0.33 % of the exact 0.441 m storage depth at 300 s
Worst flow error
• < 0.0001 m³/s off
0.023 % of the exact 0.332 m³/s outlet flow

Scored with method 3.0 · Score card: EPA SWMM 5.1.15

EPA SWMM 5.2.4
EPA SWMM 5.2.4 with dynamic-wave routing; on the channel tests, the channel is written as one conduit per grid cell
#3= 0.33 % off

Run time, finest grid: 0.03 s · INTEL(R) XEON(R) PLATINUM 8573C, 2 cores, 15.6 GB, Linux 6.17.0-1022-azure (GitHub Actions (github-hosted, ubuntu24))

Settings: swmm (DYNWAVE routing, network.json as a SWMM input file)

Worst depth error
• 1.4 mm off
0.33 % of the exact 0.441 m storage depth at 300 s
Worst flow error
• < 0.0001 m³/s off
0.023 % of the exact 0.332 m³/s outlet flow

Scored with method 3.0 · Score card: EPA SWMM 5.2.4

Not run yet: InfoWorks ICM, MIKE+ (MOUSE), PCSWMM, XPSWMM, Flood Modeller, HEC-RAS
Run it and add yours →

Status of this test

Candidate. To become frozen it needs: maintainer review recorded.

Technical details for reviewers Checks, reference, inputs, sources

Checks and why each limit was chosen

CheckDifference measured as a percentage ofLatestDifferenceWhy this check
storage_depth
Linf of h · in the score
of the exact 0.441 m storage depth at 300 s–Storage depth within 5 mm (about 1 %) after 300 s. A first-order time integration with SWMM's default steps errs by well under a millimetre.
outlet_flow
Linf of Q · in the score
of the exact 0.332 m³/s outlet flow–Outlet flow within 5 L/s (1.5 %), the rating applied to the depth.
convergence
not applicable
––One storage node and one outlet: there is no grid to refine; the time step is the engine's own.

Reference

Exact solution from references.drainage.storage_drain.

Promotion checklist

Only frozen tests have fixed inputs and answers. This list is computed from the manifest and the published score cards; the rules are in the method.

  • ✓Data licence verifiedfor candidateanalytic-public
  • ✓All inputs availablefor candidateall committed or fetched by SHA-256
  • ✓Reference (truth) availablefor candidateanalytic generator
  • ✓Every tolerance justifiedfor candidateeach gating criterion has a rationale
  • ✓A published run passesfor frozen5 passing score card(s)
  • ✓Order of accuracy shownfor frozennot applicable: One storage node and one outlet: there is no grid to refine; the time step is the engine's own.
  • ✓Two independent codes passfor frozenpassing codes: EPA SWMM 5.1.15, EPA SWMM 5.2.4, Hydra urban drainage, OpenSWMM Engine v6 dynamic wave, OpenSWMM Engine v6 finite volume
  • ✗Maintainer review recordedfor frozenno maintainer review recorded

Inputs

FileRoleFormatSHA-256Get it
inputs/network.jsonnetworkjson884ebb86b552…Download

About this test

Physics

A prismatic storage of plan area \(A = 100\) m², initially 2 m deep, drains through an outlet rated \(Q = C h^b\) (\(C = 0.5\), \(b = 0.5\)) to a free outfall 5 m below. Continuity, \(A\,dh/dt = -C h^b\), integrates to

\[ h(t)^{1-b} = h_0^{1-b} - (1-b)\frac{C t}{A}, \]

so after 300 s the depth is 0.4412 m and the outlet passes 0.3321 m³/s.

What it checks

Storage continuity and the outlet rating through an unsteady drain-down: the time integration of a single node, where an engine's error is its time stepping alone.

Citation

Rossman, L. A. (2017). SWMM Reference Manual Volume II – Hydraulics. EPA/600/R-17/111.

Sources

Test A1D-003_storage_power_law_outlet · version 1.0.0 · data licence analytic-public