An computational model

Principles     Gallery     Get the code on github   Contact
Principles and goals

I've taken the scientific background primarily from Ken Libbrecht, who studies the science of snow crystals. He developed a scientific model of snow crystal formation.

What I'm working on here is a computational model for the formation and growth of snow crystals. My aim is to emulate the natural physics as much as I can. The model is much-simplified, as you would expect, since crystallization at the molecular level is complex and not yet well understood, not to mention the computational complexity of emulating the process faithfully.

Snow crystals form as plates, stellar plates, dendrites, prisms, needles, and columns. Scientists have worked out how the variation in temperature and humidity will form different types of snow crystals in the wild. The varying conditions affect the growth in 3D, including the growth of facets and branches.

My aim with the computational model is to explore how different conditions reliably grow different types of crystal, and thus learn more about snow crystal growth. At this stage, I have a working model that can generate different shapes of snow crystal, very reminiscent of real snow crystal, however I haven't been able to model real-world conditions like temperature and humidity. That is for future work.

How a snow crystal forms (simplified)

This section is summarized from Libbrecht's page on Snowflake Science.

A note on terminology: 'Snowflake' is the everyday name for just about anything that falls from the sky in the winter, whereas 'snow crystal' is the more specific technical name for an individual crystal of ice, what we normally call a snowflake.

A snow crystal forms as the water vapour around a seed ice crystal freezes onto the seed, as it falls through the clouds.

Snow crystals have a hexagonal, or six-fold, symmetry because of the angular 3D geometry of water molecules (H2O). This means new water molecules can only attach in certain patterns.

As a snow crystal falls through the clouds, the temperature and humidity change unpredictably, and these changes make the arms grow differently. But at any one instant the conditions around all six arms are the same, so each arm grows the same. Since every path through the clouds is different, every snow crystal is unique.

Two properties determine how water molecules freeze and attach to the growing crystal:

How the code does it

My model is a huge simplification, but it is nonetheless based on physics principles:

Setup

Growth phase

Diffusion phase

Changing conditions

Copyright © 2026 Philip Edmonds