Soil Percolation Simulator: Model Water Infiltration with Green-Ampt

simulator intermediate ~12 min
Loading simulation...
f = 7.2 cm/hr — infiltration exceeds rainfall, no runoff

With K_s = 5 cm/hr and suction head 30 cm, the Green-Ampt model predicts an initial infiltration rate of 7.2 cm/hr, decreasing as the wetting front advances.

Formula

f(t) = K_s · (1 + ψ_f · Δθ / F(t)) (Green-Ampt)
F(t) = K_s·t + ψ_f·Δθ·ln(1 + F/(ψ_f·Δθ)) (implicit)
q = -K · dH/dz (Darcy's law)

Water Enters the Ground

When rain falls on soil, water enters through the surface in a process called infiltration. The rate at which water can enter depends on the soil's hydraulic conductivity, its current moisture content, and the capillary suction pulling water into dry pores. Initially, dry soil sucks water in rapidly, but as the wetting front advances and the suction gradient diminishes, the infiltration rate declines toward the saturated hydraulic conductivity — the soil's steady-state limit.

The Green-Ampt Model

Developed in 1911, the Green-Ampt model idealizes the wetting process as a sharp front separating fully saturated soil above from uniformly dry soil below. This piston-like approximation yields a tractable equation: f = K_s(1 + ψ_f Δθ / F), where ψ_f is the suction at the wetting front, Δθ is the moisture deficit, and F is cumulative infiltration. Despite its simplicity, the model captures the essential physics — rapid initial infiltration that decays to steady state.

Runoff and Ponding

When rainfall intensity exceeds the soil's infiltration capacity, water ponds on the surface and runs off. This Hortonian overland flow is the primary driver of erosion and flash flooding on compacted or clay-rich soils. The ponding time — the moment runoff begins — depends on rainfall intensity, soil conductivity, and initial moisture. This simulation tracks the wetting front descent and the transition from full infiltration to runoff generation in real time.

From Soil to Aquifer

Water that infiltrates past the root zone continues downward through the vadose zone until it reaches the water table, recharging groundwater. This percolation pathway is also nature's filter: soil particles, organic matter, and microbial communities remove pathogens, heavy metals, and organic contaminants. Understanding percolation rates is essential for designing septic systems, irrigation schedules, stormwater management, and groundwater protection zones.

FAQ

What is soil percolation?

Soil percolation is the downward movement of water through the soil profile under the combined forces of gravity and capillary suction. The rate depends on soil texture, structure, moisture content, and the hydraulic gradient. Percolation recharges groundwater, delivers water to plant roots, and filters contaminants.

What is the Green-Ampt infiltration model?

The Green-Ampt model (1911) approximates infiltration by assuming a sharp wetting front separating saturated soil above from dry soil below. The infiltration rate f = K_s(1 + ψ_f·Δθ/F) decreases over time as cumulative infiltration F increases. It provides a physically-based alternative to purely empirical models like Horton's equation.

What determines hydraulic conductivity?

Saturated hydraulic conductivity (K_s) depends on pore-size distribution, which is largely determined by soil texture. Coarse sands have K_s of 10–100 cm/hr; clays may be 0.01–0.1 cm/hr. Structure, organic matter, and biological activity (earthworm burrows, root channels) also create macropores that dramatically increase effective K_s.

When does surface runoff begin?

Runoff begins when rainfall intensity exceeds the soil's infiltration capacity (Hortonian runoff) or when the soil profile becomes fully saturated from below (saturation-excess runoff). In the Green-Ampt model, the ponding time t_p occurs when the infiltration rate drops below the rainfall rate, after which excess water runs off the surface.

Sources

Embed

<iframe src="https://homo-deus.com/lab/soil-science/percolation-rate/embed" width="100%" height="400" frameborder="0"></iframe>
View source on GitHub