Boussinesq Hillslope Recharge-Step 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.

Transient synthetic groundwater-flow case used to validate the dense in-house flow/boussinesq runtime on a sloping hillslope where a recharge step causes an interception zone to appear progressively from the outlet toward the divide.

Case Setup#

  • same sloping strip geometry as the steady interception benchmark (40 x 3),

  • linear topography from 10 m to 5 m,

  • flat bottom at 0 m,

  • initial state: constant head 5 m,

  • east fixed head 5 m,

  • recharge step to 2 mm/day from the first transient period,

  • 12 periods of 10 days.

  • Available solver variants: Boussinesq.

What It Shows#

  • validate the transient onset of interception on a topographic slope,

  • compare the time of first inland interception against a linearized approximation,

  • compare the discrete interception trajectory x_int(t) on the early-moving front where the approximation remains informative.

  • Transient appearance of seepage/interception on a hillslope with the PETSc TS VI Boussinesq runtime

  • Primary metrics: onset-time error, interception-trajectory RMSE, interception-trajectory max abs error, cross-row spread.

Analytical Reference#

  • Linearized onset approximation for the moving interception front

\[S_y\frac{\partial \eta}{\partial t}=T_0\frac{\partial^2 \eta}{\partial x^2}+R_0\,H(t),\qquad \eta_{\mathrm{steady}}(x)=\frac{R_0}{2T_0}\left(L^2-x^2\right)\]
\[z_{\mathrm{top}}(x)=z_{\mathrm{toe}}+S\left(L-x\right),\qquad h(x,t)=z_{\mathrm{top}}(x)\ \text{defines the interception front}\]

Solver Coverage#

  • Default solver: Boussinesq

  • Available variants: Boussinesq

Metrics - Analytical onset time: 60.0 d - Numerical onset time: 70.0 d - Onset-time error: 10.0 d - Interception-trajectory RMSE: 5.00 m - Interception-trajectory max abs error: 10.00 m - Trajectory reversal: 0.00e+00 m - Cross-row head spread: 8.88e-16 m

  • Config file: validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/config_boussinesq.toml

  • Tolerances: validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/tolerances.toml

  • Expected output: 12 periods, spatial shape 3 x 40

python -m validation_cases.analytical.transient.boussinesq_hillslope_recharge_step_interception_1d.run_case --no-show

Reproduce#

Run the underlying example or validation case with:

python -m validation_cases.analytical.transient.boussinesq_hillslope_recharge_step_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/transient/boussinesq_hillslope_recharge_step_interception_1d/metadata.toml

xmax

Maximum x coordinate of the analytical reference domain.

400

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/metadata.toml

base_head_m

Baseline hydraulic head around which the linearized reference is expressed.

5 m

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/metadata.toml

toe_elevation_m

Toe elevation used by the hillslope reference geometry.

5 m

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/metadata.toml

topography_slope_m_per_m

Topographic slope used by the hillslope reference.

0.0125 m

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/metadata.toml

recharge_mm_day

Recharge rate used by the reference solution.

2 mm/day

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_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/transient/boussinesq_hillslope_recharge_step_interception_1d/metadata.toml

reference_saturated_thickness_m

Reference saturated thickness used by the linearized formulation.

5 m

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/metadata.toml

specific_yield

Specific yield used by the transient reference formulation.

0.1 -

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/metadata.toml

profile_axis

Axis along which the validation profile is extracted.

0

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/metadata.toml

numerical_contact_tolerance_m

Tolerance used when comparing the numerical contact or interception position.

0.075 m

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/metadata.toml

inland_contact_threshold_x_m

x threshold used to detect inland contact in the reference solution.

385 m

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/metadata.toml

n_terms

Number of terms retained in the analytical series expansion.

400

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/metadata.toml

dt_seconds

Reference time step used by the analytical evaluator.

864000 s

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/metadata.toml

Solver-Specific Overrides#

  • No additional override beyond the common validation setup.

Acceptance Criteria#

Field

Meaning

Value

Source

output.observable_name

Simulated observable compared against the reference solution.

watertable_elevation

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/metadata.toml

output.expected_periods

Expected number of stored time periods checked by the validation helper.

12

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/metadata.toml

output.expected_spatial_shape

Expected spatial shape for each stored time step.

[3, 40]

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_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 output: 12 periods, spatial shape 3 x 40

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/metadata.toml

onset.time_error_days

Acceptance threshold for onset.time_error_days.

31 days

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/tolerances.toml

trajectory.rmse_m

Acceptance threshold for trajectory.rmse_m.

9 m

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/tolerances.toml

trajectory.max_abs_error_m

Acceptance threshold for trajectory.max_abs_error_m.

21 m

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/tolerances.toml

trajectory.reversal_m

Acceptance threshold for trajectory.reversal_m.

1e-06 m

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/tolerances.toml

uniformity.row_spread

Maximum accepted cross-row spread for uniformity.

0.0001

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/tolerances.toml

contact.max_positive_clearance_m

Acceptance threshold for contact.max_positive_clearance_m.

1e-06 m

validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/tolerances.toml

Source Pointers#

  • validation_cases/README.md

  • validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/README.md

  • validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/reference.py

  • validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/comparison.py

  • validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/plotting.py

  • validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/run_case.py

  • validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/metadata.toml

  • validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/runtime_boussinesq.py

  • validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/tolerances.toml

  • validation_cases/analytical/transient/boussinesq_hillslope_recharge_step_interception_1d/config_boussinesq.toml

  • validation_cases/analytical/transient/linearized_unconfined_1d.py

Artifacts#

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

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