Boussinesq Uniform-Recharge Piecewise-K 1D#
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.
Steady synthetic groundwater-flow case used to validate the launcher workflow against the exact 1D Boussinesq solution written on U = h^2 for an unconfined aquifer with:
Case Setup#
Strip with piecewise-constant K, fixed west/east heads, uniform recharge
Available solver variants: MODFLOW-NWT, MODFLOW 6, MODFLOW 6 irregular triangles, Boussinesq.
What It Shows#
validate recharge together with heterogeneous K mapping,
keep one analytical 1D benchmark where all conductivity jumps align with the mesh,
extend the homogeneous recharge case without leaving the current launcher workflow.
Coupling between recharge and conductivity jumps on a benchmark that remains analytical
Primary metrics: head-profile RMSE, max abs error, cross-row spread.
Solver-specific figures and metrics are shown side by side so the same benchmark can be read across backends.
Analytical Reference#
compared quantity: domain-averaged head profile along x
reference: steady 1D Boussinesq profile with uniform recharge and piecewise K
Solver Coverage#
Default solver: MODFLOW-NWT
Available variants: MODFLOW-NWT, MODFLOW 6, MODFLOW 6 irregular triangles, Boussinesq

Metrics - Head-profile RMSE: 0.0324 m - Head-profile max abs error: 0.0465 m - Cross-row head spread: 2.34e-07 m
Config file:
validation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/config_modflownwt.tomlTolerances:
validation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/tolerances.tomlExpected shape: 5 x 40
python -m validation_cases.analytical.steady.boussinesq_uniform_recharge_piecewise_k_1d.run_case --no-show --solver modflow_nwt

Metrics - Head-profile RMSE: 0.0280 m - Head-profile max abs error: 0.0403 m - Cross-row head spread: 1.59e-06 m
Config file:
validation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/config_modflow6.tomlTolerances:
validation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/tolerances_modflow6.tomlExpected shape: 5 x 40
python -m validation_cases.analytical.steady.boussinesq_uniform_recharge_piecewise_k_1d.run_case --no-show --solver modflow6

Metrics - Head-profile RMSE: 0.0219 m - Head-profile max abs error: 0.0401 m - Cross-row head spread: 0.00e+00 m
Config file:
validation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/config_modflow6_irregular_tri.tomlTolerances:
validation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/tolerances_modflow6_irregular_tri.tomlExpected shape: 5 x 40
python -m validation_cases.analytical.steady.boussinesq_uniform_recharge_piecewise_k_1d.run_case --no-show --solver modflow6_irregular_tri

Metrics - Head-profile RMSE: 0.0296 m - Head-profile max abs error: 0.0430 m - Cross-row head spread: 0.00e+00 m
Config file:
validation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/config_boussinesq.tomlTolerances:
validation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/tolerances_boussinesq.tomlExpected shape: 3 x 40
python -m validation_cases.analytical.steady.boussinesq_uniform_recharge_piecewise_k_1d.run_case --no-show --solver boussinesq
Reproduce#
Run the underlying example or validation case with:
python -m validation_cases.analytical.steady.boussinesq_uniform_recharge_piecewise_k_1d.run_case --no-show
Refresh the committed gallery artifacts with:
python -m tools.doc_gallery
Case Parameters#
Reference Parameters#
Field |
Meaning |
Value |
Source |
|---|---|---|---|
|
Minimum x coordinate of the analytical reference domain. |
0 |
|
|
Maximum x coordinate of the analytical reference domain. |
400 |
|
|
Fixed west-boundary hydraulic head used by the reference solution. |
5 m |
|
|
Fixed east-boundary hydraulic head used by the reference solution. |
5 m |
|
|
Recharge rate used by the reference solution. |
3 mm/day |
|
|
x-coordinate breaks used to define conductivity zones in the reference solution. |
[120 m, 280 m] |
|
|
Reference parameter hydraulic_conductivity_m_per_s_by_zone used by the analytical or benchmark solution. |
[0.0002, 5e-05, 0.0001] |
|
|
Aquifer thickness used by the reference formulation. |
20 m |
|
|
Axis along which the validation profile is extracted. |
0 |
|
Common Numerical Setup#
Field |
Meaning |
Value |
Source |
|---|---|---|---|
|
Case-specific configuration field workflow used by the validation benchmark. |
simulation |
|
|
Synthetic-domain length along the x axis. |
400.0 m |
|
|
Synthetic-domain length along the y axis. |
50.0 m |
|
|
Grid cell count along the x axis. |
40 |
|
|
Grid cell count along the y axis. |
5 |
|
|
Synthetic topography shape used by the benchmark. |
flat |
|
|
Base land-surface elevation of the synthetic topography. |
20 m |
|
|
How the support k_bands is generated. |
generated_bands |
|
|
Axis used to build support k_bands. |
x |
|
|
Coordinate interpretation used to define support k_bands. |
relative |
|
|
Break values used to split support k_bands. |
[0.3, 0.7] |
|
|
Labels assigned to the zones of support k_bands. |
[west_zone, middle_zone, east_zone] |
|
|
Depth model used to build the aquifer support. |
constant_thickness |
|
|
Aquifer or support thickness used by the benchmark. |
20.0 m |
|
|
Steady or transient flow regime used by the benchmark. |
steady |
|
|
Sink and source families activated in the benchmark. |
[recharge] |
|
|
Boundary-condition families activated in the benchmark. |
[west_side, east_side] |
|
|
Hydraulic parameter families explicitly configured by the benchmark. |
[K] |
|
|
Parameterization mode used for K. |
heterogeneous |
|
|
Value source used for the heterogeneous K field. |
inline |
|
|
Heterogeneous K value applied on support zone west_zone. |
2e-4 m/s |
|
|
Heterogeneous K value applied on support zone middle_zone. |
5e-5 m/s |
|
|
Heterogeneous K value applied on support zone east_zone. |
1e-4 m/s |
|
|
Support identifier used to distribute the heterogeneous K field. |
k_bands |
|
|
Initial-condition policy used to start the benchmark. |
custom |
|
|
Scalar initial head or top offset used by the initial-condition policy. |
6.0 m |
|
|
Fixed head applied on the west side boundary. |
5.0 m |
|
|
Fixed head applied on the east side boundary. |
5.0 m |
|
|
External data families loaded by the benchmark. |
[recharge] |
|
|
Recharge data source mode used by the benchmark. |
synthetic |
|
|
Recharge values used by the benchmark forcing. |
[3 mm/day] |
|
|
Runoff ratio applied when converting recharge forcing to effective infiltration. |
0 |
|
Solver-Specific Overrides#
Field |
Meaning |
Value |
Source |
|---|---|---|---|
|
Planar support construction mode used by MODFLOW-NWT. |
resample_to_shape |
|
|
Planar support cell count along x used by MODFLOW-NWT. |
40 |
|
|
Planar support cell count along y used by MODFLOW-NWT. |
5 |
|
|
Planar support resampling mode used by MODFLOW-NWT. |
nearest |
|
|
Number of vertical layers used by MODFLOW-NWT. |
1 |
|
Field |
Meaning |
Value |
Source |
|---|---|---|---|
|
Solver-specific override applied to MODFLOW 6. |
false |
|
|
Linear-solver complexity preset used by MODFLOW 6. |
COMPLEX |
|
|
Planar support construction mode used by MODFLOW 6. |
resample_to_shape |
|
|
Planar support cell count along x used by MODFLOW 6. |
40 |
|
|
Planar support cell count along y used by MODFLOW 6. |
5 |
|
|
Planar support resampling mode used by MODFLOW 6. |
nearest |
|
|
Number of vertical layers used by MODFLOW 6. |
1 |
|
Field |
Meaning |
Value |
Source |
|---|---|---|---|
|
Solver-specific override applied to MODFLOW 6. |
false |
|
|
Linear-solver complexity preset used by MODFLOW 6. |
COMPLEX |
|
|
Number of vertical layers used by MODFLOW 6. |
1 |
|
|
Committed unstructured mesh file used by the irregular-mesh solver variant. |
../../../shared/mesh_bundles/sloping_substratum_irregular_tri_400x50/mesh_2d.msh |
|
|
Committed mesh-bundle directory used to recover support metadata for the irregular-mesh solver variant. |
../../../shared/mesh_bundles/sloping_substratum_irregular_tri_400x50 |
|
Field |
Meaning |
Value |
Source |
|---|---|---|---|
|
Runtime backend selected for the in-house solver. |
petsc |
|
Acceptance Criteria#
Field |
Meaning |
Value |
Source |
|---|---|---|---|
|
Simulated observable compared against the reference solution. |
watertable_elevation |
|
|
Expected spatial output shape checked by the validation helper. |
[5, 40] |
|
Acceptance Criteria by Solver#
Field |
Meaning |
Value |
Source |
|---|---|---|---|
|
Expected output shape or time-space layout checked for this solver. |
Expected shape: 5 x 40 |
|
|
Maximum accepted root-mean-square error for head profile. |
0.05 |
|
|
Maximum accepted absolute error for head profile. |
0.1 |
|
|
Maximum accepted cross-row spread for head profile. |
2e-05 |
|
Field |
Meaning |
Value |
Source |
|---|---|---|---|
|
Expected output shape or time-space layout checked for this solver. |
Expected shape: 5 x 40 |
|
|
Maximum accepted root-mean-square error for head profile. |
0.035 |
|
|
Maximum accepted absolute error for head profile. |
0.05 |
|
|
Maximum accepted cross-row spread for head profile. |
1e-05 |
|
Field |
Meaning |
Value |
Source |
|---|---|---|---|
|
Expected output shape or time-space layout checked for this solver. |
Expected shape: 5 x 40 |
|
|
Maximum accepted root-mean-square error for head profile. |
0.21 |
|
|
Maximum accepted absolute error for head profile. |
0.33 |
|
|
Maximum accepted cross-row spread for head profile. |
1e-09 |
|
Field |
Meaning |
Value |
Source |
|---|---|---|---|
|
Expected output shape or time-space layout checked for this solver. |
Expected shape: 3 x 40 |
|
|
Maximum accepted root-mean-square error for head profile. |
0.08 |
|
|
Maximum accepted absolute error for head profile. |
0.1 |
|
|
Maximum accepted cross-row spread for head profile. |
0.04 |
|
Source Pointers#
validation_cases/README.mdvalidation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/README.mdvalidation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/reference.pyvalidation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/comparison.pyvalidation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/plotting.pyvalidation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/run_case.pyvalidation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/metadata.tomlvalidation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/config_modflownwt.tomlvalidation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/runtime_boussinesq.pyvalidation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/tolerances.tomlvalidation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/tolerances_boussinesq.tomlvalidation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/tolerances_modflow6.tomlvalidation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/tolerances_modflow6_irregular_tri.tomlvalidation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/config_modflow6.tomlvalidation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/config_modflow6_irregular_tri.tomlvalidation_cases/analytical/steady/boussinesq_uniform_recharge_piecewise_k_1d/config_boussinesq.tomlvalidation_cases/analytical/steady/boussinesq_piecewise.py
Artifacts#
docs/source/_static/capability_gallery/validation/boussinesq_uniform_recharge_piecewise_k_1d__modflownwt.pngdocs/source/_static/capability_gallery/validation/boussinesq_uniform_recharge_piecewise_k_1d__modflow6.pngdocs/source/_static/capability_gallery/validation/boussinesq_uniform_recharge_piecewise_k_1d__modflow6_irregular_tri.pngdocs/source/_static/capability_gallery/validation/boussinesq_uniform_recharge_piecewise_k_1d__boussinesq.pngdocs/source/_static/capability_gallery/validation/boussinesq_uniform_recharge_piecewise_k_1d_summary.jsonstores the displayed metrics plus source hashes used bypython -m tools.doc_gallery --check.