A real 2D electron gas (e.g. a GaAs heterostructure) in a perpendicular field B quantises its kinetic energy into discrete Landau levels, evenly spaced by the cyclotron energy:
ω_c = eB/m*, E_n = ħω_c(n + ½)
each level holds g_L = 2eB/h carriers per unit area (spin-degenerate)
Because E_n grows linearly in B while the Fermi energy E_F = ħ²πns/m* stays fixed by the carrier density, every level sweeps up through E_F as B is swept. Each crossing spikes the density of states right at the Fermi level — and because real resistivity in this regime tracks DOS(E_F), ρxx oscillates. This simulator numerically builds that density of states as a sum of Gaussian-broadened Landau levels,
D(E,B) = Σ_n g_L · Gauss(E − E_n(B), σ = Γ)
then thermally averages it against the Fermi-Dirac derivative −∂f/∂E (a live numerical integral over ±8kBT around E_F, not a closed-form fit) to get DOS(E_F). The ratio DOS(E_F)/D₀ — D₀ = m*/(πħ²) is the field-free flat 2D DOS — is exactly the oscillating part of ρxx/ρ₀ plotted below. Because level crossings happen at equal steps of 1/B (E_n(B)=E_F ⇒ B_n = E_F/(ħω_c/B·(n+½)) ∝ 1/(n+½)), the oscillation is strictly periodic in 1/B with the Onsager period:
Δ(1/B) = 2e / (h·n_s) [spin-degenerate 2DEG, exact]
- Carrier density ns sets E_F and hence the oscillation frequency in 1/B.
- Temperature T sets the thermal window kBT that averages nearby levels together (Lifshitz-Kosevich thermal damping).
- Disorder TD sets the Gaussian linewidth Γ = πkBTD of each level (Dingle damping).
This is exactly how real SdH measurements work: sweep B, record ρxx, Fourier-transform against 1/B, and the peak frequency reads off the carrier density (or Fermi-surface cross-section) directly.