OpenHydro Bench
Exact answer known2D · free surfaceCandidate

Steady flow over a shaped bed

Does a 2D model balance slope, pressure and friction like the 1D answer?

Test A2A-010
MacDonald (1997)
Version 2.0.0

What happens

Steady flow down a 1 km × 100 m channel with a bed shaped so the exact depth is known. The run starts from a flat level and must settle to the right profile.

Why it matters

2D models are used for the same river reaches as 1D models; they must agree where the flow is effectively one-dimensional.

A good model must

  • keep the average depth error under 1 cm
  • store the right volume of water
  • 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 4 grids, from 50 m down to 6.25 m cells; the checks are scored on the 6.25 m grid, and each card lists the error on every grid. Compare them in the results viewer (depth maps and animation) →

RankModelDifferenceLargest difference inMass errorRun time
1=HEC-RAS 6.6 previous release · 2D SWE-EM<0.01 %Average depth error<0.01 %24.5 s
1=HEC-RAS 7.0 2D · SWE-EM<0.01 %Average depth error<0.01 %24.6 s
3=HEC-RAS 6.6 previous release0.01 %Average depth error<0.01 %25.4 s
3=HEC-RAS 7.0 1D · 2D SWE-ELM0.01 %Average depth error<0.01 %21.5 s
5TELEMAC-2D openTELEMAC 9.10.015 %Average depth error<0.01 %25.7 s
6Basilisk Saint-Venant0.017 %Average depth error0.017 %2.5 s
7=ANUGA 4.0.10.02 %Average depth error0.018 %41.2 s
7=LISFLOOD-FP 8.3 · DG20.021 %Average depth error0.021 %4.4 s
9LISFLOOD-FP 8.3 · FV10.033 %Average depth error0.033 %0.76 s
10=Landlab OverlandFlow0.08 %Average depth error0.053 %1.3 s
10=LISFLOOD-FP 8.3 · ACC0.082 %Average depth error0.056 %0.36 s
10=Demo 2D suite example0.087 %Average depth error0.087 %2.4 s
HEC-RAS 6.6
HEC-RAS 6.6 2D with its Eulerian shallow-water option (SWE-EM), the release before 7.0
#1= under 0.01 % off

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

Run time, finest grid: 24.5 s · AMD EPYC 7763 64-Core Processor, 2 cores, 16 GB, Windows 2025Server (GitHub Actions (github-hosted, win25-vs2026))

Settings: hecras 2D (headless terrain + seeded mesh + boundary lines, SWE-EM; depth = cell volume / area)

Average depth error
• 0.062 mm off
<0.01 % of the exact profile's mean depth, 0.905 m
Water conserved
· 0.0039 % error
conservation, reported beside the score
Error by grid (L1 h)
· 50 m: 0.000561 · 25 m: 0.000157 · 12.5 m: 0.000102 · 6.25 m: < 0.0001
reported, not counted · the checks above are scored on the 6.25 m grid
Improves with finer grids
· rate 1.02 (90 % range 0.43 to 1.60)
reported, not counted · the scheme's design order is 1

As SWE-ELM: 0.06 mm, but the error levels off near 0.1 mm on finer grids (rate 1.02, 90 % range 0.43 to 1.60).

Scored with method 3.0 · Score card: HEC-RAS 6.6 2D SWE-EM

HEC-RAS 7.0
HEC-RAS 7.0.1 2D with its Eulerian shallow-water option (SWE-EM), which HEC recommends for dam breaks
#1= under 0.01 % off

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

Run time, finest grid: 24.6 s · AMD EPYC 7763 64-Core Processor, 2 cores, 16 GB, Windows 2025Server (GitHub Actions (github-hosted, win25-vs2026))

Settings: hecras 2D (headless terrain + seeded mesh + boundary lines, SWE-EM; depth = cell volume / area)

Average depth error
• 0.062 mm off
<0.01 % of the exact profile's mean depth, 0.905 m
Water conserved
· 0.0039 % error
conservation, reported beside the score
Error by grid (L1 h)
· 50 m: 0.000566 · 25 m: 0.000158 · 12.5 m: 0.000103 · 6.25 m: < 0.0001
reported, not counted · the checks above are scored on the 6.25 m grid
Improves with finer grids
· rate 1.02 (90 % range 0.44 to 1.60)
reported, not counted · the scheme's design order is 1

Scored with method 3.0 · Score card: HEC-RAS 7.0.1 2D SWE-EM

HEC-RAS 6.6
HEC-RAS 6.6, the release before 7.0, run the same way (1D, and 2D with its default SWE-ELM): kept so a change between versions shows
#3= 0.01 % off

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

Run time, finest grid: 25.4 s · AMD EPYC 7763 64-Core Processor, 2 cores, 16 GB, Windows 2025Server (GitHub Actions (github-hosted, win25-vs2026))

Settings: hecras 2D (headless terrain + seeded mesh + boundary lines, SWE-ELM; depth = cell volume / area)

Average depth error
• 0.094 mm off
0.01 % of the exact profile's mean depth, 0.905 m
Water conserved
· 0.0096 % error
conservation, reported beside the score
Error by grid (L1 h)
· 50 m: 0.000544 · 25 m: 0.000162 · 12.5 m: 0.000118 · 6.25 m: < 0.0001
reported, not counted · the checks above are scored on the 6.25 m grid
Improves with finer grids
· rate 0.81 (90 % range 0.11 to 1.50)
reported, not counted · the scheme's design order is 1

Very accurate (0.09 mm), but the error stops falling below about 0.1 mm on finer grids (0.54, 0.16, 0.12, 0.09 mm), so its convergence rate's range is wide (0.11 to 1.50). HEC-RAS stops iterating at its default water-surface tolerance (0.01), which is the likely floor.

Scored with method 3.0 · Score card: HEC-RAS 6.6 2D SWE-ELM

HEC-RAS 7.0
HEC-RAS 7.0.1 (US Army Corps of Engineers), built and run headless with its default settings; in 2D, its default full shallow-water option (SWE-ELM)
#3= 0.01 % off

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

Run time, finest grid: 21.5 s · AMD EPYC 9V74 80-Core Processor, 2 cores, 16 GB, Windows 2025Server (GitHub Actions (github-hosted, win25-vs2026))

Settings: hecras 2D (headless terrain + seeded mesh + boundary lines, SWE-ELM; depth = cell volume / area)

Average depth error
• 0.094 mm off
0.01 % of the exact profile's mean depth, 0.905 m
Water conserved
· 0.0096 % error
conservation, reported beside the score
Error by grid (L1 h)
· 50 m: 0.000548 · 25 m: 0.000163 · 12.5 m: 0.000119 · 6.25 m: < 0.0001
reported, not counted · the checks above are scored on the 6.25 m grid
Improves with finer grids
· rate 0.81 (90 % range 0.12 to 1.50)
reported, not counted · the scheme's design order is 1

Scored with method 3.0 · Score card: HEC-RAS 7.0.1 2D SWE-ELM

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

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

Run time, finest grid: 25.7 s · 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.13 mm off
0.015 % of the exact profile's mean depth, 0.905 m
Water conserved
· 0.0053 % error
conservation, reported beside the score
Error by grid (L1 h)
· 50 m: 0.000989 · 25 m: 0.000522 · 12.5 m: 0.000265 · 6.25 m: 0.000132
reported, not counted · the checks above are scored on the 6.25 m grid
Improves with finer grids
· rate 0.97 (90 % range 0.93 to 1.01)
reported, not counted · the scheme's design order is 1

0.13 mm from the exact water level, converging at first order. The inflow discharge and outlet level are listed in the order TELEMAC numbers its open boundaries.

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

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)
#6 0.017 % off

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

Run time, finest grid: 2.5 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.16 mm off
0.017 % of the exact profile's mean depth, 0.905 m
Water conserved
· 0.017 % error
conservation, reported beside the score
Error by grid (L1 h)
· 50 m: 0.00126 · 25 m: 0.000617 · 12.5 m: 0.000307 · 6.25 m: 0.000155
reported, not counted · the checks above are scored on the 6.25 m grid
Improves with finer grids
· rate 1.01 (90 % range 0.98 to 1.03)
reported, not counted · the scheme's design order is 1

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

ANUGA
ANUGA 4.0.1 (Geoscience Australia / ANU), default settings on a triangular mesh
#7= 0.02 % off

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

Run time, finest grid: 41.2 s · Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz, 2 cores, 15.6 GB, Linux 6.17.0-1022-azure (GitHub Actions (github-hosted, ubuntu24))

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

Average depth error
• 0.18 mm off
0.02 % of the exact profile's mean depth, 0.905 m
Water conserved
· 0.018 % error
conservation, reported beside the score
Error by grid (L1 h)
· 50 m: 0.00162 · 25 m: 0.000708 · 12.5 m: 0.000351 · 6.25 m: 0.00018
reported, not counted · the checks above are scored on the 6.25 m grid
Improves with finer grids
· rate 1.05 (90 % range 0.94 to 1.16)
reported, not counted · the scheme's design order is 1

Scored with method 3.0 · Score card: ANUGA 4.0.1

LISFLOOD-FP DG2
LISFLOOD-FP 8.3, second-order discontinuous Galerkin solver
#7= 0.021 % off

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

Run time, finest grid: 4.4 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.19 mm off
0.021 % of the exact profile's mean depth, 0.905 m
Water conserved
· 0.021 % error
conservation, reported beside the score
Error by grid (L1 h)
· 50 m: 0.00255 · 25 m: 0.000841 · 12.5 m: 0.000389 · 6.25 m: 0.00019
reported, not counted · the checks above are scored on the 6.25 m grid
Improves with finer grids
· rate 1.24 (90 % range 0.96 to 1.51)
reported, not counted · the scheme's design order is 1

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

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

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

Run time, finest grid: 0.76 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.3 mm off
0.033 % of the exact profile's mean depth, 0.905 m
Water conserved
· 0.033 % error
conservation, reported beside the score
Error by grid (L1 h)
· 50 m: 0.00227 · 25 m: 0.00118 · 12.5 m: 0.000595 · 6.25 m: 0.000297
reported, not counted · the checks above are scored on the 6.25 m grid
Improves with finer grids
· rate 0.98 (90 % range 0.96 to 1.00)
reported, not counted · the scheme's design order is 1

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

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
#10= 0.08 % off

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

Run time, finest grid: 1.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: landlab.components.OverlandFlow (local inertial, defaults; a node per cell centre)

Average depth error
• 0.73 mm off
0.08 % of the exact profile's mean depth, 0.905 m
Water conserved
· 0.053 % error
conservation, reported beside the score
Error by grid (L1 h)
· 50 m: 0.00231 · 25 m: 0.000861 · 12.5 m: 0.000661 · 6.25 m: 0.000727
reported, not counted · the checks above are scored on the 6.25 m grid
Improves with finer grids
· rate 0.54 (90 % range −0.19 to 1.27)
reported, not counted · the scheme's design order is 1

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
#10= 0.082 % off

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

Run time, finest grid: 0.36 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
• 0.74 mm off
0.082 % of the exact profile's mean depth, 0.905 m
Water conserved
· 0.056 % error
conservation, reported beside the score
Error by grid (L1 h)
· 50 m: 0.0024 · 25 m: 0.00084 · 12.5 m: 0.000666 · 6.25 m: 0.000738
reported, not counted · the checks above are scored on the 6.25 m grid
Improves with finer grids
· rate 0.54 (90 % range −0.24 to 1.32)
reported, not counted · the scheme's design order is 1

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

Demo 2D
Worked example that ships with the suite: first-order finite volume
#10= 0.087 % off

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

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

Average depth error
• 0.79 mm off
0.087 % of the exact profile's mean depth, 0.905 m
Water conserved
· 0.087 % error
conservation, reported beside the score
Error by grid (L1 h)
· 50 m: 0.00668 · 25 m: 0.00326 · 12.5 m: 0.0016 · 6.25 m: 0.000791
reported, not counted · the checks above are scored on the 6.25 m grid
Improves with finer grids
· rate 1.03 (90 % range 1.02 to 1.03)
reported, not counted · the scheme's design order is 1

Scored with method 3.0 · Score card: demo-swe2d (first-order FV, HLL + hydrostatic reconstruction)

Not run yet: 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.1 mm0.3 mm1 mm3 mm6.2512.52550grid cell sizeDemo 2D suite example: rate 1HEC-RAS 7.0 1D · 2D SWE-ELM: rate 0.4HEC-RAS 7.0 2D · SWE-EM: rate 0.68TELEMAC-2D openTELEMAC 9.1: rate 0.99ANUGA 4.0.1: rate 0.99LISFLOOD-FP 8.3 · FV1: rate 0.99LISFLOOD-FP 8.3 · DG2: rate 1.1LISFLOOD-FP 8.3 · ACC: rate 0.093Basilisk Saint-Venant: rate 0.99Landlab OverlandFlow: rate 0.12HEC-RAS 6.6 previous release: rate 0.39HEC-RAS 6.6 previous release · 2D SWE-EM: rate 0.67
Demo 2D · rate 1HEC-RAS 7.0 · rate 0.4HEC-RAS 7.0 · rate 0.68TELEMAC-2D · rate 0.99ANUGA · rate 0.99LISFLOOD-FP FV1 · rate 0.99LISFLOOD-FP DG2 · rate 1.1LISFLOOD-FP ACC · rate 0.093Basilisk · rate 0.99Landlab · rate 0.12HEC-RAS 6.6 · rate 0.39HEC-RAS 6.6 · rate 0.67

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
depth_L1
L1 of h · in the score
of the exact profile's mean depth, 0.905 m–Mean depth error below 1 cm on the finest grid (1.3 % of the 0.74 m outlet depth); a scheme that is not well balanced over the sloping bed, or that mis-applies friction, settles to a visibly different profile.
mass
global_mass_error of volume · conservation, beside the score
already a percentage–Water stored in the channel within 0.5 % of the exact profile: confirms the run has reached the steady state rather than a different equilibrium.
convergence
observed order of L1 error in h · reported, not counted
the design order, 1–Measured from the error on every refinement level, as in ASME V&V 20.

Reference

Exact solution from references.macdonald_2d.depth_velocity.

More figures

Steady water surface along the channel-0.2500.250.50.7502004006008001,000Distance x (m)Elevation (m)Exact water surfaceDemo solver, centreline, t = 1 h: 3.125, 0.807Demo solver, centreline, t = 1 h: 9.375, 0.806Demo solver, centreline, t = 1 h: 15.62, 0.806Demo solver, centreline, t = 1 h: 21.88, 0.805Demo solver, centreline, t = 1 h: 28.12, 0.805Demo solver, centreline, t = 1 h: 34.38, 0.804Demo solver, centreline, t = 1 h: 40.62, 0.803Demo solver, centreline, t = 1 h: 46.88, 0.803Demo solver, centreline, t = 1 h: 53.12, 0.802Demo solver, centreline, t = 1 h: 59.38, 0.802Demo solver, centreline, t = 1 h: 65.62, 0.801Demo solver, centreline, t = 1 h: 71.88, 0.801Demo solver, centreline, t = 1 h: 78.12, 0.8Demo solver, centreline, t = 1 h: 84.38, 0.799Demo solver, centreline, t = 1 h: 90.62, 0.799Demo solver, centreline, t = 1 h: 96.88, 0.798Demo solver, centreline, t = 1 h: 103, 0.798Demo solver, centreline, t = 1 h: 109, 0.797Demo solver, centreline, t = 1 h: 116, 0.797Demo solver, centreline, t = 1 h: 122, 0.796Demo solver, centreline, t = 1 h: 128, 0.796Demo solver, centreline, t = 1 h: 134, 0.795Demo solver, centreline, t = 1 h: 141, 0.795Demo solver, centreline, t = 1 h: 147, 0.794Demo solver, centreline, t = 1 h: 153, 0.794Demo solver, centreline, t = 1 h: 159, 0.793Demo solver, centreline, t = 1 h: 166, 0.793Demo solver, centreline, t = 1 h: 172, 0.792Demo solver, centreline, t = 1 h: 178, 0.792Demo solver, centreline, t = 1 h: 184, 0.792Demo solver, centreline, t = 1 h: 191, 0.791Demo solver, centreline, t = 1 h: 197, 0.791Demo solver, centreline, t = 1 h: 203, 0.79Demo solver, centreline, t = 1 h: 209, 0.79Demo solver, centreline, t = 1 h: 216, 0.79Demo solver, centreline, t = 1 h: 222, 0.789Demo solver, centreline, t = 1 h: 228, 0.789Demo solver, centreline, t = 1 h: 234, 0.789Demo solver, centreline, t = 1 h: 241, 0.788Demo solver, centreline, t = 1 h: 247, 0.788Demo solver, centreline, t = 1 h: 253, 0.788Demo solver, centreline, t = 1 h: 259, 0.787Demo solver, centreline, t = 1 h: 266, 0.787Demo solver, centreline, t = 1 h: 272, 0.787Demo solver, centreline, t = 1 h: 278, 0.786Demo solver, centreline, t = 1 h: 284, 0.786Demo solver, centreline, t = 1 h: 291, 0.786Demo solver, centreline, t = 1 h: 297, 0.786Demo solver, centreline, t = 1 h: 303, 0.785Demo solver, centreline, t = 1 h: 309, 0.785Demo solver, centreline, t = 1 h: 316, 0.785Demo solver, centreline, t = 1 h: 322, 0.785Demo solver, centreline, t = 1 h: 328, 0.784Demo solver, centreline, t = 1 h: 334, 0.784Demo solver, centreline, t = 1 h: 341, 0.784Demo solver, centreline, t = 1 h: 347, 0.784Demo solver, centreline, t = 1 h: 353, 0.784Demo solver, centreline, t = 1 h: 359, 0.783Demo solver, centreline, t = 1 h: 366, 0.783Demo solver, centreline, t = 1 h: 372, 0.783Demo solver, centreline, t = 1 h: 378, 0.783Demo solver, centreline, t = 1 h: 384, 0.783Demo solver, centreline, t = 1 h: 391, 0.782Demo solver, centreline, t = 1 h: 397, 0.782Demo solver, centreline, t = 1 h: 403, 0.782Demo solver, centreline, t = 1 h: 409, 0.782Demo solver, centreline, t = 1 h: 416, 0.782Demo solver, centreline, t = 1 h: 422, 0.782Demo solver, centreline, t = 1 h: 428, 0.782Demo solver, centreline, t = 1 h: 434, 0.781Demo solver, centreline, t = 1 h: 441, 0.781Demo solver, centreline, t = 1 h: 447, 0.781Demo solver, centreline, t = 1 h: 453, 0.781Demo solver, centreline, t = 1 h: 459, 0.781Demo solver, centreline, t = 1 h: 466, 0.781Demo solver, centreline, t = 1 h: 472, 0.781Demo solver, centreline, t = 1 h: 478, 0.78Demo solver, centreline, t = 1 h: 484, 0.78Demo solver, centreline, t = 1 h: 491, 0.78Demo solver, centreline, t = 1 h: 497, 0.78Demo solver, centreline, t = 1 h: 503, 0.78Demo solver, centreline, t = 1 h: 509, 0.78Demo solver, centreline, t = 1 h: 516, 0.779Demo solver, centreline, t = 1 h: 522, 0.779Demo solver, centreline, t = 1 h: 528, 0.779Demo solver, centreline, t = 1 h: 534, 0.779Demo solver, centreline, t = 1 h: 541, 0.779Demo solver, centreline, t = 1 h: 547, 0.779Demo solver, centreline, t = 1 h: 553, 0.779Demo solver, centreline, t = 1 h: 559, 0.778Demo solver, centreline, t = 1 h: 566, 0.778Demo solver, centreline, t = 1 h: 572, 0.778Demo solver, centreline, t = 1 h: 578, 0.778Demo solver, centreline, t = 1 h: 584, 0.778Demo solver, centreline, t = 1 h: 591, 0.777Demo solver, centreline, t = 1 h: 597, 0.777Demo solver, centreline, t = 1 h: 603, 0.777Demo solver, centreline, t = 1 h: 609, 0.777Demo solver, centreline, t = 1 h: 616, 0.777Demo solver, centreline, t = 1 h: 622, 0.776Demo solver, centreline, t = 1 h: 628, 0.776Demo solver, centreline, t = 1 h: 634, 0.776Demo solver, centreline, t = 1 h: 641, 0.776Demo solver, centreline, t = 1 h: 647, 0.775Demo solver, centreline, t = 1 h: 653, 0.775Demo solver, centreline, t = 1 h: 659, 0.775Demo solver, centreline, t = 1 h: 666, 0.775Demo solver, centreline, t = 1 h: 672, 0.774Demo solver, centreline, t = 1 h: 678, 0.774Demo solver, centreline, t = 1 h: 684, 0.774Demo solver, centreline, t = 1 h: 691, 0.773Demo solver, centreline, t = 1 h: 697, 0.773Demo solver, centreline, t = 1 h: 703, 0.773Demo solver, centreline, t = 1 h: 709, 0.772Demo solver, centreline, t = 1 h: 716, 0.772Demo solver, centreline, t = 1 h: 722, 0.772Demo solver, centreline, t = 1 h: 728, 0.771Demo solver, centreline, t = 1 h: 734, 0.771Demo solver, centreline, t = 1 h: 741, 0.771Demo solver, centreline, t = 1 h: 747, 0.77Demo solver, centreline, t = 1 h: 753, 0.77Demo solver, centreline, t = 1 h: 759, 0.769Demo solver, centreline, t = 1 h: 766, 0.769Demo solver, centreline, t = 1 h: 772, 0.769Demo solver, centreline, t = 1 h: 778, 0.768Demo solver, centreline, t = 1 h: 784, 0.768Demo solver, centreline, t = 1 h: 791, 0.767Demo solver, centreline, t = 1 h: 797, 0.767Demo solver, centreline, t = 1 h: 803, 0.766Demo solver, centreline, t = 1 h: 809, 0.766Demo solver, centreline, t = 1 h: 816, 0.765Demo solver, centreline, t = 1 h: 822, 0.765Demo solver, centreline, t = 1 h: 828, 0.764Demo solver, centreline, t = 1 h: 834, 0.764Demo solver, centreline, t = 1 h: 841, 0.763Demo solver, centreline, t = 1 h: 847, 0.763Demo solver, centreline, t = 1 h: 853, 0.762Demo solver, centreline, t = 1 h: 859, 0.762Demo solver, centreline, t = 1 h: 866, 0.761Demo solver, centreline, t = 1 h: 872, 0.76Demo solver, centreline, t = 1 h: 878, 0.76Demo solver, centreline, t = 1 h: 884, 0.759Demo solver, centreline, t = 1 h: 891, 0.759Demo solver, centreline, t = 1 h: 897, 0.758Demo solver, centreline, t = 1 h: 903, 0.758Demo solver, centreline, t = 1 h: 909, 0.757Demo solver, centreline, t = 1 h: 916, 0.756Demo solver, centreline, t = 1 h: 922, 0.756Demo solver, centreline, t = 1 h: 928, 0.755Demo solver, centreline, t = 1 h: 934, 0.755Demo solver, centreline, t = 1 h: 941, 0.754Demo solver, centreline, t = 1 h: 947, 0.754Demo solver, centreline, t = 1 h: 953, 0.753Demo solver, centreline, t = 1 h: 959, 0.752Demo solver, centreline, t = 1 h: 966, 0.752Demo solver, centreline, t = 1 h: 972, 0.751Demo solver, centreline, t = 1 h: 978, 0.751Demo solver, centreline, t = 1 h: 984, 0.75Demo solver, centreline, t = 1 h: 991, 0.749Demo solver, centreline, t = 1 h: 997, 0.749
  • Exact water surface
  • Demo solver, centreline, t = 1 h

Ochre: the bed built so that this surface is exact. The solver starts from a uniform depth and must settle onto it.

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 frozen12 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, HEC-RAS 6.6 2D SWE-ELM, HEC-RAS 6.6 2D SWE-EM, HEC-RAS 7.0.1 2D SWE-ELM, HEC-RAS 7.0.1 2D SWE-EM, LISFLOOD-FP 8.3 ACC, LISFLOOD-FP 8.3 DG2, LISFLOOD-FP 8.3 FV1, Landlab 2.11.0 OverlandFlow, demo-swe2d, openTELEMAC-2D v9.1.1
  • ✗Maintainer review recordedfor frozenno maintainer review recorded

Inputs

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

About this test

Physics

MacDonald's method: prescribe a smooth depth and a discharge, then build the bed so the steady shallow-water equations with Manning friction hold exactly. Here A1F-001's profile, \(h(x) = (4/g)^{1/3}\,[1 + \tfrac12 e^{-16(x/L - 1/2)^2}]\), fills a 1000 m × 100 m channel with slip walls, unit discharge \(q = 0.2\) m²/s and \(n = 0.03\). The flow is uniform across the channel, so \(h = h(x)\), \(u = q/h\), \(v = 0\) over the bed

$$\frac{dz_b}{dx} = -\left(1 - \frac{q^2}{g h^3}\right)\frac{dh}{dx} - \frac{n^2 q^2}{h^{10/3}} .$$

What it checks

That a 2D solver balances pressure, bed slope and friction on its own grid. Only the inflow discharge and the outlet depth are imposed; the run starts at a uniform depth and must settle onto the exact surface. The demo first-order finite-volume solver converges at order 1.02.

Case history

  • 2.0.0 — the 1.x reference held the free surface flat while water flowed without friction, which is not a solution of the shallow-water equations; it is replaced by the construction above.
  • 2.0.0, October 2026 — a typo in inputs/params.json (the text gave the downstream depth as 0.742 m) corrected to 0.748 m, the depth the reference and every run use. No result changes.

Citation

MacDonald, I., Baines, M. J., Nichols, N. K., and Samuels, P. G. (1997). "Analytic benchmark solutions for open-channel flows." J. Hydraul. Eng., 123(11), 1041–1045. https://doi.org/10.1061/(ASCE)0733-9429(1997)123:11(1041)

Sources

Test A2A-010_macdonald_2d · version 2.0.0 · data licence analytic-public