HomeMaterials ScienceNucleation & Growth — Birth of a New Phase

❄️ Nucleation & Growth — Birth of a New Phase

A new phase appears only when fluctuations exceed a critical nucleus radius: below it clusters dissolve, above it they grow. Watch undercooling drive nucleation.

Materials Science3DModerate60 FPS
nucleation-growth ↗ Open standalone

About this simulation

This simulation is a Monte Carlo model of classical nucleation theory (the physics of how a new phase, like a crystal or droplet, first appears). Every frame it spawns random "embryo" clusters whose radius is drawn from a thermal-noise distribution centred near the critical radius r* = 2γ/ΔGv, where γ is surface energy and ΔGv is the volume free-energy driving force set by undercooling. Clusters smaller than r* shrink and dissolve each step; clusters at or above r* grow, following ΔG(r) = −(4/3)πr³·ΔGv + 4πr²·γ. The dashed ring on screen marks the live r*.

🔬 What it shows

Hundreds of randomly seeded clusters, some fading away (sub-critical, shown faint) and some expanding into stable crystals (super-critical, shown with a bright radial gradient), driven purely by the balance between surface energy and volume free energy predicted by classical nucleation theory.

🎮 How to use it

Drag the Undercooling ΔT slider to raise the driving force and shrink r*; the Surface energy γ slider enlarges r* and the nucleation barrier. Nucleation rate sets how many embryos appear per frame, and Growth speed sets how fast super-critical nuclei expand. Click or tap the canvas to seed a guaranteed super-critical nucleus at that spot. Pause/Play and Reset control the run, and the live stats panel reports r*, the barrier ΔG*, surviving nuclei, and the dissolved count.

💡 Did you know?

Pure water can be supercooled well below 0°C and stay liquid because no stable nucleus has formed yet — a single speck of dust or a sharp tap can trigger near-instant ice crystallisation, the same critical-radius physics modelled here.

Frequently asked questions

What is the critical radius r* in this simulation?

r* is the cluster radius at which the free energy ΔG(r) is at its maximum. The simulation computes it live as r* = 2γ/ΔGv from the Surface energy and Undercooling sliders. Clusters smaller than r* are shown shrinking and fading (unstable); clusters at or above it are shown growing with a bright gradient (stable). The dashed circle drawn near the top-right of the canvas is this exact r* value, updated every frame.

How does the Undercooling slider change the outcome?

Undercooling ΔT feeds directly into the driving force ΔGv used by the code (dGv = 0.25 + 3.0 × undercool). Since r* = 2γ/ΔGv, turning ΔT up shrinks r*, so far more randomly-sized embryos land above the critical size and survive — you will see nucleation become much more frequent and the "Surviving nuclei" counter climb faster.

What does the Surface energy γ slider do?

γ is the energy cost of creating new surface area between the old and new phase. Raising γ increases both r* (= 2γ/ΔGv) and the nucleation barrier ΔG* (= 16πγ³/(3ΔGv²)) computed by the simulation, meaning clusters need to reach a larger size before they stop shrinking — fewer random embryos will be large enough to survive.

Why do some clusters shrink and disappear while others grow?

Each spawned embryo gets a random starting radius drawn from a rough thermal distribution around r*. In the step() function, any cluster with radius below the current r* has its radius reduced every frame until it is dissolved (added to the Dissolved counter); any cluster at or above r* has its radius increased at a rate based on Growth speed and Undercooling, with growth slowing as it approaches roughly half the canvas size.

What happens when I click or tap on the canvas?

Clicking or tapping calls the seedAt() function, which places a new cluster at that exact point with radius set to 1.4 × the current r* — guaranteed to be super-critical — so it immediately starts growing regardless of the random thermal distribution used for automatic embryos.

⚙ Under the hood

Watch undercooling push cluster fluctuations past the critical nucleus radius, tipping them from dissolving to runaway crystal growth.

nucleationcrystal growthsupersaturationcritical radiusCanvas 2D

3D · Three.js / WebGL renderer · 60 FPS target · runs fully client-side, no install

What did you find?

Add reproduction steps (optional)