Every cell on the grid is rural farmland, a building block, or a green patch (park / tree canopy). Each frame a 2D advection–diffusion energy balance updates every cell's temperature:
dT/dt = D·∇²T − wind·∂T/∂x
+ S·(1−albedo)·dayFactor(hour) [solar gain]
− k·SVF·(T−T_sky) [longwave loss to sky]
+ a·canyon·trafficFactor [anthropogenic heat, buildings]
− e·dayFactor [evapotranspiration, green cells]
− c·wind·(T−T_rural) [turbulent mixing]
Sky-view factor (SVF) is set by the building canyon ratio: SVF = 1/(1+H/W), so a narrow, tall-building canyon traps more outgoing longwave radiation at night — the classic reason cities cool off slower than the countryside after sunset (Oke's urban-canyon model). Cool-roof albedo cuts the daytime solar term directly; tree canopy adds an evapotranspirative sink; wind advects and mixes heat away. The clock runs a full simulated day roughly every 90 seconds so you can watch the island grow after dusk and shrink again by mid-morning.
- Heatmap — blue (cool) through red (hot) temperature field, updated live.
- ΔT (UHI intensity) — average urban-core temperature minus the rural boundary, the standard way heat-island strength is reported.
- Cooling-load index — an illustrative proxy (not a calibrated energy figure) for how much extra air-conditioning demand the current urban-core temperature implies.