Presets
Playback
Initial sand
Wind and grains
Model checks
The science
Wind, threshold and flux
Wind speed at 10 m is turned into a friction (shear) velocity u* = κ U / ln(z / z0) with κ = 0.4 and roughness z0 = d/30. Grains are entrained only above the Bagnold threshold u*t = 0.1 √((ρs - ρ)g d / ρ), and the saturated horizontal flux is qs = C (ρ/g) √(d/D) (u* - u*t)(u* + u*t)2 (Kawamura form, C = 2.78, D = 0.25 mm).
Dune model
The shear stress over the bed follows a linear hill-flow law, τ/τ0 = 1 + A · H[h'] + B h', with H the Hilbert transform: the fastest wind sits just upwind of the crest. Real flux relaxes to saturation over a length ℓ (l dq/dx = qs - q), and the bed obeys the Exner equation ∂h/∂t = -(1/ρb) ∂q/∂x. Slopes above the 34° angle of repose avalanche, and where the lee slope exceeds 14° the flow separates (no shear, sand is dropped).
Honest simplifications: 1D cross-section (no barchan horns or lateral spreading), constant grain size, no moisture, vegetation or crust, no slope correction of the threshold, a crude separation rule instead of a bubble, and saltating grains are drawn illustratively (they are not tracked physically). The wind blows steadily above the threshold all the time, so migration speeds are an upper bound (real winds are intermittent and change direction), and nothing is calibrated to a specific site.
What to try
- Compare Calm and Gale: no flux below the threshold, then a roughly cubic rise.
- Run Two dunes: the small one is faster (c is about q/H) and catches up with the big one.
- Raise the speed-up A and watch the crest erode and the dune flatten.