A cold-air pool traps vapour from a town. When the air gets supersaturated over ice, crystals appear, grow and take the visibility away.
Runs the box model for 8 hours at air temperatures from -8 to -50 °C with your current settings and compares the warmest temperature that makes crystals with the analytic prediction.
The science
Why ice fog. Below about -30 °C, any liquid droplets freeze, so a fog is made of ice crystals. Cold air holds very little vapour: the saturation pressure over ice (Murphy and Koop 2005) is ln ei = 9.5504 - 5723.3/T + 3.5307 ln T - 0.007283 T, about 103 Pa at -20 °C but only 13 Pa at -40 °C. Vapour from cars, chimneys and open water therefore pushes the air past saturation easily.
- Vapour budget (cold pool of depth H).
de/dt = RvT (E/H - dq/dt|growth) + (ebg - e)/τv, with source E (g m-2 h-1), ventilation time τv = L/u (L = 800 m town length), supersaturation Si = e/ei.
- Nucleation. Crystals appear when
Si > Sact: dN/dt = clamp((Si - Sact)/0.05) (A - N)/60 s, where A is the pool of available nuclei; above Si about 1.5 haze droplets freeze homogeneously and make crystals regardless of A. Sact and A are tunable and illustrative, not measured for a given town.
- Diffusional growth (Rogers and Yau).
r dr/dt = (Si - 1)/(Fk + Fd), Fk = (Ls/(RvT) - 1) Ls ρi/(K T), Fd = ρi Rv T/(D ei). With constant Si the closed form is r = √(r0² + 2(Si-1)t/F); the page checks its integrator against it.
- Crystals take the vapour back. Growth consumes vapour, which pulls Si down toward 1: the supersaturation is self-limiting once enough crystals exist.
- Fall-out. Stokes drag with a plate shape factor 0.4:
vt = 0.4 (2/9)(ρi g r²)/μ; crystals leave the pool at rate vt/H plus ventilation.
- Visibility (Koschmieder).
β = Qext π r² N with Qext = 2 (large-particle limit), V = 3.912/β for a 2 % contrast threshold. The 3D view uses Beer-Lambert fog exp(-βd) with the same β.
- Light pillars. A flat plate tilted by θ reflects light from a lamp into the eye from an apparent elevation 2θ, so the streak above a lamp at distance d is about
d tan 2θ (7 m at 100 m for θ = 2°). Brightness uses a single-scattering factor τ e-τ, with τ = βd, times the plate fraction. This is a visual model, not a ray trace of crystal optics.
- Plume mixing. Isobaric mixing of exhaust or breath with cold air is a straight line in (T, e); the page plots Si along it. A steep line from a warm source overshoots both saturation curves, which is why exhaust trails form even when the air as a whole is dry.
Honest simplifications. One well-mixed box with a single mean crystal size (no size distribution, no aggregation); crystals are treated as spheres with a fixed shape factor for fall speed (real plates, columns and dendrites differ); no radiative cooling, no inversion evolution, no frost deposition on the ground; the nucleation law, threshold, source strength and nuclei counts are illustrative, in a plausible range but not fitted to a particular winter; the vapour source of the whole town is one number. Typical values from the literature: ice-fog crystals are often 5 to 20 µm in radius and visibility under 1 km. Check any specific number against a reference before quoting it.
Models (terrain, houses, spruces, lamps, car) were built in Blender and baked; the page is rendered with Three.js. Independent educational model.