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,

\[h(x)^2=h_e^2+\frac{R}{K}\left(L^2-x^2\right)\]
\[z_{\mathrm{top}}(x)=z_{\mathrm{toe}}+S\left(L-x\right),\qquad h(x_{\mathrm{int}})=z_{\mathrm{top}}(x_{\mathrm{int}})\]

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.toml

  • Tolerances: validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/tolerances.toml

  • Expected 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

xmin

Minimum x coordinate of the analytical reference domain.

0

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/metadata.toml

xmax

Maximum x coordinate of the analytical reference domain.

400

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/metadata.toml

length_y_m

Reference-domain length along the y axis.

30 m

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/metadata.toml

east_head_m

Fixed east-boundary hydraulic head used by the reference solution.

5 m

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/metadata.toml

toe_elevation_m

Toe elevation used by the hillslope reference geometry.

5 m

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/metadata.toml

topography_slope_m_per_m

Topographic slope used by the hillslope reference.

0.0125 m

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/metadata.toml

recharge_mm_day

Recharge rate used by the reference solution.

2 mm/day

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/metadata.toml

hydraulic_conductivity_m_per_s

Hydraulic conductivity used by the analytical or benchmark reference.

0.0001 m/s

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/metadata.toml

bottom_elevation_m

Bottom elevation used by the reference domain.

0 m

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/metadata.toml

profile_axis

Axis along which the validation profile is extracted.

0

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/metadata.toml

numerical_contact_tolerance_m

Tolerance used when comparing the numerical contact or interception position.

0.05 m

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/metadata.toml

interception_search_samples

Number of samples used when locating the interception front in the reference helper.

20001

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/metadata.toml

Common Numerical Setup#

Field

Meaning

Value

Source

flow.runtime_backend

Runtime backend selected for the in-house solver.

petsc

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/config_boussinesq.toml

flow.surface_interaction_model

Case-specific configuration field flow.surface_interaction_model used by the validation benchmark.

vi_obstacle

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/config_boussinesq.toml

Solver-Specific Overrides#

Field

Meaning

Value

Source

flow.runtime_backend

Runtime backend selected for the in-house solver.

petsc

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/config_boussinesq.toml

Acceptance Criteria#

Field

Meaning

Value

Source

output.observable_name

Simulated observable compared against the reference solution.

watertable_elevation

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/metadata.toml

output.expected_shape

Expected spatial output shape checked by the validation helper.

[3, 40]

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/metadata.toml

Acceptance Criteria by Solver#

Field

Meaning

Value

Source

expected_output

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

Expected shape: 3 x 40

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/metadata.toml

interception.x_error_m

Acceptance threshold for interception.x_error_m.

45 m

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/tolerances.toml

uniformity.row_spread

Maximum accepted cross-row spread for uniformity.

0.001

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/tolerances.toml

contact.max_positive_clearance_m

Acceptance threshold for contact.max_positive_clearance_m.

1e-06 m

validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/tolerances.toml

Source Pointers#

  • validation_cases/README.md

  • validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/README.md

  • validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/reference.py

  • validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/comparison.py

  • validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/plotting.py

  • validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/run_case.py

  • validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/metadata.toml

  • validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/runtime_boussinesq.py

  • validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/tolerances.toml

  • validation_cases/analytical/steady/boussinesq_hillslope_interception_1d/config_boussinesq.toml

Artifacts#

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

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