HomeArticlesPhytoplankton Bloom Dynamics

Phytoplankton Bloom Dynamics: The NPZ Model of a Spring Bloom

Three coupled numbers, nutrients, phytoplankton and zooplankton, are enough to reproduce the boom-and-bust rhythm of the ocean's most important bloom.

mysimulator teamUpdated June 2026≈ 8 min read▶ Open the simulation

The bloom that feeds the ocean

Every spring, in temperate and polar seas, single-celled phytoplankton multiply so fast that they can turn a patch of ocean visibly green or brown within days, and this single event underpins most of the food web above it, from copepods to fish to whales. Modelling it well means modelling the tug-of-war between three quantities: the dissolved nutrients that limit growth, the phytoplankton biomass that grows on those nutrients, and the zooplankton biomass that grazes the phytoplankton down. This is the classic NPZ model — Nutrients, Phytoplankton, Zooplankton.

live demo · drifting particles surging and thinning● LIVE

Why the surge happens in spring

Two things stand in the way of phytoplankton growth all winter: not enough light, and being mixed too deep to reach it. Winter storms churn the water column, dragging nutrient-rich deep water up but also dragging phytoplankton cells below the depth where they get enough sunlight to grow faster than they respire. As spring warms the surface and the water column stabilises into a shallow mixed layer, cells suddenly stay near the light while the nutrient stock from winter mixing is still largely untouched — growth rate finally exceeds loss rate, and the population explodes exponentially for one to three weeks.

The three coupled equations

Each pool in the model gains from one process and loses to another. Nutrients are consumed by phytoplankton growth and returned by recycling (dead cells and waste breaking down). Phytoplankton grow on nutrients, limited by light and temperature, and are lost to grazing and natural mortality. Zooplankton grow by eating phytoplankton, with a time lag, and are lost to their own predators and mortality.

dN/dt = -uptake(N, light) * P  +  recycling * (P_loss + Z_loss)
dP/dt =  uptake(N, light) * P  -  grazing(P) * Z  -  mortality_P * P
dZ/dt =  assimilation * grazing(P) * Z  -  mortality_Z * Z^2

  uptake(N, light)   Michaelis-Menten saturation in N, times a light limitation term
  grazing(P)         Holling type II or III functional response, saturates at high P

The nutrient-uptake term follows Michaelis-Menten kinetics — growth rate rises with nutrient concentration but saturates once nutrients are abundant, exactly like an enzyme reaction. The grazing term typically follows a Holling type II or III functional response, so that zooplankton grazing also saturates once phytoplankton is dense, which is precisely the nonlinearity that allows the system to overshoot and oscillate rather than settle smoothly to equilibrium.

Why the bloom always crashes

The bloom's end is a race between two brakes applied at different speeds. Nutrient drawdown acts almost immediately — as phytoplankton biomass climbs, nitrate and other limiting nutrients fall, and growth rate slows the moment concentrations drop below the Michaelis-Menten half-saturation constant. Zooplankton grazing acts with a lag, because zooplankton populations need time to grow in response to more food; by the time grazing pressure peaks, the phytoplankton population is often already declining from nutrient limitation, and the combined effect crashes the bloom hard, often within one or two weeks of its peak.

What the model leaves out, and why it still works

Real plankton communities have dozens of species with different sizes, sinking rates and nutrient preferences, and real oceans have vertical structure, advection and patchiness that a well-mixed three-box model ignores entirely. Yet the stripped-down NPZ system reproduces the timing, rough peak magnitude and boom-bust shape of real blooms remarkably well, which is why it remains the workhorse teaching model in biological oceanography — the same reason a simple predator-prey model captures the essence of population cycles without needing every species in the food web.

Frequently asked questions

Why does the spring bloom happen in spring specifically?

Winter storms mix nutrients up from deep water but also mix phytoplankton below the depth where they get enough light. In spring the water column stabilises into a shallow, sunlit mixed layer while nutrients from winter are still abundant, so growth can finally outrun the losses and biomass surges.

What actually ends a bloom?

Usually a race between nutrient exhaustion and zooplankton grazing. The phytoplankton draw down nitrogen and other nutrients until growth slows, while a lagged zooplankton population, having fed on the bloom, keeps growing and grazing it down even after nutrients recover slightly.

What is the NPZ model an approximation of?

It collapses an entire planktonic food web into three pools: dissolved nutrients, phytoplankton biomass, and zooplankton biomass. It ignores species composition and size structure, but it captures the core boom-bust feedback well enough to reproduce the timing and rough magnitude of real blooms.

Try it live

Everything above runs in your browser — open Phytoplankton Bloom Dynamics and change the parameters while it is running. Nothing is installed, nothing is uploaded, the whole model lives in one tab.

▶ Open Phytoplankton Bloom Dynamics simulation

What did you find?

Add reproduction steps (optional)