HomeHydrologySaltwater Intrusion

🧂 Saltwater Intrusion

Simulate saltwater intrusion in a coastal aquifer using the Ghyben-Herzberg relation. Pump a well, watch the freshwater table drop and the saltwater wedge rise, and trigger well upconing and contamination.

Hydrology2DModerate60 FPS
saltwater-intrusion ↗ Open standalone

About this simulation

This simulation visualises a coastal aquifer using the Ghyben-Herzberg relation, z ≈ 40h, which relates the depth of the freshwater-saltwater interface below sea level (z) to the height of the freshwater table above sea level (h). Pumping a well lowers h locally, which pulls the interface up by roughly 40 times as much — and directly beneath the well screen a further, sharper effect called upconing can pull saline water straight into the well.

🔬 What it shows

A coastal cross-section with the ocean on the left and a land aquifer to the right. The blue freshwater lens floats over a darker saltwater wedge; the interface between them follows the Ghyben-Herzberg relation, bulging upward locally when the well pumps hard enough to trigger upconing.

🎮 How to use

Click the land area to place the well, then press Activate pumping. Adjust Pumping Rate Q (0–2000 m³/d), Well Distance from Coast (10–340 m), Well Screen Depth (5–38 m below sea level), Recharge (0–1000 mm/yr) and Sea Level Rise (0–2 m) and watch the freshwater table, interface depth, upconing height and contamination risk readouts respond live.

💡 Did you know?

Because seawater is only about 2.5% denser than freshwater, the Ghyben-Herzberg ratio ρf/(ρs−ρf) works out to roughly 40 — meaning a one-metre drop in a coastal water table can, in principle, pull the saltwater interface up by 40 metres.

Frequently asked questions

What is the Ghyben-Herzberg relation?

The Ghyben-Herzberg relation states that the depth of the freshwater-saltwater interface below sea level is about 40 times the height of the freshwater table above sea level. It follows from balancing hydrostatic pressure between a freshwater column and a slightly denser seawater column meeting at the interface, first described independently by W. Badon Ghyben in 1888 and Alexander Herzberg in 1901.

Why does pumping a coastal well cause saltwater intrusion?

Pumping lowers the freshwater table near the well. Because interface depth scales with roughly 40 times the table height, even a small drop in the table pulls the underlying saltwater interface up by a much larger amount, bringing saline water closer to the well screen and risking contamination.

What is well upconing?

Upconing is a localized, exaggerated rise of the saltwater interface directly beneath a pumping well, on top of the broader regional Ghyben-Herzberg trend. Past a critical pumping rate the upconed cone becomes unstable and saline water is drawn straight up into the well screen.

Does sea level rise make intrusion worse?

Yes. Raising the ocean boundary condition reduces the effective freshwater head throughout the aquifer, pushing the saltwater wedge further inland and shallower even without any increase in pumping — a real, compounding effect of climate change on coastal water supplies.

Which real cities suffer from saltwater intrusion?

Miami-Dade and other South Florida well fields, Jakarta, Bangkok, coastal California and parts of the Nile Delta and Mediterranean coast are all documented, ongoing cases where over-pumping and rising seas have pushed saline water into drinking-water aquifers.

How is saltwater intrusion managed in practice?

Water utilities reduce pumping rates near the coast, relocate wells further inland, inject treated freshwater to build a hydraulic barrier against the wedge, and continuously monitor water levels and salinity to keep the interface a safe distance below well screens.

⚙ Under the hood

Simulate saltwater intrusion in a coastal aquifer using the Ghyben-Herzberg relation — pump a well, watch the freshwater table drop and the saltwater wedge rise.

saltwater-intrusionghyben-herzbergcoastal-aquifergroundwater-pumpingupconingsea-level-rise

2D · HTML5 Canvas 2D · 60 FPS target · runs fully client-side, no install

What did you find?

Add reproduction steps (optional)