Zeeman effect

Quantum Mechanics
                      K. Konishi, G. Paffuti

Study the effect of a magnetic field on a (L-S) multiplet. Compute the splitting of spectral lines as a function of the magnetic field.

ClearAll["Global`*"];
Off[General::spell, General::spell1,InterpolatingFunction::"dmval"];
Off[ClebschGordan::"phy",ClebschGordan::"tri"];

Clebsch-Gordan coefficients

Base vectors

In the first part of the notebook we review some properties of the Clebsch-Gordan coefficients. We will assume to work in a multiplet with given L and S. The basis |L,(Subscript[L, z])⟩⊗|S,(Subscript[S, z])⟩ is denoted by v[Lz,Sz], the dependence on L and S being assumed. Eigenstates of (J^2),(Subscript[J, z]) in this multiplet are written as vJ[ J, Jz, {L, S}]. The addition rules for angular momentum give |L-S|≤ J ≤ |L+S|and we define the corresponding variables Jmin and Jmax:

Jmax = Abs[L+S]; Jmin = Abs[L-S];

The eigenvectors vJ are defined through a function which remember computed values:

vJ[J_,Jz_,{L_,S_}] :=vJ[J,Jz,{L,S}]=(
Expand[Simplify[Sum[
ClebschGordan[{L,Lz},{S,Jz-Lz},{J,Jz}]v[Lz,Jz-Lz],{Lz,-L,L}]]])

The reader can order the basis vectors using the values of J, as in this instruction

Block[{L=1,S=1/2},
Sort[Flatten[Table[vec[J,Jz,{L,S}],{J,Jmin,Jmax},{Jz,-J,J}]]]]

or using Jz, as in

Block[{L=1,S=1/2},
Sort[Flatten[Table[vec[J,Jz,{L,S}],{J,Jmin,Jmax},{Jz,-J,J}]],#1[[2]]< #2[[2]]&]]

In both cases a rule vec → vJ produces the expanded base, as a linear combination of the vectors v[Lz,Sz].

Operators

We give a simple definition of the operators (Subscript[L, z]),(SubPlus[L]),(SubMinus[L]) , denoted by Lz, Lp, Lm, by their effect on the basis vectors. The normalization used is the usual one, e.g.  (SubPlus[L])= ((Subscript[L, x]) + i (Subscript[L, y])). We first define an auxiliary operator acting on a single factor like  x v[Lz,Sz], then we make a linear extension using the function Distribute. The same procedure is used for the spin S and the total momentum J.

ℓz[x_?NumberQ] = 0;
ℓz[x_.v[Lz_,Sz_]]:=x  Lz v[Lz,Sz];
Lz[x_]:= Distribute[ℓz[Expand[x]]];
ℓp[x_?NumberQ] = 0;
ℓp[x_.v[Lz_,Sz_]]:= If[Lz<L, x*(Sqrt[L(L+1) - Lz(Lz+1)]) v[Lz+1,Sz],0];
Lp[x_]:= Distribute[ℓp[Expand[x]]];
ℓm[x_?NumberQ] = 0;
ℓm[x_.v[Lz_,Sz_]]:= If[Lz>-L, x*(Sqrt[L(L+1) - Lz(Lz-1)]) v[Lz-1,Sz],0];
Lm[x_]:= Distribute[ℓm[Expand[x]]];
𝓈z[x_?NumberQ] = 0;
𝓈z[x_.v[Lz_,Sz_]]:=x  Sz v[Lz,Sz];
Sz[x_]:= Distribute[𝓈z[x]];
𝓈p[x_?NumberQ] = 0;
𝓈p[x_.v[Lz_,Sz_]]:= If[Sz<S, x*(Sqrt[S(S+1) - Sz(Sz+1)]) v[Lz,Sz+1],0];
Sp[x_]:= Distribute[𝓈p[Expand[x]]];
𝓈m[x_?NumberQ] = 0;
𝓈m[x_.v[Lz_,Sz_]]:= If[Sz>-S, x*(Sqrt[S(S+1) - Sz(Sz-1)]) v[Lz,Sz-1],0];
Sm[x_]:= Distribute[𝓈m[Expand[x]]];
Jp[x_]:= Lp[x]+ Sp[x];
Jm[x_]:= Lm[x]+Sm[x];
Jz[x_]:= Lz[x]+Sz[x];

Using the above operators we can define invariant operators (scalars) in an obvious way. As an example the operators (J^2) and L·S are defined below

J2[x_]:= ((1/2)Jp@(Jm[x])+(1/2)Jm@(Jp[x])+Jz@(Jz[x]));
LS[x_]:= ((1/2)Lp@(Sm[x])+(1/2)Lm@(Sp[x])+Lz@(Sz[x]));

To write representative matrices for the operators we need the scalar products between states. For simplicity we limit ourselves to real combination of basis vectors. We can write the scalar product as a function or just as a substitution rule

scalar[v1_,v2_]:= Expand[v1*v2]/.{v[a_,b_]v[c_,d_]-> If[a== c && b== d,1,0],v[a_,b_]^2 -> 1};
rulescalar = {v[a_,b_]v[c_,d_]-> If[a== c && b== d,1,0],v[a_,b_]^2 -> 1};

Both realize the basic scalar product v[Lz,Sz]·v[Lz',Sz']=(Subscript[δ, Lz,Lz'])(Subscript[δ, Sz,Sz']).

Example

Let us take as an example :

L=1;S=1/2;

The vector base contains J,Jz eigenvectors, ordered with J:

base=(Sort[Flatten[Table[vec[J,Jz,{L,S}],{J,Jmin,Jmax},{Jz,-J,J}]]])/.vec-> vJ;

Here we check that the vectors are indeed eigenvectors of J2 with the correct eigenvalue, J (J + 1), and the correct multiplicity, 2J+1

expectedJ2Values = Table[{J(J+1),"mult="<>ToString[2J+1]},{J,Jmin,Jmax}]

Simplify[(J2/@base)/base]

We know from the general theory that the operator L·S is diagonal in the multiplet and its eigenvalues are given by

Table[(1/2)(J(J+1) -L(L+1)-S(S+1)),{J,Jmin,Jmax}]

Let us check this result by constructing the representative matrix for the operator:

matLS =A Table[Expand[base*Expand[LS@base[[i]] ]]/.rulescalar,
{i,1,Length[base]}]//MatrixForm

Clear[L,S];

Tensor operators

The Wigner - Eckart theorem fixes the dependence on azimuthal quantum numbers

⟨γ j m|(Subscript[T, q]^((k)))|γ'j'm'⟩= (((-1))^(j-m)) (({{j, k, j'}, {-m, q, m'}}))⟨γ j |(Subscript[T, q]^((k)))|γ'j'⟩ .

The last factor is called reduced matrix element. The symbols in parenthesis are the 3j-symbols; they are related to the Clebsch-Gordan coefficients by

⟨(Subscript[j, 1])(Subscript[m, 1]);(Subscript[j, 2])(Subscript[m, 2])|J,M⟩= (((-1))^((Subscript[j, 1])-(Subscript[j, 2])+M)) (({{(Subscript[j, 1]), (Subscript[j, 2]), J}, {(Subscript[m, 1]), (Subscript[m, 2]), -M}}))(Sqrt[2J+1]) .

Operators (Subscript[T, q]^((k))) are spherical components of a tensor of order k, i.e. an operator transforming as the representation J=k of the rotation group, with q = -k,...,+k . In particular for vectors

(Subscript[V, 1])= - (((Subscript[V, x])+ i (Subscript[V, y]))/(Sqrt[2]));         (Subscript[V, 0])= (Subscript[V, z]);       (Subscript[V, -1])=  (((Subscript[V, x])- i (Subscript[V, y]))/(Sqrt[2])) .

In the following we shall be interested in the (relative) intensities of  spectral lines of allowed dipole transition. The electric dipole operator acts only on orbital momentum and we can write

⟨L' Lz'| (Subscript[d, q])|L,Lz⟩ = (((-1))^(L'-Lz'))ThreeJSymbol[{L',-Lz'},{1,q},{L,Lz}] D.

The relevant 3 j symbols are

{ThreeJSymbol[{L-1,-Lz},{1,0},{L,Lz}],ThreeJSymbol[{L-1,-Lz-1},{1,1},{L,Lz}],ThreeJSymbol[{L-1,-Lz+1},{1,-1},{L,Lz}]}

This allows the following definition of dipole operators (up to an overall constant)

𝒹z[x_?NumberQ] = 0;
𝒹z[x_.v[Lz_,Sz_]]:=x  (Sqrt[2])(Sqrt[L-Lz]) (Sqrt[L+Lz]) v[Lz,Sz];
𝒟z[x_]:= Distribute[𝒹z[Expand[x]]];
𝒹p[x_?NumberQ] = 0;
𝒹p[x_.v[Lz_,Sz_]]:=  x*(Sqrt[(-1+L-Lz)(L-Lz)])  v[Lz+1,Sz];
𝒟p[x_]:= Distribute[𝒹p[Expand[x]]];
𝒹m[x_?NumberQ] = 0;
𝒹m[x_.v[Lz_,Sz_]]:=  x*(Sqrt[-1+L+Lz]) (Sqrt[L+Lz]) v[Lz-1,Sz];
𝒟m[x_]:= Distribute[𝒹m[Expand[x]]];

Zeeman effect

The interaction with a magnetic field (whose direction is taken as the z axis) is described by the Hamiltonian

(Subscript[H, B]) = (Subscript[μ, B]) B ((Subscript[L, z])+2 (Subscript[S, z])) ≡ ωL ((Subscript[L, z])+2 (Subscript[S, z]))

ωL is the Larmor frequency and for simplicity we have used natural units with ℏ = 1. The Hamiltonian (Subscript[H, B])commutes with (Subscript[J, z])but does not commute with J.  In general, in the fine structure, multiplet states with different J will mix. For small magnetic fields the hamiltonian () is a small perturbation and its effects can be computed using the Wigner Eckart teorem on each subspace with fixed J. This effect is summarized by the Landè coefficient (see text)

⟨J,(Subscript[J, z])|(Subscript[H, B])|J,(Subscript[J, z])⟩ = (Subscript[g, J]) (Subscript[J, z]) ;               (Subscript[g, J])= 1 + (((J(J+1) - L(L+1) + S(S+1)))/(2 J (J+1))).

gJ[J_,L_,S_]:= 1 + (((J(J+1) - L(L+1) + S(S+1)))/(2 J (J+1)))

In the general case the full Hamiltonian A L·S + (Subscript[H, B]) must be diagonalized.

Example

Let us consider again the case L = 1, S = 1/2.

{L,S} = {1,1/2};
base=(Sort[Flatten[Table[vec[J,Jz,{L,S}],{J,Jmin,Jmax},{Jz,-J,J}]]])/.vec-> vJ;

The values of J relative to each base vector are easily obtained from J2 :

valJ = (valJ2 =Simplify[(J2/@base)/base]; (-1+(Sqrt[1+4 valJ2]) )/2)

We now compute the matrix for the interaction Hamiltonians

(matLS =A Table[Expand[base*Expand[LS@base[[i]] ]]/.rulescalar,
{i,1,Length[base]}]);

(matB = ωL Table[Expand[base*Expand[Lz@base[[i]]+ 2 Sz@base[[i]] ]]/.rulescalar,
{i,1,Length[base]}])//MatrixForm

The diagonal terms in matB coincide with Landè terms:

Table[gJ[valJ[[i]],L,S]Simplify[Jz@base[[i]]/base[[i]]],{i,1,Length[base]}]

The eigenvalues of the total Hamiltonian are given by :

eigH=Eigenvalues[matLS+matB]

A graphic representation with respect to magnetic field is given by :

Plot[Table[eigH[[i]]/.{A-> 1},{i,1,Length[eigH]}],{ωL,0,5},
AxesLabel-> {"ωL","E"},PlotLabel-> "L="<>ToString[L]<>";  S="<>ToString[InputForm[S]]]

Large magnetic field

The large magnetic field regime is usually known as the "Paschen-Back" effect. In this limit ( ωL/A ≫ 1 ) fine structure effects are negligible and the difference between energy levels has the commen value ωL. This can be checked in our example

Simplify[eigH/.A-> 0,ωL>0]

and in general follows from the fact that (Lz, Sz) are good quantum numbers for A = 0, then ΔE = ωL as in general Lz and Sz values are separated by one unit.

Spectral lines

Spectral lines (allowed) are due to transitions obeying the usual dipole selection rules ΔL = 0, ± 1;   0→0 forbidden ; ΔS = 0. The emitted photon has a polarization related to the change of Lz, the angular momentum lost by the atom is taken by the photon. ΔLz = ± 1 correspond to a circula polarized light as seen in the z direction, while ΔLz = 0 transitions give rise to a linearly polarized light, as a classical dipole oscillating along z.

In general the energy differences between a multiplet are not constant, then the frequency of the photon  ω differs in each allowed line. Classically a charged oscillator in a magnetic field gives rise to 3 lines, two circularly polarized and one linearly polarized, as is well known from classical electrodynamics.

The classical situation is recovered in the Pashen-Back limit. In this limit the two multiplet have the form

(Subscript[E, 1])+ n (Subscript[ωL, 1]) ;  (Subscript[E, 2])+ m (Subscript[ωL, 2]).

The selection rules on Lz imply n-m = 0, ± 1 , then the allowed transitions have a frequency

ω = ((Subscript[E, 2])- (Subscript[E, 1])) + k ((Subscript[ωL, 2])-(Subscript[ωL, 1]));  k = 0,± 1.

To write explicitely the (relative) intensity of the spectral lines we need to compute the matrix elements of dipole operator, and this can be done using the above formulas with 3j-coefficients.

As a preliminary step let us write a function which compute eigenvalues and eigenvectors for a given value of A (and ωL).

Clear[L,S,ωL,A,ωL];

getEigH[A_]:=  Module[{eigH,Jmax,Jmin,dimJz},
{Jmax,Jmin}={ Abs[L+S], Abs[L-S]};
base=(Sort[Flatten[Table[vec[J,Jz,{L,S}],{J,Jmin,Jmax},{Jz,-J,J}]]])/.vec-> vJ;
matLS =A Table[Expand[base*Expand[LS@base[[i]] ]]/.rulescalar,
{i,1,Length[base]}];
matB = ωL Table[Expand[base*Expand[Lz@base[[i]]+ 2 Sz@base[[i]] ]]/.rulescalar,
{i,1,Length[base]}];
{eigH,eigV}=Eigensystem[matLS + matB];
eigBase = Chop[Table[Expand[eigV[[i]].base],{i,1,Length[base]}]];
{eigH,eigBase}]

To find the allowed transitions we compute matrix elements of dipole operator between two fine structure levels, with quantum numbers L1, S1 and L2, S2. A1 and A2 stand for the respective fine structure coefficient in the Hamiltonian. Once computed the matrix elements we couple them with energy differences ΔE, i.e. transition frequencies. Energies are shifted by an overall constant corresponding to the energy difference between unperturbed levels (i.e. center of the fine strcture multiplets). The output of the following function is a triplet corresponding to the transitions (Subscript[ΔL, z])= ± 1 and (Subscript[ΔL, z])=0 respectively. Each vector has elements {I,δE} where I is (proportional to) the intensity of the line. Only transitions with intensity different from 0 are recorded.

getSpectralLines[L1_,S1_,A1_,L2_,S2_,A2_]:= Module[{},
{L,S}={L1,S1};
Clear[ωL];
{eigH1,eigBase1} = getEigH[A1];
Table[eigBase1[[i]]=eigBase1[[i]]/Sqrt[scalar[eigBase1[[i]],eigBase1[[i]]]],{i,1,Length[eigBase1]}];
vecDp = Expand[𝒟p/@eigBase1];
vecDm =Expand[ 𝒟m/@eigBase1];
vecDz = Expand[𝒟z/@eigBase1];
{L,S}={L2,S2};
{eigH2,eigBase2} = getEigH[A2];
Table[eigBase2[[i]]=eigBase2[[i]]/Sqrt[scalar[eigBase2[[i]],eigBase2[[i]]]],{i,1,Length[eigBase2]}];
ΔE = Table[-eigH2[[i]]+ eigH1,
{i,1,Length[eigH2]}];
matDp = Table[Expand[eigBase2[[i]]*vecDp ]/.rulescalar,
{i,1,Length[eigBase2]}];
matDm = Table[Expand[eigBase2[[i]]*vecDm]/.rulescalar,
{i,1,Length[eigBase2]}];
matDz = Table[Expand[eigBase2[[i]]*vecDz ]/.rulescalar,
{i,1,Length[eigBase2]}];
lineDp= Select[Transpose[{((Flatten[matDp])^2),Flatten[ΔE]}],(!(#1[[1]]=== 0 ))&];
lineDm= Select[Transpose[{((Flatten[matDm])^2),Flatten[ΔE]}],(!(#1[[1]]=== 0 ))&];
lineDz= Select[Transpose[{((Flatten[matDz])^2),Flatten[ΔE]}],(!(#1[[1]]=== 0 ))&];
{lineDp,lineDm,lineDz}];

Given the 3 sets of spectral lines, {lineDp, lineDm, lineDz}, we can plot them, allowing a variable Larmor frequency ωL. The function plotSpectralLines needs as input ωL and an optional vector of directions (the default is {-1, -1, 1} ) selecting for the plot the upper or lower half the graph.

plotSpectralLines[ωB_,val_:{-1,-1,1}]:=
Module[{},
data={ωL ->  ωB};
maxInt = Max[Re[Flatten[{lineDp[[All,1]],lineDm[[All,1]],lineDz[[All,1]]}]]]//.data;
lines =N[ { 
{GrayLevel[Max[0,1-(2#1[[1]]/maxInt)]],Line[{{#1[[2]],0},{#1[[2]],0.5val[[1]]}}]}&/@lineDp,
{GrayLevel[Max[0,1-(2#1[[1]]/maxInt)]],Line[{{#1[[2]],0},{#1[[2]],0.5val[[2]]}}]}&/@lineDm,
{GrayLevel[Max[0,1-(2#1[[1]]/maxInt)]],Line[{{#1[[2]],0},{#1[[2]],0.5val[[3]]}}]}&/@lineDz
}//.data];
Graphics[lines,PlotRange-> {Automatic,{-0.5,0.5}},AspectRatio-> 0.5]]

Example 1 : Na

The well known "doublet" of Sodium corresponds to a transition 3p→3s of a peripheral electron. The corresponding quantum numbers L,S  are (1.1/2) and (0,1/2). We choose the scale of the energy by putting A = 1 for the higher level, the lower one has no fine structure deconposition (L=0) and so A = 0 for the second level.

{L1,S1,A1,L2,S2,A2} = {1,1/2,1,0,1/2,0};

Here we compute the spectral lines

{lineDp,lineDm,lineDz} = getSpectralLines[L1,S1,A1,L2,S2,A2];

We plot the lines for ωL = 0.1 in the upper part of the graph, in the lower part we plot the unsplitted lines (for ωL ∼ 0)

Show[{plotSpectralLines[0.1,{1,1,1}],Graphics[Thickness[.013]],plotSpectralLines[(10.^(-6)),{-1,-1,-1}]},
Background->GrayLevel[0.85]]

In this second plot we give the splitted lines, the lower part gives the transitions with (Subscript[ΔL, z])= ± 1 the upper part those with (Subscript[ΔL, z])=0.

Show[plotSpectralLines[0.1],Background->GrayLevel[0.85]]

Finally the lines are shown for growing values of ωL: the asymptotics Pashen Back effect with 3 lines is apparent

GraphicsRow[{plotSpectralLines[0.1],plotSpectralLines[5.],plotSpectralLines[30.]},Frame-> All,Background->GrayLevel[1]]

Example 2 : Cr

We consider the transition 3(d^5)4s → 3(d^4)4s 4p in Cr. The quantum numbers of excited state and ground state are respectively:

{L1,S1,A1,L2,S2,A2} = {1,3,1,0,3,0};

The plot of spectral lines at growing magnetic field is :

{lineDp,lineDm,lineDz} = getSpectralLines[L1,S1,A1,L2,S2,A2];
GraphicsRow[{plotSpectralLines[0.1],plotSpectralLines[5.],plotSpectralLines[30.]},Frame-> All,Background->GrayLevel[1]]