Presets
Playback
Parameters
Click an arrow to flip it by hand: two monopoles appear at its ends.
Model checks
The science
Ice rules and frustration
In spin ice every vertex (a tetrahedron in the 3D pyrochlore lattice, a four-way crossing here) wants two arrows pointing in and two out. The vertex charge is q = nin - nout and the energy is E = Δ q2/4, so ice vertices cost 0, three-in-one-out costs Δ and four-in costs 4Δ. Ground states are hugely degenerate: the system is frustrated and cannot pick one.
Residual entropy
Counting the 2-in-2-out states gives a zero-temperature entropy per vertex S/kB = ln W. Pauling's estimate is (1/2) ln(3/2) per spin, i.e. ln(3/2) = 0.4055 per vertex for two spins per vertex; Lieb's exact six-vertex result is (3/2) ln(4/3) = 0.4315. The sim enumerates all 218 states of a 3 x 3 torus to count the ice states exactly.
Monopoles and Dirac strings
Flipping one arrow turns two neighbouring ice vertices into opposite charges q = +2 and q = -2: an emergent monopole pair. Flipping a chain of arrows moves one monopole away, leaving a string of reversed arrows (a Dirac string). Total charge is always zero because each arrow contributes +1 to one vertex and -1 to the other.
Metropolis dynamics and field
One arrow flip is accepted with probability min(1, e-ΔE/T) in units where kB = Δ = 1. A field B along the (1,1) diagonal adds -B s per arrow; the fully polarized state is itself an ice state, so a field selects one ground state and monopole-free order appears.
Honest simplifications: this is the nearest-neighbour two-dimensional square-ice (six-vertex) model, not the 3D pyrochlore dipolar spin ice. Real spin ice (Dy2Ti2O7, Ho2Ti2O7) has long-range dipolar interactions and monopoles that interact with a Coulomb law; here the monopole interaction is only the on-site charge cost. Single-flip dynamics freezes at low T, as real spin ice does.
What to try
- Quench from random at T = 0.2 and watch the ice fraction rise, then freeze with a few defects left.
- Turn on the anneal toggle for a much cleaner ground state.
- Raise the field B to polarize all arrows.