A paper → a model → a simulation
This project is a reimplementation of selected equations from Yang et al. (2024) into simulated particle journeys.
Source paper · Yang et al., 2024 ↗ Estimating the concentration of silver iodide needed to detect unambiguous signatures of glaciogenic cloud seedingLoading crystals…
* ice / o liquid · purple: seeded · altitude in metres · particle size exaggerated
From calculation to cloud
Where the data comes from
- Calculate
model.pyIntegrate each crystal’s mass and height with SciPy’s adaptive RK45 solver.
- Save
export_simulations.pyChoose a reproducible preset and export times, heights, masses, phases, and exact transition endpoints.
- Animate
cloud.json → trajectory.tsRead the saved trajectories and interpolate between samples. The browser replays these calculations.
The preset you are watching
Loading settings from the simulation data…
How one seeding burst becomes crystals
Loading the exported nucleation calculations…
| Height (m) | Temperature (K) | Ice saturation | Fraction activated | Expected crystals | Whole crystals |
|---|
Background starting heights are distributed between 2,300 and 2,700 m using Python’s random seed 42. Each starts with a 4 µm radius and ice density of 910 kg/m³. Seeded crystals use the same initial sphere.
The animation plays at 280× speed. Background journeys loop, with two staggered groups and a 450-minute playback offset. The water counter subtracts arrivals before the scene opens. Each completed angel flight starts one fresh replay of the saved seeding burst; these seeded journeys do not loop. Horizontal placement and the angel are visual choices.
Download the simulation data (JSON) ↓Behind each particle
How this simulation works
The equations below describe the calculations used in this implementation, with their sources and assumptions. Each equation includes its LaTeX source. Quantities use SI units unless stated otherwise.
I use deposition nucleation and spherical vapor growth, with still air and prescribed humidity. I omit the paper’s other nucleation modes, changing crystal shapes, riming, turbulence, and radar-detection algorithm. Moisture is not depleted. Below-cloud descent and instantaneous melting are my additions.
Building the project
Tech Stack
-
Python
Physics and simulation data
-
TypeScript
Animation
-
HTML
Page structure
-
CSS
Styling
-
Vercel
Hosting
Animated ASCII logos by ascii.rest ↗.
Shoutout to codex for making this possible. Pls hire me @Rainmaker