Choosing a transport model#
gwtransport covers five transport settings. Choose the module by how the
solute enters the aquifer.
Infiltrating surface water, flowing through to a well (bank filtration)
Areal rainfall recharge to a pumping well (optionally with upstream surface water)
recharge— advection; rainfall mixed vertically, giving an exponential residence-time distribution
Areal deposition from the surface
deposition— advection; areal source mixed vertically over the height of the aquifer
Water injected at a well, then recovered (push-pull / ASR)
radial_asr— radial advection with microdispersion, molecular diffusion, and optional steady regional background flow (drift)
Shared building blocks: residence_time,
logremoval, and gamma.
Capability matrix#
Module |
Geometry |
Advection |
Molecular diffusion |
Microdispersion |
Macrodispersion |
Forward |
Inverse |
|---|---|---|---|---|---|---|---|
any |
✓ |
– |
– |
✓ |
✓ |
✓ |
|
orthogonal |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|
any |
✓ |
– |
– |
– |
✓ |
✓ |
|
any |
✓ |
– |
– |
– |
✓ |
– |
|
radial |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Geometry is fixed only where within-streamtube dispersion (microdispersion or
molecular diffusion) is modeled — diffusion
(Cartesian Kreft–Zuber) and radial_asr (radial Airy/Whittaker).
Macrodispersion (the spread across pore volumes) lives in the volume coordinate and
needs no geometry, so the advective modules are geometry-agnostic. See
Macrodispersion and Microdispersion as Scale-Dependent Heterogeneity for macrodispersion versus microdispersion. Only
radial_asr supports a reversing (signed) flow schedule; the other modules
assume one-directional flow.
Conceptual models#
advection#
Water infiltrates and is transported in parallel along multiple aquifer pore volumes to extraction. For each aquifer pore volume, transport is 1D advection with linear or non-linear sorption; there is no microdispersion or molecular diffusion, while the spread across aquifer pore volumes provides macrodispersion. Forward and backward modeling are supported. No assumption is made about whether the flow is radial or orthogonal.
- Reactions:
linear retardation (Retardation Factor) and non-linear Freundlich/Langmuir sorption (Non-Linear Sorption: Exact Solutions).
- Limitations:
non-linear sorption is forward-only.
- Examples:
Aquifer Characterization Using Temperature Response, Bank filtration with TIMFlow, Advection with Non-Linear Sorption.
diffusion#
Water infiltrates and is transported in parallel along multiple aquifer pore volumes to extraction. For each aquifer pore volume, transport is 1D advection with microdispersion, molecular diffusion, and linear sorption; the spread across aquifer pore volumes provides macrodispersion. Forward and backward modeling are supported. The flow is assumed orthogonal.
- Reactions:
linear retardation (Retardation Factor).
- Limitations:
geometry fixed to orthogonal; no non-linear sorption. The
diffusion_fastanddiffusion_fast_fastvariants share this conceptual model with faster (and, for_fast_fast, approximate) implementations.- Examples:
deposition#
Areal deposition supplies mass to the groundwater, mixed instantaneously over the height of the aquifer. The aquifer has a constant thickness with a finite pore volume; water with zero concentration infiltrates at one end and is extracted at the other, whether the flow is radial or orthogonal. Transport is 1D advection with linear sorption; there is no microdispersion, molecular diffusion, or macrodispersion. Forward and backward modeling are supported.
- Reactions:
areal deposition source; linear retardation (Retardation Factor).
- Limitations:
models a source, not removal; a single (finite) pore volume, so no macrodispersion.
- Examples:
recharge#
Concentration at extraction has two sources. 1) Water infiltrates and is transported through an aquifer with constant thickness to extraction. 2) During transport, rainfall is mixed instantaneously over the height of the aquifer. In an unbounded aquifer all extracted water originates as recharge. Transport is advective with linear sorption; there is no microdispersion, molecular diffusion, or macrodispersion. Only forward modeling is supported. No assumption is made about whether the flow is radial or orthogonal.
- Behavior:
the areal entry and vertical mixing produce an exponential residence-time distribution (planform-independent in the unbounded model).
- Reactions:
linear retardation (Retardation Factor).
- Limitations:
forward-only; the bounded model uses a 1D upstream boundary.
- Examples:
radial_asr#
Water is injected in an infinite aquifer at a single fully-penetrating well and
later recovered at the same well under a signed flow schedule (push-pull / ASR).
Transport is radial advection with microdispersion, molecular diffusion, and linear
sorption; the spread of velocities across the well screen provides macrodispersion.
A steady uniform regional background flow (regional_flux) may be superimposed,
making the stored water drift between injection and recovery; regional_flux = 0
(the default) is purely radial. Forward and backward modeling are supported.
- Reactions:
linear retardation (Retardation Factor).
- Limitations:
a single well (no two-point / doublet geometry); no non-linear sorption; regional drift is limited to the slow-drift envelope (the stored plume must stay well inside the stagnation radius; the engine raises a
ValueErrorbeyond it).- Examples:
Aquifer Storage and Recovery: the buffer effect over repeated cycles.
Feasibility envelope under regional drift#
The practical reach of the slow-drift envelope is easiest to judge from a worked scenario: one storage
cycle per year for 1–20 years, each year 90 days injection, 90 days storage, 90 days recovery, and
90 days idle, discretized in 30-day bins. The well pumps Q = +-100 m³/day, so every season stores and
recovers 9 000 m³ in an aquifer of thickness b = 10 m and porosity n = 0.3; the seasonal bubble
radius is R_b = sqrt(r_w² + V/(pi b n)) ≈ 31 m around an r_w = 0.5 m well, with microdispersivity
alpha_L = 0.5 m. The well strength A_0 = Q/(2 pi b n) ≈ 5.3 m²/day makes regional drift seepage
velocities of 6 / 12 / 18 m/yr correspond to eps = v_d R_b / A_0 ≈ 0.10 / 0.19 / 0.29. The injected
deviation is 1 during every injection season. Cells report the recovery efficiency of the final year
(the flow-weighted mean extracted deviation) and, in parentheses, the drift-induced loss relative to a
zero-drift run of the same length; -- marks combinations the honesty guards refuse (ValueError:
the plume, including its accumulated storage-season displacement, approaches the stagnation radius or
outruns the azimuthal truncation).
Conservative solute (R = 1, effective pore diffusion D_m = 8.6e-5 m²/day ≈ 1e-9 m²/s):
Years |
No drift |
6 m/yr |
12 m/yr |
18 m/yr |
|---|---|---|---|---|
1 |
0.883 |
0.865 (-0.018) |
0.822 (-0.061) |
0.765 (-0.118) |
2 |
0.914 |
0.886 (-0.028) |
0.829 (-0.085) |
– |
3 |
0.928 |
0.893 (-0.035) |
0.830 (-0.098) |
– |
5 |
0.942 |
0.897 (-0.045) |
0.830 (-0.112) |
– |
10 |
0.957 |
0.898 (-0.059) |
– |
– |
15 |
0.963 |
0.898 (-0.066) |
– |
– |
20 |
0.967 |
0.898 (-0.070) |
– |
– |
Temperature (thermal retardation R = rho c_b / (n rho_w c_w) ≈ 2.2; thermal diffusivity
lambda_b / (n rho_w c_w) = 0.172 m²/day for a bulk conductivity lambda_b = 2.5 W/m/K):
Years |
No drift |
6 m/yr |
12 m/yr |
18 m/yr |
|---|---|---|---|---|
1 |
0.756 |
0.751 (-0.004) |
0.740 (-0.016) |
– |
2 |
0.807 |
0.801 (-0.007) |
0.783 (-0.024) |
– |
3 |
0.831 |
0.823 (-0.009) |
0.800 (-0.031) |
– |
5 |
0.856 |
0.844 (-0.012) |
– |
– |
10 |
0.883 |
0.863 (-0.019) |
– |
– |
15 |
0.895 |
0.870 (-0.024) |
– |
– |
20 |
0.903 |
0.874 (-0.029) |
– |
– |
Reading the tables:
A conservative solute tolerates 6 m/yr of drift over at least 20 years and 12 m/yr up to about 5 years; 18 m/yr survives only a single cycle. Temperature is one step tighter at the strong end (the thermal plume is wider), but loses 2.5–4x less to drift at the same rate: thermal retardation halves the plume’s drift displacement (
v_d / R). Seasonal heat storage at modest regional flow sits well inside the envelope.The drift loss grows with record length at a fixed drift rate: without drift the system re-captures its unrecovered carryover year after year, while drift removes that carryover permanently (solute at 6 m/yr: -0.018 after one cycle, -0.070 after twenty years).
The refused combinations genuinely need a spatially resolved numerical transport model – the engine raises rather than extrapolating beyond its envelope.
This schedule is pessimistic for feasibility: the well is idle half of every year, and it is exactly the idle-season drift that accumulates. Schedules with shorter storage and idle periods stay inside the envelope at correspondingly higher drift rates.
Computed with n_quad = 60, automatic azimuthal truncation (M = 2--8 across the table), and the
engine-internal Laplace-inversion settings n_terms = 24, tol = 1e-8 (the public API fixes these
at its defaults; spot checks through the public API reproduce the displayed values at the shown
precision). Absolute values carry ≲ 0.002 discretization at the longest records;
differences within a row are consistent to better than that. The zero-drift references use the drift
engine at negligible regional_flux so that both columns share the same rest-phase kernel.
Building blocks#
These modules are not transport scenarios but the shared layer underneath.
residence_time— flow-weighted residence time (Residence Time); see Residence Time Distribution Analysis.logremoval— first-order decay (e.g. pathogen inactivation) applied to a residence time; see Pathogen Removal in Bank Filtration Systems.gamma— two-parameter aquifer pore volume distribution (Gamma Distribution Model).
Scope and not-yet-available#
No two-point / doublet radial transport:
radial_asrinjects and recovers at a single well, not between an injection well and a separate observation or extraction point.No finite-radial bounded recharge: the bounded
rechargemodel uses a straight (1D) upstream boundary, not a circular capture-zone boundary.Package-wide: streamlines are independent (no transverse mixing, 6. No Transverse Mixing); apart from the steady uniform background flow of
radial_asr, there is no multi-well or 2D/3D regional flow, and no kinetic or chained reactions.