Same underlying physics as the 3D simulator — computed independently here rather than reused — laid out as three linked panels instead of one perspective camera: a top-down city map, a downwind concentration profile plotted against distance, and a live evacuated-vs-exposed population timeline. The dispersion itself is a continuous ground-level Gaussian plume:
C(x,y) = Q / (π · σy(x) · σz(x) · u) · exp( −y² / (2σy(x)²) )
σy(x) = p1·x^0.9, σz(x) = p2·x^0.85 (Pasquill–Gifford class A–F)
Q is the leak rate, u the wind speed, and (p1,p2) widen with atmospheric instability (class A spreads fastest and dilutes quickest; F barely spreads and stays concentrated far downwind). Every downwind point whose steady-state concentration clears the substance's AEGL-2 threshold sits inside the hazard envelope shown on both the map glow and the profile panel's threshold line.
Every city block also has an alert arrival time — the siren/coordination lag plus travel time at a fixed 15 m/s notification-and-egress speed, radiating outward from the source — and only survives if that alert reaches it before the plume front (distance ÷ wind speed) does. The population timeline panel plots exactly that race as it resolves, block by block, instead of only the final block colors.
- Substance — sets the leak rate and the AEGL-2 threshold used to size the hazard envelope; changing it redraws the concentration field and profile instantly.
- Atmospheric stability — A–F Pasquill class; unstable air dilutes the plume fast (narrow, short hazard zone), stable air lets it travel concentrated and far.
- Wind speed — pushes the plume front downwind faster but also dilutes it (u sits in the denominator of C), and sets the block "plume-arrival" time.
- Alert lag — the interagency/siren coordination delay before the evacuation order goes out; this alone can flip a block from safe to exposed, visible directly as the population panel's exposed band grows.
- Map pan/zoom — drag to pan the top-down city view, scroll/pinch to zoom; the profile and timeline panels keep their own fixed axes so you can always read the numbers.