Cape Town's famous summer wind — the south-easter, or
Cape Doctor — slams into Table Mountain, Devil's Peak, Lion's Head and
Signal Hill. The mountains squeeze it through gaps (the Venturi
effect), bend it around the peaks so it hugs the slopes (the
Coanda effect), and tumble it into rolling gusts on their
lee sides (rotors — why Vredehoek is nicknamed
"Windyhoek"). In winter the pattern flips: storm winds arrive from the
north-west and the sheltered and exposed suburbs swap roles.
This site shows a physics model of that, from Cape Point to Durbanville to
Stellenbosch. Colours = how hard the wind blows at street level. Moving
streaks = the wind's path. Around the Table Mountain chain the model runs at
a higher resolution (75 m, sharpening to 25 m as you zoom) so the
valleys and ridges that funnel wind are resolved in more detail.
The numbers (for the curious)
Model: a 3-D mass-consistent diagnostic wind model
(the NUATMOS / WindNinja family). The observed inflow profile is blocked by
real terrain, then minimally adjusted so mass is conserved exactly
(divergence driven below 10⁻¹⁰ s⁻¹ on a ~670,000-cell grid).
Stratification: the south-easter is a stable, inversion-capped
layer (the "tablecloth"). A Froude-number ratio r² = Fr²/(1+Fr²) weights
vertical vs horizontal adjustment — low Fr forces air around peaks
rather than over them.
Downslope windstorm & wind shadow: a pure mass-conserving
model gets lee flow backwards — it dumps a calm deficit right where the
real wind is strongest and keeps flank flow attached where the real air
is sheltered. We correct both. Windstorm: at Froude ≈ 1 the
stable south-easter stays attached as it pours over the Table Mountain /
Devil's Peak saddle and accelerates down the lee slope — so the gap-fed
upper City Bowl (Vredehoek, Oranjezicht) gets a mean boost up to ~1.9×.
Wind shadow: a spot tucked deep behind a tall continuous massif
(not on a gap-fed slope) sits in a wake the model can't produce on its
own, so we damp its surface wind and turbulence — which is why Clifton,
behind the Lion's Head / Twelve Apostles wall, is the calm summer refuge
it really is. Both are empirical patches for the model family's known
blind spot, not resolved dynamics.
Wind input: three years of hourly reanalysis (Open-Meteo) at a
point over False Bay, upwind of the peninsula. Each compass direction uses
its own observed median / 90th-percentile speed and gust factor — so the
north-wester is as strong as winter really makes it.
Two nested grids: the metro region (Cape Point → Durbanville →
Stellenbosch/Helderberg) at 200 m, and a 75 m detail grid with finer
vertical levels over the Table Mountain chain. They are composited into
one seamless field — the finer grids over the mountain chain, the coarse
grid everywhere else, at matched opacity.
Street-level wind: the displayed speed is 10 m above ground
corrected through the local surface roughness from ESA WorldCover
10 m land cover — dense urban fabric, forest, vineyards and open water
all change what you feel on the ground.
Large buildings: tall buildings (≥25 m, from OpenStreetMap
height tags) are far smaller than a grid cell, so they enter as local
physics: dense tall fabric slows the mean street wind (urban
canyon), while towers bring roof-height momentum down to street corners —
gusts approach ~75% of the wind at roof height (downwash, the magenta
cells in the Effect-zones layer). Exact corner accelerations need
building-resolved CFD; treat these cells as "gustier than the colour
suggests".
Micro-resolution & calm pockets (25 m): the flow solver
runs at 75 m, but the open elevation data carries real information down
to ~30 m — so the street-level wind (and speed-up) layers sharpen from
200 m → 75 m → 25 m as you zoom. For every 25 m pixel, the upwind
horizon angle to terrain within 1.2 km (the Winstral Sx shelter
parameter, from Copernicus GLO-30 elevations) redistributes the solved
wind within each coarse cell — revealing calm hollows, gully
mouths and lee toes. Green pins mark the ten deepest reliably-calm
pockets: low mean wind and low turbulence, so gusty lee-rotor
zones never count as calm. Gust and turbulence layers stay at 75 m —
rotor gusts penetrate sheltered hollows. Below ~30 m the open data runs
out: garden-scale shelter (hedges, walls, single houses) would need
LiDAR and building-resolved CFD.
Turbulence & gusts: diagnosed from shear, wake deficit and a
lee-rotor criterion (peaks at Fr ≈ 1), calibrated to the observed
flat-terrain gust factor.
Windiness score & colours: the ranking and the suburb
marker colours use a 0–100 score (55% mean wind + 30% gusts + 15%
turbulence) — so a rotor suburb with a modest average but violent gusts
reads as windy, not calm. The wind-speed colour scale stretches to each
scenario's own inflow, so a calm day and a gale both use the full
palette rather than washing out.
Honest limitations: mass-consistent models conserve mass, not
momentum — the downslope jet, separation and rotor dynamics are
empirical add-ons, not resolved, and individual streets are below even
the 75 m grid. The mean field is not yet calibrated against weather-station
records, so trust the relative ranking more than any single
number.