One reef, one season. Warm water makes colonies ready, the moon picks the nights, sperm slicks decide fertilisation, and the current decides where the larvae settle.
The science
Cues. Each colony has its own thermal threshold: it becomes ready once degree-days above 26 °C since 1 September reach θi ~ N(θ0, σθ) (sea temperature T = Tm + Ta sin(2π(doy+46)/365) + ΔT). It then spawns on its preferred night after the next full moon, ki ~ N(5, σk) nights, at τi ~ N(120, στ) min after sunset. Light pollution widens both spreads. Full moons use the mean synodic month 29.5306 d (JD = 2451550.2597 + (k+½)·29.5306, up to about 14 h from the true moon); sunset uses the solar-declination formula (solar time).
Sperm slick. Each colony releases M0 = 2×1012 sperm into a surface slick of thickness h = 0.05 m as a Gaussian puff: c = M0 e−t/τ / (2π σ² h) · exp(−r²/2σ²), σ² = σ0² + 2K t (K = eddy diffusivity), sperm viability τ = 90 min. Fertilisation (Vogel-type): F(c) = (1 − e−βc) e−c/cp, β = 3×10−5 mL, cp = 6×106 /mL for polyspermy. Eggs are evaluated 20 min after release; corals are mostly self-incompatible, so a colony's own sperm counts 3 %. Few or poorly synchronised colonies mean low sperm density, an Allee effect.
Larvae. Fertilised eggs become larvae that are not yet competent for tc1 = 4·2−(T−27)/10 d and can settle until 30 d. In the 1-D along-current model the larval cloud has centre u(1−retention)t and variance σ² = σ0² + 2Kl t, mortality μ per day, and settlement hazard κ times the cloud's overlap with each of three reef patches (natal reef at 0, neighbour at 8 km, far reef at 25 km).
Honest simplifications. One species-agnostic population; no species-specific cue weighting, no genetics, no depth or wind; the slick is a 2-D Gaussian (no Langmuir cells); bundle break-up, egg-sperm compatibility between species and predation on bundles are folded into β and M0, which are illustrative, not measured values. Spawning dates are model dates, not predictions for a real reef. The 3D patch is drawn at half the map scale.
Models built with Blender (corals, fish, reef floor) and rendered with Three.js.