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:

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

Worked example: Darcy flow

Given: K = 1e-4 m/s, i = 0.005, A = 1000 m²

Find: Q.

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.

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.

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

Even 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

Applications

Key takeaways

Going further