Boussinesq Circular-Island Piecewise-K 2D#
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 axisymmetric Dupuit-Boussinesq solution for a circular island with:
Case Setup#
Circular island with concentric piecewise-constant K, uniform recharge, ocean top BC
Available solver variants: MODFLOW-NWT, MODFLOW 6, MODFLOW 6 irregular triangles, Boussinesq.
What It Shows#
validate heterogeneous K mapping on a genuinely 2D synthetic geometry,
verify that the numerical solution preserves radial symmetry on a Cartesian grid,
keep an analytical benchmark where the water table remains below the island topography.
2D heterogeneous K mapping, ocean BC, radial symmetry and land/sea partitioning
Primary metrics: radial RMSE, radial max abs error, azimuthal spread, ocean head error, minimum land freeboard.
Solver-specific figures and metrics are shown side by side so the same benchmark can be read across backends.
Analytical Reference#
compared quantity: annular mean head profile on land
reference: steady radial Boussinesq solution with concentric piecewise K
Solver Coverage#
Default solver: MODFLOW-NWT
Available variants: MODFLOW-NWT, MODFLOW 6, MODFLOW 6 irregular triangles, Boussinesq

Metrics - Radial head-profile RMSE: 0.0286 m - Radial head-profile max abs error: 0.0544 m - Azimuthal spread: 0.0816 m - Ocean head max abs error: 0.00e+00 m - Minimum land freeboard: 0.9097 m
Config file:
validation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/config_modflownwt.tomlTolerances:
validation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/tolerances.tomlExpected shape: 61 x 61
python -m validation_cases.analytical.steady.boussinesq_circular_island_piecewise_k_2d.run_case --no-show --solver modflow_nwt

Metrics - Radial head-profile RMSE: 0.0481 m - Radial head-profile max abs error: 0.0802 m - Azimuthal spread: 0.0825 m - Ocean head max abs error: 0.00e+00 m - Minimum land freeboard: 0.8882 m
Config file:
validation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/config_modflow6.tomlTolerances:
validation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/tolerances_modflow6.tomlExpected shape: 61 x 61
python -m validation_cases.analytical.steady.boussinesq_circular_island_piecewise_k_2d.run_case --no-show --solver modflow6

Metrics - Radial head-profile RMSE: 0.0719 m - Radial head-profile max abs error: 0.1492 m - Azimuthal spread: 0.1207 m - Ocean head max abs error: 0.00e+00 m - Minimum land freeboard: 0.9107 m
Config file:
validation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/config_modflow6_irregular_tri.tomlTolerances:
validation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/tolerances.tomlExpected shape: 61 x 61
python -m validation_cases.analytical.steady.boussinesq_circular_island_piecewise_k_2d.run_case --no-show --solver modflow6_irregular_tri

Metrics - Radial head-profile RMSE: 0.1752 m - Radial head-profile max abs error: 0.3282 m - Azimuthal spread: 0.2272 m - Ocean head max abs error: 0.00e+00 m - Minimum land freeboard: 1.0392 m
Config file:
validation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/config_boussinesq.tomlTolerances:
validation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/tolerances_boussinesq.tomlExpected shape: 61 x 61
python -m validation_cases.analytical.steady.boussinesq_circular_island_piecewise_k_2d.run_case --no-show --solver boussinesq
Reproduce#
Run the underlying example or validation case with:
python -m validation_cases.analytical.steady.boussinesq_circular_island_piecewise_k_2d.run_case --no-show
Refresh the committed gallery artifacts with:
python -m tools.doc_gallery
Case Parameters#
Reference Parameters#
Field |
Meaning |
Value |
Source |
|---|---|---|---|
|
Coordinate reference system used by the synthetic geometry. |
EPSG:2154 |
|
|
Minimum x coordinate of the analytical reference domain. |
265400 |
|
|
Minimum y coordinate of the analytical reference domain. |
6.7841e+06 |
|
|
Reference-domain length along the x axis. |
610 m |
|
|
Reference-domain length along the y axis. |
610 m |
|
|
Reference discretization count along the x axis used by the comparison helper. |
61 |
|
|
Reference discretization count along the y axis used by the comparison helper. |
61 |
|
|
Reference x coordinate of the domain centre or pumping location. |
265705 m |
|
|
Reference y coordinate of the domain centre or pumping location. |
6.7844e+06 m |
|
|
Sea level used by the coastal or island reference. |
0 m |
|
|
Ocean-floor elevation used by the coastal reference geometry. |
-1 m |
|
|
Crest elevation used by the synthetic island topography. |
12 m |
|
|
Island radius used by the radial reference domain. |
200 m |
|
|
Maximum radius used when sampling radial comparisons. |
190 m |
|
|
Radial bin width used when aggregating the numerical solution. |
10 m |
|
|
Substratum elevation used to build the analytical aquifer geometry. |
-5 m |
|
|
Ring-radius breaks used to define heterogeneous conductivity in the radial reference. |
[70 m, 140 m] |
|
|
Reference parameter hydraulic_conductivity_m_per_s_by_ring used by the analytical or benchmark solution. |
[8e-06, 4e-06, 1e-05] |
|
|
Recharge rate used by the reference solution. |
1 mm/day |
|
|
Maximum comparison radius retained for boussinesq. |
180 |
|
Common Numerical Setup#
Field |
Meaning |
Value |
Source |
|---|---|---|---|
|
Case-specific configuration field workflow used by the validation benchmark. |
simulation |
|
|
Simulation start time used by the benchmark. |
2003-01-01 00:00:00 |
|
|
Simulation end time used by the benchmark. |
2003-01-02 00:00:00 |
|
|
Nominal time step used by the benchmark. |
1 day |
|
|
Synthetic-domain length along the x axis. |
610.0 m |
|
|
Synthetic-domain length along the y axis. |
610.0 m |
|
|
Grid cell count along the x axis. |
61 |
|
|
Grid cell count along the y axis. |
61 |
|
|
Synthetic topography shape used by the benchmark. |
radial_island |
|
|
Base land-surface elevation of the synthetic topography. |
-1 m |
|
|
Crest elevation used by the synthetic topography. |
12 m |
|
|
Island radius used by the synthetic topography. |
200.0 m |
|
|
How the support k_rings is generated. |
generated_rings |
|
|
Coordinate interpretation used to define support k_rings. |
absolute |
|
|
Case-specific configuration field domain.supports.k_rings.radii used by the validation benchmark. |
[70.0 m, 140.0 m] |
|
|
Labels assigned to the zones of support k_rings. |
[inner_ring, middle_ring, outer_ring] |
|
|
Depth model used to build the aquifer support. |
flat_substratum |
|
|
Substratum elevation used to build the synthetic support. |
-5 m |
|
|
External data families loaded by the benchmark. |
[oceanic, recharge] |
|
|
Oceanic data source mode used by the benchmark. |
constant |
|
|
Ocean level value supplied to the benchmark. |
0 m |
|
|
Recharge data source mode used by the benchmark. |
synthetic |
|
|
Recharge values used by the benchmark forcing. |
[1 mm/day] |
|
|
Runoff ratio applied when converting recharge forcing to effective infiltration. |
0 |
|
|
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. |
[ocean] |
|
|
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 inner_ring. |
8e-6 m/s |
|
|
Heterogeneous K value applied on support zone middle_ring. |
4e-6 m/s |
|
|
Heterogeneous K value applied on support zone outer_ring. |
1e-5 m/s |
|
|
Support identifier used to distribute the heterogeneous K field. |
k_rings |
|
|
Initial-condition policy used to start the benchmark. |
custom |
|
|
Scalar initial head or top offset used by the initial-condition policy. |
1.0 m |
|
|
Fixed head applied on the ocean boundary. |
0.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. |
61 |
|
|
Planar support cell count along y used by MODFLOW-NWT. |
61 |
|
|
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. |
61 |
|
|
Planar support cell count along y used by MODFLOW 6. |
61 |
|
|
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 |
|
|
Vertical anisotropy ratio passed to MODFLOW 6. |
1 |
|
|
Number of vertical layers used by MODFLOW 6. |
1 |
|
|
Committed unstructured mesh file used by the irregular-mesh solver variant. |
../../../shared/mesh_bundles/boussinesq_circular_island_piecewise_k_irregular_tri_radial_48/mesh_2d.msh |
|
|
Committed mesh-bundle directory used to recover support metadata for the irregular-mesh solver variant. |
../../../shared/mesh_bundles/boussinesq_circular_island_piecewise_k_irregular_tri_radial_48 |
|
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. |
[61, 61] |
|
Acceptance Criteria by Solver#
Field |
Meaning |
Value |
Source |
|---|---|---|---|
|
Expected output shape or time-space layout checked for this solver. |
Expected shape: 61 x 61 |
|
|
Maximum accepted root-mean-square error for radial profile. |
0.35 |
|
|
Maximum accepted absolute error for radial profile. |
0.7 |
|
|
Acceptance threshold for radial_profile.azimuthal_spread. |
0.35 |
|
|
Acceptance threshold for radial_profile.ocean_head_max_error. |
1e-06 |
|
|
Acceptance threshold for radial_profile.min_land_clearance. |
0.1 |
|
Field |
Meaning |
Value |
Source |
|---|---|---|---|
|
Expected output shape or time-space layout checked for this solver. |
Expected shape: 61 x 61 |
|
|
Maximum accepted root-mean-square error for radial profile. |
0.06 |
|
|
Maximum accepted absolute error for radial profile. |
0.1 |
|
|
Acceptance threshold for radial_profile.azimuthal_spread. |
0.1 |
|
|
Acceptance threshold for radial_profile.ocean_head_max_error. |
1e-08 |
|
|
Acceptance threshold for radial_profile.min_land_clearance. |
0.75 |
|
Field |
Meaning |
Value |
Source |
|---|---|---|---|
|
Expected output shape or time-space layout checked for this solver. |
Expected shape: 61 x 61 |
|
|
Maximum accepted root-mean-square error for radial profile. |
0.35 |
|
|
Maximum accepted absolute error for radial profile. |
0.7 |
|
|
Acceptance threshold for radial_profile.azimuthal_spread. |
0.35 |
|
|
Acceptance threshold for radial_profile.ocean_head_max_error. |
1e-06 |
|
|
Acceptance threshold for radial_profile.min_land_clearance. |
0.1 |
|
Field |
Meaning |
Value |
Source |
|---|---|---|---|
|
Expected output shape or time-space layout checked for this solver. |
Expected shape: 61 x 61 |
|
|
Maximum accepted root-mean-square error for radial profile. |
0.2 |
|
|
Maximum accepted absolute error for radial profile. |
0.35 |
|
|
Acceptance threshold for radial_profile.azimuthal_spread. |
0.25 |
|
|
Acceptance threshold for radial_profile.ocean_head_max_error. |
1e-08 |
|
|
Acceptance threshold for radial_profile.min_land_clearance. |
0.75 |
|
Source Pointers#
validation_cases/README.mdvalidation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/README.mdvalidation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/reference.pyvalidation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/comparison.pyvalidation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/plotting.pyvalidation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/run_case.pyvalidation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/metadata.tomlvalidation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/config_modflownwt.tomlvalidation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/runtime_boussinesq.pyvalidation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/tolerances.tomlvalidation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/tolerances_boussinesq.tomlvalidation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/tolerances_modflow6.tomlvalidation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/config_modflow6.tomlvalidation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/config_modflow6_irregular_tri.tomlvalidation_cases/analytical/steady/boussinesq_circular_island_piecewise_k_2d/config_boussinesq.tomlvalidation_cases/analytical/steady/boussinesq_piecewise.py
Artifacts#
docs/source/_static/capability_gallery/validation/boussinesq_circular_island_piecewise_k_2d__modflownwt.pngdocs/source/_static/capability_gallery/validation/boussinesq_circular_island_piecewise_k_2d__modflow6.pngdocs/source/_static/capability_gallery/validation/boussinesq_circular_island_piecewise_k_2d__modflow6_irregular_tri.pngdocs/source/_static/capability_gallery/validation/boussinesq_circular_island_piecewise_k_2d__boussinesq.pngdocs/source/_static/capability_gallery/validation/boussinesq_circular_island_piecewise_k_2d_summary.jsonstores the displayed metrics plus source hashes used bypython -m tools.doc_gallery --check.