A cold downdraft spreads as a gravity current across a 3 km desert domain towards a small town.
The wall. Rain-cooled air sinks and spreads along the ground as a density current. Its front moves at Uf = Fr √(g' h) with reduced gravity g' = g ΔT / T and Froude number Fr ≈ 1.07 (Benjamin 1968; Simpson 1999). A deficit of 8 K and 1.5 km depth gives about 21 m/s. The head lifts air at the nose, which is why the wall rolls upward.
Lifting sand. Wind stress is the friction velocity u* = κ U10 / ln(10/z0). Grains move when u* exceeds the threshold u*t = √[A(γ/(ρad) + ρp g d/ρa)] (Shao and Lu 2000; A = 0.0123, γ = 1.65e-4 N/m). The cohesion term makes 10 µm dust far harder to lift than 100 µm sand: dust is mostly released by the impacts of saltating sand. Saltation flux (Kawamura): Q = C (ρa/g)(u* - u*t)(u* + u*t)2, C ≈ 2.78, so Q grows roughly as u*³.
Dust. Emission is F = α Q with an efficiency α that is an illustrative, tunable number (real values depend on soil crust and clay content and span orders of magnitude). Parcels random-walk vertically with K = κ u* z (1 - z/H), settle at the Stokes speed ws = (ρp - ρa) g d² / (18 μ) corrected for finite Reynolds number, and are lifted in the head. In steady turbulence the profile follows the Rouse law, C ∝ ((H - z)/z)Ro with Ro = ws/(κ u*).
Visibility. Extinction β = 3 Qext C / (2 ρp d) with Qext ≈ 2 and Koschmieder's law V = 3.912/β (2 % contrast threshold).
Simplifications, stated honestly. Two-dimensional wind field prescribed from the current depth (no solved Navier-Stokes), one grain size for transport and one for suspension, no coagulation or electrostatics, no moist processes, no recycling of the cold pool, uniform soil, and the dust parcels are a Monte-Carlo sample (about 7000, so the concentration at the town has sampling noise of a few percent). Constants such as C, A, γ, Fr and α are typical literature values and should be treated as order-of-magnitude. Real haboobs also carry lobes and clefts and last hours.
Educational model. Terrain, buildings and palms were modelled in Blender and baked to textures; the dust is simulated live.