Boussinesq Fixed-Head 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, no recharge
Available solver variants: MODFLOW-NWT, MODFLOW 6, MODFLOW 6 irregular triangles, Boussinesq.
What It Shows#
validate heterogeneous K mapping on a simple 1D support,
check flux continuity across conductivity jumps,
keep a lightweight analytical benchmark for future heterogeneous cases.
Heterogeneous conductivity mapping and flux continuity across conductivity jumps
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 piecewise-constant K
Solver Coverage#
Default solver: MODFLOW-NWT
Available variants: MODFLOW-NWT, MODFLOW 6, MODFLOW 6 irregular triangles, Boussinesq

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

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

Metrics - Head-profile RMSE: 0.0237 m - Head-profile max abs error: 0.0701 m - Cross-row head spread: 8.88e-16 m
Config file:
validation_cases/analytical/steady/boussinesq_fixed_head_piecewise_k_1d/config_modflow6_irregular_tri.tomlTolerances:
validation_cases/analytical/steady/boussinesq_fixed_head_piecewise_k_1d/tolerances.tomlExpected shape: 5 x 40
python -m validation_cases.analytical.steady.boussinesq_fixed_head_piecewise_k_1d.run_case --no-show --solver modflow6_irregular_tri

Metrics - Head-profile RMSE: 0.0079 m - Head-profile max abs error: 0.0207 m - Cross-row head spread: 5.30e-02 m
Config file:
validation_cases/analytical/steady/boussinesq_fixed_head_piecewise_k_1d/config_boussinesq.tomlTolerances:
validation_cases/analytical/steady/boussinesq_fixed_head_piecewise_k_1d/tolerances_boussinesq.tomlExpected shape: 3 x 40
python -m validation_cases.analytical.steady.boussinesq_fixed_head_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_fixed_head_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. |
10 m |
|
|
Fixed east-boundary hydraulic head used by the reference solution. |
5 m |
|
|
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. |
[] |
|
|
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. |
7.5 m |
|
|
Fixed head applied on the west side boundary. |
10.0 m |
|
|
Fixed head applied on the east side boundary. |
5.0 m |
|
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.012 |
|
|
Maximum accepted absolute error for head profile. |
0.025 |
|
|
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.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: 3 x 40 |
|
|
Maximum accepted root-mean-square error for head profile. |
0.2 |
|
|
Maximum accepted absolute error for head profile. |
0.35 |
|
|
Maximum accepted cross-row spread for head profile. |
0.08 |
|
Source Pointers#
validation_cases/README.mdvalidation_cases/analytical/steady/boussinesq_fixed_head_piecewise_k_1d/README.mdvalidation_cases/analytical/steady/boussinesq_fixed_head_piecewise_k_1d/reference.pyvalidation_cases/analytical/steady/boussinesq_fixed_head_piecewise_k_1d/comparison.pyvalidation_cases/analytical/steady/boussinesq_fixed_head_piecewise_k_1d/plotting.pyvalidation_cases/analytical/steady/boussinesq_fixed_head_piecewise_k_1d/run_case.pyvalidation_cases/analytical/steady/boussinesq_fixed_head_piecewise_k_1d/metadata.tomlvalidation_cases/analytical/steady/boussinesq_fixed_head_piecewise_k_1d/config_modflownwt.tomlvalidation_cases/analytical/steady/boussinesq_fixed_head_piecewise_k_1d/runtime_boussinesq.pyvalidation_cases/analytical/steady/boussinesq_fixed_head_piecewise_k_1d/tolerances.tomlvalidation_cases/analytical/steady/boussinesq_fixed_head_piecewise_k_1d/tolerances_boussinesq.tomlvalidation_cases/analytical/steady/boussinesq_fixed_head_piecewise_k_1d/tolerances_modflow6.tomlvalidation_cases/analytical/steady/boussinesq_fixed_head_piecewise_k_1d/config_modflow6.tomlvalidation_cases/analytical/steady/boussinesq_fixed_head_piecewise_k_1d/config_modflow6_irregular_tri.tomlvalidation_cases/analytical/steady/boussinesq_fixed_head_piecewise_k_1d/config_boussinesq.tomlvalidation_cases/analytical/steady/boussinesq_piecewise.py
Artifacts#
docs/source/_static/capability_gallery/validation/boussinesq_fixed_head_piecewise_k_1d__modflownwt.pngdocs/source/_static/capability_gallery/validation/boussinesq_fixed_head_piecewise_k_1d__modflow6.pngdocs/source/_static/capability_gallery/validation/boussinesq_fixed_head_piecewise_k_1d__modflow6_irregular_tri.pngdocs/source/_static/capability_gallery/validation/boussinesq_fixed_head_piecewise_k_1d__boussinesq.pngdocs/source/_static/capability_gallery/validation/boussinesq_fixed_head_piecewise_k_1d_summary.jsonstores the displayed metrics plus source hashes used bypython -m tools.doc_gallery --check.