Ising Explorer 2D · square · periodic

Metropolis–Hastings & Wolff cluster dynamics · J=1, kB=1 · Tc = 2/ln(1+√2) ≈ 2.2692
— fps · 0 sweeps · Metropolis
Lattice 128×128
Convention: H = −J Σ⟨ij⟩ sᵢsⱼ − H Σ sᵢ
β = 1/T · spins ∈ {+1, −1}
Click the lattice to play / pause · Space also toggles
▶ Start simulation
Wolff cluster updates do not satisfy detailed balance for H≠0. Auto-falling back to Metropolis while |H| > 0.
Presets:
|M| / N
⟨|Σsᵢ|⟩ / N
E / N
−J⟨s·s⟩ − H⟨s⟩
χ (per spin)
β(⟨M²⟩−⟨|M|⟩²)/N
C (per spin)
β²(⟨E²⟩−⟨E⟩²)/N
Guided experiments
Find Tc by scanning

Anneal 5 → 0.1 and watch χ, C peak near 2.27.

Hysteresis at T<Tc

T=1.8, sweep H from −0.5 → +0.5 → −0.5.

Critical slowing

Compare Metropolis vs Wolff at T=Tc.

Finite-size

Watch χ-peak sharpen as L: 50→200.

What am I looking at?
Each pixel is a spin sᵢ ∈ {+1, −1} (orange = up, teal = down). We evolve toward the Boltzmann distribution P(state) ∝ exp(−E/T) with E = −J Σ⟨ij⟩ sᵢsⱼ − H Σᵢ sᵢ using periodic boundaries. Below Tc the system spontaneously magnetizes — a global sᵢ ↔ −sᵢ symmetry breaks. Above Tc thermal noise wins and ⟨M⟩ → 0.
Metropolis vs Wolff
Metropolis proposes a single spin flip and accepts with min(1, exp(−ΔE/T)). Near Tc the correlation length diverges and single-spin dynamics get stuck (critical slowing down, τ ∼ Lz).

Wolff grows a cluster of aligned spins by adding neighbors with probability p = 1 − exp(−2βJ) and flips the whole cluster. This decorrelates configurations near Tc dramatically faster, but only respects detailed balance for H=0 — so this app disables it when |H|>0.
Onsager's exact result (infinite L, H=0)
For the infinite 2D square-lattice Ising model at zero field, Tc = 2 / ln(1+√2) ≈ 2.26919, and the magnetization below Tc is |m(T)| = (1 − sinh(2β)−4)1/8. The dashed curve on the M–T chart is this exact result — finite L rounds it near Tc.
Observables T=2.269, H=0.000
|M|/N vs time (sweeps)
|M|/N
E/N vs time (sweeps)
E/N
|M|(T) — measurements vs Onsager
samples Onsager current