Boussinesq Hillslope Interception 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 PETSc VI obstacle flow/boussinesq runtime on a sloping hillslope where the water table reaches the land surface near the outlet.
Case Setup#
quasi-1D strip (40 x 3) with alternating triangle diagonals,
linear topography descending from 10 m to 5 m,
flat impermeable bottom at 0 m,
uniform recharge 2 mm/day,
homogeneous hydraulic conductivity 1e-4 m/s,
fixed head 5 m on the east side,
west side left as the natural divide/no-flow boundary.
Available solver variants: Boussinesq.
What It Shows#
validate the emergence/interception position on a topographic slope,
keep a closed-form inland Boussinesq profile on the dry part of the hillslope,
benchmark the hard surface-obstacle closure with a metric that remains physically meaningful for seepage onset.
Steady seepage/interception onset on a sloping hillslope with the dense in-house Boussinesq runtime
Primary metrics: interception-position error, topography-overshoot check, cross-row spread.
Analytical Reference#
reference: analytical no-drain steady Boussinesq recharge profile with west divide and east fixed head, intersected with the linear topography,
Solver Coverage#
Default solver: Boussinesq
Available variants: Boussinesq

Metrics - Analytical interception x: 244.776 m - Numerical interception x: 285.000 m - Interception x error: 40.224 m - Diagnostic dry-zone RMSE: 0.1559 m - Diagnostic dry-zone max abs error: 0.1685 m - Cross-row head spread: 8.88e-16 m
Config file:
validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/config_boussinesq.tomlTolerances:
validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/tolerances.tomlExpected shape: 3 x 40
python -m validation_cases.analytical.steady.boussinesq_hillslope_interception_1d.run_case --no-show
Reproduce#
Run the underlying example or validation case with:
python -m validation_cases.analytical.steady.boussinesq_hillslope_interception_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 |
|
|
Reference-domain length along the y axis. |
30 m |
|
|
Fixed east-boundary hydraulic head used by the reference solution. |
5 m |
|
|
Toe elevation used by the hillslope reference geometry. |
5 m |
|
|
Topographic slope used by the hillslope reference. |
0.0125 m |
|
|
Recharge rate used by the reference solution. |
2 mm/day |
|
|
Hydraulic conductivity used by the analytical or benchmark reference. |
0.0001 m/s |
|
|
Bottom elevation used by the reference domain. |
0 m |
|
|
Axis along which the validation profile is extracted. |
0 |
|
|
Tolerance used when comparing the numerical contact or interception position. |
0.05 m |
|
|
Number of samples used when locating the interception front in the reference helper. |
20001 |
|
Common Numerical Setup#
Field |
Meaning |
Value |
Source |
|---|---|---|---|
|
Runtime backend selected for the in-house solver. |
petsc |
|
|
Case-specific configuration field flow.surface_interaction_model used by the validation benchmark. |
vi_obstacle |
|
Solver-Specific Overrides#
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. |
[3, 40] |
|
Acceptance Criteria by Solver#
Field |
Meaning |
Value |
Source |
|---|---|---|---|
|
Expected output shape or time-space layout checked for this solver. |
Expected shape: 3 x 40 |
|
|
Acceptance threshold for interception.x_error_m. |
45 m |
|
|
Maximum accepted cross-row spread for uniformity. |
0.001 |
|
|
Acceptance threshold for contact.max_positive_clearance_m. |
1e-06 m |
|
Source Pointers#
validation_cases/README.mdvalidation_cases/analytical/steady/boussinesq_hillslope_interception_1d/README.mdvalidation_cases/analytical/steady/boussinesq_hillslope_interception_1d/reference.pyvalidation_cases/analytical/steady/boussinesq_hillslope_interception_1d/comparison.pyvalidation_cases/analytical/steady/boussinesq_hillslope_interception_1d/plotting.pyvalidation_cases/analytical/steady/boussinesq_hillslope_interception_1d/run_case.pyvalidation_cases/analytical/steady/boussinesq_hillslope_interception_1d/metadata.tomlvalidation_cases/analytical/steady/boussinesq_hillslope_interception_1d/runtime_boussinesq.pyvalidation_cases/analytical/steady/boussinesq_hillslope_interception_1d/tolerances.tomlvalidation_cases/analytical/steady/boussinesq_hillslope_interception_1d/config_boussinesq.toml
Artifacts#
docs/source/_static/capability_gallery/validation/boussinesq_hillslope_interception_1d__boussinesq.pngdocs/source/_static/capability_gallery/validation/boussinesq_hillslope_interception_1d_summary.jsonstores the displayed metrics plus source hashes used bypython -m tools.doc_gallery --check.