OpenHydro Bench
Exact answer known1D · free surfaceCandidate

Calm flow over a hump

Does the model get the dip in the water surface over a bump in the bed right?

Test A1F-040
Delestre (2013)
Version 1.0.0

Hidden at first because they are far off the exact answer: LISFLOOD-FP ACC, EPA SWMM 5.2.4, OpenSWMM 6 dynamic wave, Hydra, SWMM 5.1.15, Landlab. Click a name to show it.

What happens

Water flows steadily and calmly along a 25 m channel over a smooth 20 cm hump. The surface dips over the hump by an amount fixed exactly by conservation of flow and energy.

Why it matters

Weirs, sills, bridge piers and bed forms all change the water level this way. A model that gets the dip wrong gets every structure's backwater wrong.

A good model must

  • keep the average depth error under 5 mm
  • carry the same flow along the whole channel
  • get steadily more accurate on finer grids

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 on 3 grids, from 0.2 m down to 0.05 m cells; the checks are scored on the 0.05 m grid, and each card lists the error on every grid. Compare them in the results viewer →

RankModelDifferenceLargest difference inRun time
1Basilisk Saint-Venant<0.01 %Average depth error3.6 s
2=LISFLOOD-FP 8.3 · FV10.03 %Average depth error10.0 s
2=LISFLOOD-FP 8.3 · DG20.03 %Average depth error46.9 s
2=OpenSWMM 6 finite volume0.03 %Average depth error28.3 s
5TELEMAC-2D openTELEMAC 9.10.047 %Average depth error3.8 min
6ANUGA 4.0.10.12 %Average flow error–
7Landlab OverlandFlow28 %Average depth error16.9 s
8LISFLOOD-FP 8.3 · ACC64 %Average flow error6.3 s
9=SWMM 5.1.15 previous release174 %Average flow error1.8 min
9=EPA SWMM 5.2.4 dynamic wave174 %Average flow error1.8 min
11Hydra urban drainage199 %Average flow error1.4 min
12OpenSWMM 6 dynamic wave236 %Average flow error1.9 min

The SWMM dynamic-wave engines (EPA SWMM 5.2.4, OpenSWMM v6 dynamic wave and Hydra) never settle on this frictionless channel with 10 and 5 cm conduits, even with a 0.0025 s routing step: depths swing by more than a metre. On 20 cm conduits SWMM 5.2.4 is within 8 mm on the subcritical case. OpenSWMM v6's finite-volume routing stays close on all four bump tests.

Basilisk
Basilisk (Popinet, basilisk.fr), its second-order well-balanced Saint-Venant solver on a uniform Cartesian grid with its defaults; Manning friction added as the usual semi-implicit term (it has none built in)
#1 under 0.01 % off

Rate the error shrinks on finer grids: 2.2 (90 % range 1.9 to 2.4); the method's expected rate is 0.8 or more

Run time, finest grid: 3.6 s · Intel(R) Xeon(R) 6973P-C, 2 cores, 15.6 GB, Linux 6.17.0-1022-azure (GitHub Actions (github-hosted, ubuntu24))

Settings: basilisk saint-venant.h (uniform Cartesian grid, defaults; a C program per test, generated by scripts/run_basilisk.py)

Average depth error
• 0.0083 mm off
<0.01 % of the exact profile's mean depth, 1.97 m
Average flow error
• < 0.0001 m²/s off
<0.01 % of the 4.42 m²/s unit discharge
Error by grid (L1 h)
· 0.2 m: 0.000163 · 0.1 m: < 0.0001 · 0.05 m: < 0.0001
reported, not counted · the checks above are scored on the 0.05 m grid
Improves with finer grids
· rate 2.15 (90 % range 1.94 to 2.36)
reported, not counted · the scheme's design order is 2

Scored with method 3.0 · Score card: Basilisk Saint-Venant (snapshot de851a91)

LISFLOOD-FP FV1
LISFLOOD-FP 8.3, first-order finite-volume solver (full shallow-water equations)
#2= 0.03 % off

Rate the error shrinks on finer grids: 1 (90 % range 0.99 to 1); the method's expected rate is 0.8 or more

Run time, finest grid: 10.0 s · AMD EPYC 7763 64-Core Processor, 2 cores, 15.6 GB, Linux 6.17.0-1022-azure (GitHub Actions (github-hosted, ubuntu24))

Settings: lisflood (fv1 solver, defaults; CPU, double precision)

Average depth error
• 0.58 mm off
0.03 % of the exact profile's mean depth, 1.97 m
Average flow error
• 0.000951 m²/s off
0.022 % of the 4.42 m²/s unit discharge
Error by grid (L1 h)
· 0.2 m: 0.00232 · 0.1 m: 0.00116 · 0.05 m: 0.000584
reported, not counted · the checks above are scored on the 0.05 m grid
Improves with finer grids
· rate 1.00 (90 % range 0.99 to 1.00)
reported, not counted · the scheme's design order is 2

Scored with method 3.0 · Score card: LISFLOOD-FP 8.3 FV1

LISFLOOD-FP DG2
LISFLOOD-FP 8.3, second-order discontinuous Galerkin solver
#2= 0.03 % off

Rate the error shrinks on finer grids: 1 (90 % range 0.99 to 1); the method's expected rate is 0.8 or more

Run time, finest grid: 46.9 s · AMD EPYC 7763 64-Core Processor, 2 cores, 15.6 GB, Linux 6.17.0-1022-azure (GitHub Actions (github-hosted, ubuntu24))

Settings: lisflood (dg2 solver, defaults; CPU, double precision)

Average depth error
• 0.58 mm off
0.03 % of the exact profile's mean depth, 1.97 m
Average flow error
• 0.000951 m²/s off
0.022 % of the 4.42 m²/s unit discharge
Error by grid (L1 h)
· 0.2 m: 0.00232 · 0.1 m: 0.00117 · 0.05 m: 0.000584
reported, not counted · the checks above are scored on the 0.05 m grid
Improves with finer grids
· rate 1.00 (90 % range 0.99 to 1.00)
reported, not counted · the scheme's design order is 2

Scored with method 3.0 · Score card: LISFLOOD-FP 8.3 DG2

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.03 % off

Rate the error shrinks on finer grids: 0.99 (90 % range 0.99 to 1); the method's expected rate is 0.8 or more

Run time, finest grid: 28.3 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, conduit per grid cell)

Average depth error
• 0.59 mm off
0.03 % of the exact profile's mean depth, 1.97 m
Average flow error
• 0.000492 m²/s off
0.011 % of the 4.42 m²/s unit discharge
Error by grid (L1 h)
· 0.2 m: 0.00233 · 0.1 m: 0.00117 · 0.05 m: 0.000586
reported, not counted · the checks above are scored on the 0.05 m grid
Improves with finer grids
· rate 0.99 (90 % range 0.99 to 1.00)
reported, not counted · the scheme's design order is 2

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

TELEMAC-2D
openTELEMAC-2D 9.1.1, run with its default finite-volume settings
#5 0.047 % off

Rate the error shrinks on finer grids: 0.97 (90 % range 0.94 to 1); the method's expected rate is 0.8 or more

Run time, finest grid: 3.8 min · AMD EPYC 7763 64-Core Processor, 2 cores, 15.6 GB, Linux 6.17.0-1022-azure (GitHub Actions (github-hosted, ubuntu24))

Settings: telemac2d (Selafin, centreline nodes)

Average depth error
• 0.92 mm off
0.047 % of the exact profile's mean depth, 1.97 m
Average flow error
• 0.000951 m²/s off
0.022 % of the 4.42 m²/s unit discharge
Error by grid (L1 h)
· 0.2 m: 0.00355 · 0.1 m: 0.00182 · 0.05 m: 0.000918
reported, not counted · the checks above are scored on the 0.05 m grid
Improves with finer grids
· rate 0.97 (90 % range 0.94 to 1.01)
reported, not counted · the scheme's design order is 2

Scored with method 3.0 · Score card: openTELEMAC-2D v9.1.1

ANUGA
ANUGA 4.0.1 (Geoscience Australia / ANU), default settings on a triangular mesh
#6 0.12 % off

Rate the error shrinks on finer grids: 0.94 (90 % range 0.69 to 1.2); the method's expected rate is 0.8 or more

Settings: anuga (rectangular_cross mesh, defaults, sampled at cell centres)

Average depth error
• 0.94 mm off
0.048 % of the exact profile's mean depth, 1.97 m
Average flow error
• 0.00516 m²/s off
0.12 % of the 4.42 m²/s unit discharge
Error by grid (L1 h)
· 0.2 m: 0.00346 · 0.1 m: 0.00172 · 0.05 m: 0.000942
reported, not counted · the checks above are scored on the 0.05 m grid
Improves with finer grids
· rate 0.94 (90 % range 0.69 to 1.19)
reported, not counted · the scheme's design order is 2

Scored with method 3.0 · Score card: ANUGA 4.0.1

Landlab
Landlab 2.11 (CSDMS), its OverlandFlow component: the local-inertial 2D flood scheme of de Almeida et al. (2012), written independently in NumPy, with its defaults
#7 28 % off

Rate the error shrinks on finer grids: 0.0021 (90 % range 0.00038 to 0.0039); the method's expected rate is 0.8 or more

Run time, finest grid: 16.9 s · AMD EPYC 7763 64-Core Processor, 2 cores, 15.6 GB, Linux 6.17.0-1022-azure (GitHub Actions (github-hosted, ubuntu24))

Settings: landlab.components.OverlandFlow (local inertial, defaults; a node per cell centre)

Average depth error
• 56 cm off
28 % of the exact profile's mean depth, 1.97 m
Average flow error
• 1.24 m²/s off
28 % of the 4.42 m²/s unit discharge
Error by grid (L1 h)
· 0.2 m: 0.557 · 0.1 m: 0.556 · 0.05 m: 0.555
reported, not counted · the checks above are scored on the 0.05 m grid
Improves with finer grids
· rate 0.00 (90 % range 0.00 to 0.00)
reported, not counted · the scheme's design order is 2

Scored with method 3.0 · Score card: Landlab 2.11.0 OverlandFlow

LISFLOOD-FP ACC
LISFLOOD-FP 8.3, the local-inertia solver it is best known for; it leaves out the advection term
#8 64 % off

Rate the error shrinks on finer grids: -0.13 (90 % range -0.27 to 0.011); the method's expected rate is 0.8 or more

Run time, finest grid: 6.3 s · AMD EPYC 7763 64-Core Processor, 2 cores, 15.6 GB, Linux 6.17.0-1022-azure (GitHub Actions (github-hosted, ubuntu24))

Settings: lisflood (acceleration solver, defaults; CPU, double precision)

Average depth error
• 67 cm off
34 % of the exact profile's mean depth, 1.97 m
Average flow error
• 2.82 m²/s off
64 % of the 4.42 m²/s unit discharge
Error by grid (L1 h)
· 0.2 m: 0.562 · 0.1 m: 0.632 · 0.05 m: 0.674
reported, not counted · the checks above are scored on the 0.05 m grid
Improves with finer grids
· rate −0.13 (90 % range −0.27 to 0.01)
reported, not counted · the scheme's design order is 2

Scored with method 3.0 · Score card: LISFLOOD-FP 8.3 ACC

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
#9= 174 % off

Rate the error shrinks on finer grids: -3.7 (90 % range -15 to 7); the method's expected rate is 0.8 or more

Run time, finest grid: 1.8 min · 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, conduit per grid cell)

Average depth error
• 1.45 m off
74 % of the exact profile's mean depth, 1.97 m
Average flow error
• 7.71 m²/s off
174 % of the 4.42 m²/s unit discharge
Error by grid (L1 h)
· 0.2 m: 0.00809 · 0.1 m: 0.838 · 0.05 m: 1.45
reported, not counted · the checks above are scored on the 0.05 m grid
Improves with finer grids
· rate −3.74 (90 % range −14.50 to 7.01)
reported, not counted · the scheme's design order is 2

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
#9= 174 % off

Rate the error shrinks on finer grids: -3.7 (90 % range -15 to 7); the method's expected rate is 0.8 or more

Run time, finest grid: 1.8 min · 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, conduit per grid cell)

Average depth error
• 1.45 m off
74 % of the exact profile's mean depth, 1.97 m
Average flow error
• 7.71 m²/s off
174 % of the 4.42 m²/s unit discharge
Error by grid (L1 h)
· 0.2 m: 0.00809 · 0.1 m: 0.838 · 0.05 m: 1.45
reported, not counted · the checks above are scored on the 0.05 m grid
Improves with finer grids
· rate −3.74 (90 % range −14.50 to 7.01)
reported, not counted · the scheme's design order is 2

Scored with method 3.0 · Score card: EPA SWMM 5.2.4

Hydra
Hydra 17 (NEER AI, Rust): its urban-drainage engine on the SWMM data model, run through its CLI with default settings
#11 199 % off

Rate the error shrinks on finer grids: -0.2 (90 % range -0.28 to -0.12); the method's expected rate is 0.8 or more

Run time, finest grid: 1.4 min · 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, conduit per grid cell)

Average depth error
• 1.5 m off
76 % of the exact profile's mean depth, 1.97 m
Average flow error
• 8.79 m²/s off
199 % of the 4.42 m²/s unit discharge
Error by grid (L1 h)
· 0.2 m: 1.14 · 0.1 m: 1.29 · 0.05 m: 1.5
reported, not counted · the checks above are scored on the 0.05 m grid
Improves with finer grids
· rate −0.20 (90 % range −0.28 to −0.12)
reported, not counted · the scheme's design order is 2

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

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

Rate the error shrinks on finer grids: -3.9 (90 % range -14 to 6.4); the method's expected rate is 0.8 or more

Run time, finest grid: 1.9 min · 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, conduit per grid cell)

Average depth error
• 1.86 m off
94 % of the exact profile's mean depth, 1.97 m
Average flow error
• 10.4 m²/s off
236 % of the 4.42 m²/s unit discharge
Error by grid (L1 h)
· 0.2 m: 0.0086 · 0.1 m: 0.893 · 0.05 m: 1.86
reported, not counted · the checks above are scored on the 0.05 m grid
Improves with finer grids
· rate −3.88 (90 % range −14.16 to 6.41)
reported, not counted · the scheme's design order is 2

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

Not run yet: HEC-RAS 7.0, GeoClaw, TUFLOW, MIKE 21, Iber, BASEMENT, Delft3D FM
Run it and add yours →

Error shrinks as the grid gets finer

Average error on each grid. A steeper line means the model converges faster.

0.01 mm0.03 mm0.1 mm0.3 mm1 mm3 mm1 cm3 cm10 cm30 cm1 m0.050.050.10.10.10.20.20.2grid cell sizeTELEMAC-2D openTELEMAC 9.1: rate 0.97ANUGA 4.0.1: rate 0.94LISFLOOD-FP 8.3 · FV1: rate 1LISFLOOD-FP 8.3 · DG2: rate 1LISFLOOD-FP 8.3 · ACC: rate -0.13EPA SWMM 5.2.4 dynamic wave: rate -3.7OpenSWMM 6 dynamic wave: rate -3.9OpenSWMM 6 finite volume: rate 0.99Hydra urban drainage: rate -0.2SWMM 5.1.15 previous release: rate -3.7Basilisk Saint-Venant: rate 2.2Landlab OverlandFlow: rate 0.0021
TELEMAC-2D · rate 0.97ANUGA · rate 0.94LISFLOOD-FP FV1 · rate 1LISFLOOD-FP DG2 · rate 1LISFLOOD-FP ACC · rate -0.13EPA SWMM 5.2.4 · rate -3.7OpenSWMM 6 · rate -3.9OpenSWMM 6 · rate 0.99Hydra · rate -0.2SWMM 5.1.15 · rate -3.7Basilisk · rate 2.2Landlab · rate 0.0021

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
L1_h
L1 of h · in the score
of the exact profile's mean depth, 1.97 m–Average depth error under 5 mm (0.25 % of the depth) once steady.
L1_Q
L1 of Q · in the score
of the 4.42 m²/s unit discharge–Discharge within 1 % of q everywhere on average: a steady state must carry the inflow along the whole channel.
convergence
observed order of L1 error in h · reported, not counted
the design order, 2–Measured from the error on every refinement level, as in ASME V&V 20.

Reference

Exact solution from references.swashes.steady_bump.

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 frozen6 passing score card(s)
  • ✓Order of accuracy shownfor frozenobserved order meets the minimum
  • ✓Two independent codes passfor frozenpassing codes: ANUGA 4.0.1, Basilisk Saint-Venant, LISFLOOD-FP 8.3 DG2, LISFLOOD-FP 8.3 FV1, OpenSWMM Engine v6 finite volume, openTELEMAC-2D v9.1.1
  • ✗Maintainer review recordedfor frozenno maintainer review recorded

Inputs

FileRoleFormatSHA-256Get it
inputs/params.jsonparametersjson29539a588884…Download

About this test

Physics

A frictionless 25 m channel with a parabolic bump \(z = 0.2 - 0.05 (x - 10)^2\) on \(8 < x < 12\) carries \(q = 4.42\) m²/s, held at 2 m downstream. In steady flow the discharge is constant and so is the Bernoulli head, so at every point the depth is the subcritical root of

\[ \frac{q^2}{2 g h^2} + h + z = \frac{q^2}{2 g h_{out}^2} + h_{out}, \]

found to \(10^{-14}\) m (references/swashes.py). The surface dips to 1.71 m over the crest. The run starts from still water at 2 m and lasts 300 s.

What it checks

The balance between the bed slope and the pressure gradient in moving water, and that a steady state carries the same discharge everywhere.

Citation

Delestre, O., et al. (2013). SWASHES: a compilation of shallow water analytic solutions for hydraulic and environmental studies. Int. J. Numer. Meth. Fluids, 72(3), 269–300. doi:10.1002/fld.3741. Goutal, N., and Maurel, F. (1997), EDF report HE-43/97/016/B.

Sources

  • Delestre, O., Lucas, C., Ksinant, P.-A., Darboux, F., Laguerre, C., Vo, T. N. T., James, F., Cordier, S. (2013). SWASHES: a compilation of shallow water analytic solutions for hydraulic and environmental studies. doi:10.1002/fld.3741
  • Goutal, N., Maurel, F. (1997). Proceedings of the 2nd workshop on dam-break wave simulation (EDF HE-43/97/016/B). www.irit.fr/swashes

Test A1F-040_swashes_bump_subcritical · version 1.0.0 · data licence analytic-public