Paramagnetic magnetization
Every isolated magnetic ion saturates along the same curve — only the quantum numbers change. The hard part is knowing which quantum numbers: quenched spin for the 3d shell, full J for the 4f shell, and a short list of ions that obey neither.
In practical units μB/kB = 0.67171 K T−1, so y = 0.67171 gJJ · B[T]/T[K], and the magnetization in Bohr magnetons per ion is simply gJJ BJ(y). Multiply by NAμB = 5585 emu G mol−1 for cgs molar units.
Interactive
Pick ions from either family. Curves are computed from the Hund's-rule ground state; for 3d ions you can switch between the quenched (spin-only) and free-ion descriptions and watch the saturation moment move.
Spin-only is the physically right choice for almost all 3d ions. 4f ions always use J and gJ.
C is the molar Curie constant in emu K mol−1 Oe−1, equal to μeff2/8; inverting, μeff = 2.828 √C. Msat = gJJ is the fully polarized moment the curve approaches.
Which quantum numbers
The choice between S and J is decided by one competition: crystal-field splitting against spin–orbit coupling. The 3d and 4f shells sit on opposite sides of it, which is why the same formula needs different inputs.
Crystal field wins · orbital moment quenched
The 3d orbitals are the outermost occupied shell. They point directly at the ligands, so the crystal field (Δ ≈ 104 cm−1) dwarfs spin–orbit coupling (λ ≈ 102–103 cm−1).
A crystal field of cubic or lower symmetry leaves a ground state that can be written as a real orbital wavefunction, and a real function carries ⟨Lz⟩ = 0. The orbital moment is quenched: J → S, gJ → 2, and μeff = 2√(S(S+1)).
Free-ion J is the wrong input here, and badly so for the second half of the series: it predicts 6.63 μB for Co2+ against ~4.8 observed, and 5.59 for Ni2+ against ~3.2.
Residual orbital contributions survive where the ground term is orbitally degenerate — octahedral Co2+ (4T1g) and Fe2+ (5T2g) both run above spin-only, and Co2+ in particular is strongly anisotropic and temperature-dependent. Low-spin configurations change S outright.
Use S with g ≈ 2. Fit g, don't assume it.
Spin–orbit wins · J is a good quantum number
The 4f orbitals lie inside the filled 5s25p6 shells. Ligands barely reach them, so the crystal field is only ~102 cm−1 while spin–orbit coupling is ~103 cm−1 — the ordering is reversed.
L and S stay coupled into a well-isolated Hund's-rule multiplet, so the free-ion answer is the right one: μeff = gJ√(J(J+1)) with the Landé g-factor. Agreement across the series is excellent, typically within a few percent.
Two ions break it. Sm3+ and Eu3+ have small spin–orbit splittings, so excited J multiplets are thermally populated at room temperature and van Vleck terms contribute. Eu3+ has a J = 0 ground state — the free-ion prediction is exactly zero, yet ~3.4 μB is measured, almost all of it from the 7F1 level ~370 cm−1 above.
The catch is at low temperature. Once kBT drops below the crystal-field splitting of the 2J+1 manifold, the free-ion BJ stops applying: a Kramers ion is left with a doublet ground state that behaves as an effective S = 1/2 with a strongly anisotropic g.
Use J and gJ — above ~50 K.
Evidence
The same two predictions — spin-only and free-ion — plotted against representative room-temperature values for hydrated salts. The measurement is the black ring; whichever prediction sits on top of it is the correct description of that shell.
Observed values are representative room-temperature μeff for hydrated salts (the standard Kittel / Van Vleck compilation). Real compounds scatter around these — Co2+ spans roughly 4.3–5.2 μB depending on symmetry and temperature — so treat them as a guide to which model applies, not as reference data.
Reference
Hund's-rule ground terms, Landé factors and both μeff predictions. Click any row to put that ion on the plot above.
| Ion | Config | Term | S | L | J | gJ | μ free-ion | μ spin-only | μ observed |
|---|
μeff in Bohr magnetons. Free-ion = gJ√(J(J+1)); spin-only = 2√(S(S+1)). The column that tracks the observed values is spin-only — the free-ion column is shown to make the size of the quenching visible, not because it should be used. d4 is the extreme case: J = 0 predicts no moment at all for an ion carrying S = 2.
| Ion | Config | Term | S | L | J | gJ | μ free-ion | μ spin-only | μ observed |
|---|
Here the free-ion column is the one that works, and it works nearly everywhere. Sm3+ and Eu3+ are the exceptions, both from low-lying excited J multiplets. Gd3+ agrees with both models for the trivial reason that L = 0, which is also why it is the workhorse ion for testing BJ experimentally.
Numerics
At small y both coth terms diverge, and you are subtracting two nearly equal large numbers — catastrophic cancellation, sitting exactly in the low-field, high-temperature regime where most susceptibility data live. Evaluated naïvely, J = 7/2 at y = 10−6 is already wrong in the fifth digit, and it degrades as y falls.
Switch to the series expansion below y ≈ 10−3. Its leading term (J+1)/3J is exactly what reproduces Curie's law, so the crossover is also the natural place to check that the two branches agree.
import numpy as np def brillouin(J, y): y = np.atleast_1d(np.asarray(y, float)) a, b = (2*J+1)/(2*J), 1/(2*J) out = np.empty_like(y) s = np.abs(y) < 1e-3 # series branch out[s] = (J+1)/(3*J)*y[s] - (J+1)*((J+1)**2+J**2)/(90*J**3)*y[s]**3 out[~s] = a/np.tanh(a*y[~s]) - b/np.tanh(b*y[~s]) return out def M_muB(J, g, B_T, T_K): # magnetization in mu_B per ion return g*J*brillouin(J, 0.67171*g*J*B_T/T_K)
Checks it should pass: B1/2(y) = tanh y to machine precision; J → ∞ recovers the Langevin function coth y − 1/y; the y → 0 slope is (J+1)/3J, which gives χ = NμB2g2J(J+1)/3kBT.
Limits
A returned "J" from a least-squares fit is only physical if the assumptions behind the function hold. These are the situations where it does not.