Groundwater Flow & Contaminant Transport
Water and pollutants underground. Learn aquifers and aquitards, porosity and hydraulic conductivity, Darcy's law, hydraulic gradient, seepage velocity, well hydraulics (Thiem), advection, dispersion and diffusion, sorption and retardation, degradation, the advection–dispersion equation and plumes, and groundwater protection — with Python for travel times and breakthrough.
Groundwater supplies about half of the world's drinking water and most irrigation in India. Once contaminated — by leaking tanks, landfills, industrial spills, fertilisers or arsenic/fluoride from rocks — it can stay polluted for decades because it moves slowly and hides from view.
Understanding flow (Darcy's law) and transport (advection, dispersion, retardation) lets engineers predict plume movement, design wellhead protection and plan remediation.
An analogy
Groundwater is like water seeping slowly through a giant sponge of sand and gravel. A contaminant is like dye added to that water: it drifts with the flow, spreads out as it winds through pores, and some of it sticks to the sponge, falling behind the water.
Aquifers
An aquifer is a saturated geological unit that transmits useful amounts of water (sands, gravels, fractured rock, karst limestone); aquitards (clays) restrict flow. Unconfined aquifers have a water table open to recharge; confined aquifers are sealed between aquitards and can be artesian. Recharge, discharge to rivers and pumping set the water balance.
Darcy's law and wells
Flow is proportional to hydraulic conductivity and gradient. K ranges over 12 orders of magnitude (gravel 10⁻² m/s, clay 10⁻¹¹ m/s). Pumping creates a cone of depression; Thiem and Theis equations relate pumping rate, drawdown and aquifer properties, determined from pumping tests. Over-extraction lowers water tables and can cause land subsidence and saline intrusion.
Transport processes
A contaminant plume is shaped by:
- Advection — moves with the seepage velocity
- Mechanical dispersion and molecular diffusion — spreading
- Sorption — retardation onto soil organic carbon and minerals
- Degradation — biological/chemical decay (half-life)
- Density effects and NAPLs — LNAPL (petrol) floats, DNAPL (chlorinated solvents) sinks
Modelling and protection
Numerical models (MODFLOW for flow, MT3DMS/RT3D for transport) simulate heterogeneous aquifers; particle tracking delineates capture zones and wellhead protection areas. Vulnerability mapping (DRASTIC), monitoring well networks, and land-use controls protect groundwater. Geogenic contamination (arsenic in the Ganga basin, fluoride in Rajasthan) requires treatment or alternative sources.
Formulas
- Darcy's law:
Q = K·A·i - Seepage velocity:
v = K·i/n_e - Retardation:
R = 1 + ρ_b·K_d/n - Thiem (confined well):
Q = 2πKb(h₂ − h₁)/ln(r₂/r₁) - Advection–dispersion:
R·∂C/∂t = D·∂²C/∂x² − v·∂C/∂x − λRC - Ogata–Banks (leading term):
C/C₀ ≈ ½·erfc[(x − vt)/(2√(Dt))]
Worked example: Darcy flow
Given: K = 1e-4 m/s, i = 0.005, A = 1000 m²
Find: Q.
- 1e-4 × 0.005 × 1000
Answer: 5e-4 m³/s ≈ 43 m³/day
Worked example: Retardation
Given: ρ_b 1.7 g/cm³, K_d 0.5 L/kg, n 0.30
Find: R.
- 1 + 1.7 × 0.5/0.3
Answer: 3.83
Worked example: Thiem
Given: K 1e-4, b 20 m, heads 30 m at 10 m and 31 m at 100 m
Find: Q.
- 2π × 1e-4 × 20 × 1/ln(10)
Answer: 5.46e-3 m³/s ≈ 470 m³/day
Travel time, retardation and breakthrough
import math
# Darcy flow and contaminant travel time in an aquifer
K = 1e-4 # hydraulic conductivity m/s (clean sand)
i = 0.005 # hydraulic gradient
n = 0.30 # effective porosity
q = K * i # Darcy flux
v = q / n # seepage velocity
L = 200.0
print(f"Darcy flux {q*86400:.3f} m/day, seepage velocity {v*86400:.3f} m/day")
print(f"travel time to a well 200 m away: {L/v/86400/365:.1f} years")
# Retardation of a sorbing contaminant: R = 1 + rho_b*Kd/n
rho_b, Kd = 1.7, 0.5 # g/cm3, L/kg (mL/g)
R = 1 + rho_b * Kd / n
print(f"retardation factor {R:.2f} -> contaminant arrives after {L/v*R/86400/365:.1f} years")
# 1-D advection-dispersion (Ogata-Banks, leading term): C/C0 at the well after 3 years
alpha_L = 5.0 # longitudinal dispersivity, m
D = alpha_L * v # dispersion coefficient, m2/s
for years in (2, 3, 4):
t = years * 365 * 86400
arg = (L - v * t) / (2 * math.sqrt(D * t))
print(f"non-sorbing plume at the well after {years} years: C/C0 = {0.5*math.erfc(arg):.3f}")
# Darcy flux 0.043 m/day, seepage velocity 0.144 m/day
# travel time to a well 200 m away: 3.8 years
# retardation factor 3.83 -> contaminant arrives after 14.6 years
# non-sorbing plume at the well after 2 years: C/C0 = 0.002
# non-sorbing plume at the well after 3 years: C/C0 = 0.143
# non-sorbing plume at the well after 4 years: C/C0 = 0.588Even in permeable sand, water moves only ~14 cm/day. Dispersion makes the front arrive gradually (14% at 3 years, 59% at 4 years) instead of as a sharp step; sorption delays a contaminant almost 4× — but also makes it harder to flush out later.
Common mistakes
- Wrong: Using Darcy flux as travel speed. — Right: Divide by effective porosity for seepage velocity.
- Wrong: Ignoring heterogeneity. — Right: Preferential pathways can bring contaminants much sooner.
- Wrong: Assuming NAPLs move with water. — Right: Density and viscosity control NAPL migration.
Applications
- Wellhead protection: Capture zones around public supply wells.
- Landfill siting: Liners and monitoring wells.
- Spill response: Predicting plume arrival.
- Managed aquifer recharge: Rainwater harvesting into aquifers.
Key takeaways
- Q = KAi; v = Ki/n_e.
- Plumes: advection + dispersion + sorption + decay.
- R = 1 + ρ_bK_d/n.
- Protect wells with capture zones and monitoring.
Going further
- MODFLOW: USGS finite-difference groundwater model.
- Theis equation: Transient drawdown from pumping tests.
- Stochastic hydrogeology: Uncertainty from heterogeneous K fields.