Brutsaert Recession Validation: Deep Linearized Aquifer#

Note

This page and its static assets are auto-generated by python -m tools.doc_gallery. The Sphinx build only reads committed PNG and JSON artifacts.

This transient validation case checks that the available modflow_nwt, modflow6, and PETSc boussinesq backends reproduce the linearized Brutsaert recession law on a deep aquifer.

Case Setup#

  • homogeneous 1D strip with west divide and east imposed head,

  • steady uniform recharge used only to build the initial saturated state,

  • transient recession started by switching recharge off,

  • comparison performed on outlet discharge Q(t).

  • Available solver variants: MODFLOW-NWT, MODFLOW 6, MODFLOW 6 irregular triangles, Boussinesq.

What It Shows#

  • Integrated-discharge recession behavior across MODFLOW-NWT, MODFLOW 6, and the PETSc Boussinesq runtime in the near-linear regime

  • Primary metrics: relative discharge RMSE, relative discharge max abs error, cross-row spread, positive-increment check.

  • Solver-specific figures and metrics are shown side by side so the same benchmark can be read across backends.

Analytical Reference#

  • Exponential Brutsaert recession law for a deep aquifer

Solver Coverage#

  • Default solver: MODFLOW-NWT

  • Available variants: MODFLOW-NWT, MODFLOW 6, MODFLOW 6 irregular triangles, Boussinesq

Metrics - Solution: exponential - Initial discharge: 2.707439e-04 m3/s - Characteristic time: 15.01 d - Relative RMSE: 0.7527 - Relative max abs error: 0.8255 - Cross-row head spread: 4.97e-05 m

  • Config file: validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflownwt.toml

  • Tolerances: validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances_modflownwt.toml

python -m validation_cases.analytical.transient.brutsaert_recession_linearized_deep_1d.run_case --no-show --solver modflow_nwt

Metrics - Solution: exponential - Initial discharge: 2.709876e-04 m3/s - Characteristic time: 15.01 d - Relative RMSE: 0.0191 - Relative max abs error: 0.0361 - Cross-row head spread: 2.08e-07 m

  • Config file: validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6.toml

  • Tolerances: validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances.toml

python -m validation_cases.analytical.transient.brutsaert_recession_linearized_deep_1d.run_case --no-show --solver modflow6

Metrics - Solution: exponential - Initial discharge: 2.751283e-04 m3/s - Characteristic time: 15.01 d - Relative RMSE: 0.0202 - Relative max abs error: 0.0349 - Cross-row head spread: 7.11e-15 m

  • Config file: validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6_irregular_tri.toml

  • Tolerances: validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances_modflow6_irregular_tri.toml

python -m validation_cases.analytical.transient.brutsaert_recession_linearized_deep_1d.run_case --no-show --solver modflow6_irregular_tri

Metrics - Solution: exponential - Initial discharge: 2.743056e-04 m3/s - Characteristic time: 15.01 d - Relative RMSE: 0.0243 - Relative max abs error: 0.0771 - Cross-row head spread: 7.11e-15 m

  • Config file: validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_boussinesq.toml

  • Tolerances: validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances_boussinesq.toml

python -m validation_cases.analytical.transient.brutsaert_recession_linearized_deep_1d.run_case --no-show --solver boussinesq

Reproduce#

Run the underlying example or validation case with:

python -m validation_cases.analytical.transient.brutsaert_recession_linearized_deep_1d.run_case --no-show

Refresh the committed gallery artifacts with:

python -m tools.doc_gallery

Case Parameters#

Reference Parameters#

Field

Meaning

Value

Source

solution

Named analytical solution variant used by the comparison helper.

exponential

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

hydraulic_conductivity_m_per_s

Hydraulic conductivity used by the analytical or benchmark reference.

0.0001 m/s

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

specific_yield

Specific yield used by the transient reference formulation.

0.1 -

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

aquifer_thickness_m

Aquifer thickness used by the reference formulation.

50 m

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

watershed_area_m2

Watershed area used by the recession reference.

12000 m2

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

channel_length_m

Characteristic channel length used by the recession reference.

30 m

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

active_drainage_fraction

Fraction of the domain where the analytical drainage condition is active.

1

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

linearization_constant

Constant used by the linearized analytical formulation.

0.25

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

compare_start_day

Start day retained when comparing the numerical and reference time series.

0

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

nper

Number of time periods used by the analytical or benchmark helper.

12

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

dt_seconds

Reference time step used by the analytical evaluator.

864000 s

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

Common Numerical Setup#

Field

Meaning

Value

Source

workflow

Case-specific configuration field workflow used by the validation benchmark.

simulation

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

simulation.time.start_datetime

Simulation start time used by the benchmark.

2003-01-01 00:00:00

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

simulation.time.end_datetime

Simulation end time used by the benchmark.

2003-05-10 00:00:00

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

simulation.time.step_value

Nominal time step used by the benchmark.

10 day

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

geographic.synthetic.grid.length_x

Synthetic-domain length along the x axis.

400.0 m

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

geographic.synthetic.grid.length_y

Synthetic-domain length along the y axis.

30.0 m

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

geographic.synthetic.grid.nx

Grid cell count along the x axis.

40

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

geographic.synthetic.grid.ny

Grid cell count along the y axis.

3

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

geographic.synthetic.topography.kind

Synthetic topography shape used by the benchmark.

flat

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

geographic.synthetic.topography.base_elevation

Base land-surface elevation of the synthetic topography.

100 m

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

domain.depth_model.type

Depth model used to build the aquifer support.

constant_thickness

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

domain.depth_model.thickness

Aquifer or support thickness used by the benchmark.

100.0 m

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

flow.flow_regime

Steady or transient flow regime used by the benchmark.

transient

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

flow.active_sinks_sources

Sink and source families activated in the benchmark.

[recharge]

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

flow.active_bc

Boundary-condition families activated in the benchmark.

[east_side]

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

flow.param_list

Hydraulic parameter families explicitly configured by the benchmark.

[K, Ss, Sy]

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

flow.param.K.field.kind

Parameterization mode used for K.

homogeneous

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

flow.param.K.field.value

Homogeneous K value used by the benchmark.

1e-4 m/s

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

flow.param.Ss.field.kind

Parameterization mode used for Ss.

homogeneous

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

flow.param.Ss.field.value

Homogeneous Ss value used by the benchmark.

1e-10 m-1

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

flow.param.Sy.field.kind

Parameterization mode used for Sy.

homogeneous

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

flow.param.Sy.field.value

Homogeneous Sy value used by the benchmark.

0.10 -

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

flow.ic.type

Initial-condition policy used to start the benchmark.

custom

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

flow.ic.value

Scalar initial head or top offset used by the initial-condition policy.

50.0 m

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

flow.bc.dirichlet.east_side.forcing.mode

Case-specific configuration field flow.bc.dirichlet.east_side.forcing.mode used by the validation benchmark.

constant

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

flow.bc.dirichlet.east_side.forcing.value

Fixed head applied on the east side boundary.

50 m

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

flow.bc.dirichlet.east_side.forcing.units

Case-specific configuration field flow.bc.dirichlet.east_side.forcing.units used by the validation benchmark.

m

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

flow.sinks_sources.recharge.negative_to_evt

Case-specific configuration field flow.sinks_sources.recharge.negative_to_evt used by the validation benchmark.

true

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

data.types

External data families loaded by the benchmark.

[recharge]

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

data.recharge.sources[0].source

Recharge data source mode used by the benchmark.

synthetic

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

data.recharge.sources[0].values

Recharge values used by the benchmark forcing.

[2 mm/day, 0 mm/day, 0 mm/day, 0 mm/day, 0 mm/day, 0 mm/day, 0 mm/day, 0 mm/day, 0 mm/day, 0 mm/day, 0 mm/day, 0 mm/day, 0 mm/day]

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

data.recharge.sources[0].freq

Sampling frequency used for the recharge forcing.

10D

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

data.recharge.sources[0].runoff_ratio

Runoff ratio applied when converting recharge forcing to effective infiltration.

0

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

Solver-Specific Overrides#

Field

Meaning

Value

Source

modflownwt.sgrid.planar.mode

Planar support construction mode used by MODFLOW-NWT.

resample_to_shape

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflownwt.toml

modflownwt.sgrid.planar.nx

Planar support cell count along x used by MODFLOW-NWT.

40

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflownwt.toml

modflownwt.sgrid.planar.ny

Planar support cell count along y used by MODFLOW-NWT.

3

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflownwt.toml

modflownwt.sgrid.planar.resampling

Planar support resampling mode used by MODFLOW-NWT.

nearest

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflownwt.toml

modflownwt.sgrid.vertical.nlay

Number of vertical layers used by MODFLOW-NWT.

1

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflownwt.toml

modflownwt.tgrid.firstpersteady

Whether the first time period is treated as steady by MODFLOW-NWT.

true

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflownwt.toml

Field

Meaning

Value

Source

modflow6.runtime.mf_verbose

Solver-specific override applied to MODFLOW 6.

false

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6.toml

modflow6.runtime.mf6_ims_complexity

Linear-solver complexity preset used by MODFLOW 6.

COMPLEX

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6.toml

modflow6.process_specific.vka

Vertical anisotropy ratio passed to MODFLOW 6.

1

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6.toml

modflow6.sgrid.planar.mode

Planar support construction mode used by MODFLOW 6.

resample_to_shape

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6.toml

modflow6.sgrid.planar.nx

Planar support cell count along x used by MODFLOW 6.

40

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6.toml

modflow6.sgrid.planar.ny

Planar support cell count along y used by MODFLOW 6.

3

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6.toml

modflow6.sgrid.planar.resampling

Planar support resampling mode used by MODFLOW 6.

nearest

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6.toml

modflow6.sgrid.vertical.nlay

Number of vertical layers used by MODFLOW 6.

1

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6.toml

modflow6.tgrid.firstpersteady

Whether the first time period is treated as steady by MODFLOW 6.

true

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6.toml

Field

Meaning

Value

Source

modflow6.runtime.mf_verbose

Solver-specific override applied to MODFLOW 6.

false

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6_irregular_tri.toml

modflow6.runtime.mf6_ims_complexity

Linear-solver complexity preset used by MODFLOW 6.

COMPLEX

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6_irregular_tri.toml

modflow6.process_specific.vka

Vertical anisotropy ratio passed to MODFLOW 6.

1

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6_irregular_tri.toml

modflow6.sgrid.vertical.nlay

Number of vertical layers used by MODFLOW 6.

1

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6_irregular_tri.toml

modflow6.tgrid.firstpersteady

Whether the first time period is treated as steady by MODFLOW 6.

true

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6_irregular_tri.toml

mesh_input.mesh_path

Committed unstructured mesh file used by the irregular-mesh solver variant.

../../../shared/mesh_bundles/brutsaert_recession_linearized_deep_irregular_tri_400x30/mesh_2d.msh

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6_irregular_tri.toml

mesh_input.bundle_dir

Committed mesh-bundle directory used to recover support metadata for the irregular-mesh solver variant.

../../../shared/mesh_bundles/brutsaert_recession_linearized_deep_irregular_tri_400x30

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6_irregular_tri.toml

  • No additional override beyond the common validation setup.

Acceptance Criteria#

Field

Meaning

Value

Source

output.observable_name

Simulated observable compared against the reference solution.

outlet_discharge_east_side_m3_s

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

output.expected_periods

Expected number of stored time periods checked by the validation helper.

12

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

output.head_observable_name

Head-like observable used when the case exposes more than one comparison target.

watertable_elevation

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

output.warmup_periods_by_solver.modflow6_irregular_tri

Warmup periods dropped before comparing modflow6_irregular_tri to the reference.

1

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

Acceptance Criteria by Solver#

Field

Meaning

Value

Source

expected_output

Expected output shape or time-space layout checked for this solver.

None

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

discharge.relative_rmse

Acceptance threshold for discharge.relative_rmse.

1

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances_modflownwt.toml

discharge.relative_max_error

Acceptance threshold for discharge.relative_max_error.

1

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances_modflownwt.toml

uniformity.row_spread

Maximum accepted cross-row spread for uniformity.

0.0001

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances_modflownwt.toml

monotonicity.max_positive_increment_m3_s

Acceptance threshold for monotonicity.max_positive_increment_m3_s.

1e-06

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances_modflownwt.toml

Field

Meaning

Value

Source

expected_output

Expected output shape or time-space layout checked for this solver.

None

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

discharge.relative_rmse

Acceptance threshold for discharge.relative_rmse.

0.03

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances.toml

discharge.relative_max_error

Acceptance threshold for discharge.relative_max_error.

0.05

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances.toml

uniformity.row_spread

Maximum accepted cross-row spread for uniformity.

1e-06

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances.toml

monotonicity.max_positive_increment_m3_s

Acceptance threshold for monotonicity.max_positive_increment_m3_s.

1e-12

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances.toml

Field

Meaning

Value

Source

expected_output

Expected output shape or time-space layout checked for this solver.

None

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

discharge.relative_rmse

Acceptance threshold for discharge.relative_rmse.

0.03

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances_modflow6_irregular_tri.toml

discharge.relative_max_error

Acceptance threshold for discharge.relative_max_error.

0.05

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances_modflow6_irregular_tri.toml

uniformity.row_spread

Maximum accepted cross-row spread for uniformity.

1e-06

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances_modflow6_irregular_tri.toml

monotonicity.max_positive_increment_m3_s

Acceptance threshold for monotonicity.max_positive_increment_m3_s.

1e-07

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances_modflow6_irregular_tri.toml

Field

Meaning

Value

Source

expected_output

Expected output shape or time-space layout checked for this solver.

None

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

discharge.relative_rmse

Acceptance threshold for discharge.relative_rmse.

0.03

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances_boussinesq.toml

discharge.relative_max_error

Acceptance threshold for discharge.relative_max_error.

0.08

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances_boussinesq.toml

uniformity.row_spread

Maximum accepted cross-row spread for uniformity.

1e-06

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances_boussinesq.toml

monotonicity.max_positive_increment_m3_s

Acceptance threshold for monotonicity.max_positive_increment_m3_s.

1e-12

validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances_boussinesq.toml

Source Pointers#

  • validation_cases/README.md

  • validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/README.md

  • validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/reference.py

  • validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/comparison.py

  • validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/plotting.py

  • validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/run_case.py

  • validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/metadata.toml

  • validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_common.toml

  • validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/runtime_boussinesq.py

  • validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances.toml

  • validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances_boussinesq.toml

  • validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances_modflow6_irregular_tri.toml

  • validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/tolerances_modflownwt.toml

  • validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflownwt.toml

  • validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6.toml

  • validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_modflow6_irregular_tri.toml

  • validation_cases/analytical/transient/brutsaert_recession_linearized_deep_1d/config_boussinesq.toml

  • validation_cases/analytical/transient/brutsaert_common.py

  • validation_cases/analytical/transient/brutsaert_reference.py

  • validation_cases/analytical/transient/runtime_boussinesq_brutsaert_1d.py

Artifacts#

  • docs/source/_static/capability_gallery/validation/brutsaert_recession_linearized_deep_1d__modflownwt.png

  • docs/source/_static/capability_gallery/validation/brutsaert_recession_linearized_deep_1d__modflow6.png

  • docs/source/_static/capability_gallery/validation/brutsaert_recession_linearized_deep_1d__modflow6_irregular_tri.png

  • docs/source/_static/capability_gallery/validation/brutsaert_recession_linearized_deep_1d__boussinesq.png

  • docs/source/_static/capability_gallery/validation/brutsaert_recession_linearized_deep_1d_summary.json stores the displayed metrics plus source hashes used by python -m tools.doc_gallery --check.