Wigner 3j-Symbol

Author

Eric W. Weisstein
February 15, 2004

This notebook downloaded from http://mathworld.wolfram.com/notebooks/SpecialFunctions/Wigner3j-Symbol.nb.

For more information, see Eric's MathWorld entry http://mathworld.wolfram.com/Wigner3j-Symbol.html.

©2005 Wolfram Research, Inc. except for portions noted otherwise

Usage

?ThreeJSymbol

Traditional Form

ThreeJSymbol[{(Subscript[j, 1]), (Subscript[m, 1])}, {(Subscript[j, 2]), (Subscript[m, 2])}, {j, m}]//TraditionalForm

Code

PhysicalQ[{a_,b_,c_},{d_,e_,f_}]:=d+e+f==0&&Abs[a-b]≤c≤a+b&&MemberQ[Range[-Abs[a],Abs[a]],d]&&MemberQ[Range[-Abs[b],Abs[b]],e]&&MemberQ[Range[-Abs[c],Abs[c]],f]

Δ[a_,b_,c_]:=(((a+b-c)! (a-b+c)! (-a+b+c)!)/((1+a+b+c)!))

ts[{a_,b_,c_},{α_,β_,γ_}]:=
Module[{l,t,soln},
l={
c-b+t+α,
c-a+t-β,
a+b-c-t,
a-t-α,
b-t+β
};
soln=Resolve[
t≥0&&And@@(#≥0&)/@l&&
(2{a,b,c,α,β,γ}∈Integers)&&
t∈Integers,
t
];
If[soln===False,{},t/.{ToRules[soln]}]
]

Sqrt[Factorial/@Inner[Plus[##]Subtract[##]&,{a,b,c},{α,β,γ},Times]]

WignerThreeJ[r1:{a_,b_,c_},r2:{α_,β_,γ_}]:=(-1)^(a-b-γ)(Sqrt[Δ[a,b,c]])(Sqrt[(a-α)! (a+α)! (b-β)! (b+β)! (c-γ)! (c+γ)!])Plus@@(Function[t,(-1)^t /t!/Times@@Factorial/@{
c-b+t+α,
c-a+t-β,
a+b-c-t,
a-t-α,
b-t+β
}]/@ts[r1,r2])

tterms[{a_,b_,c_},{α_,β_,γ_}]:=Min[a+α,a-α,b+β,b-β,c+γ,c-γ,a+b-c,b+c-a,c+a-b]+1

Examples

v=Table[Partition[Append[#,-Plus@@Take[#,-2]]&@Table[Random[Integer,{0,10}],{5}]/2,3],{500}];

p=Position[v,_?(PhysicalQ@@#&)]//Flatten

ts@@@v[[p]]

tterms@@@v[[p]]

Plus@@@First/@v[[p]]

Position[ThreeJSymbol@@@(Transpose/@v),_?(#≠0&),1]//Flatten

Transpose[{WignerThreeJ@@@v[[p]],ThreeJSymbol@@@(Transpose/@v[[p]])}]

Subtract@@@%

Clebsch-Gordan/Wigner 3j-Symbol Connection

ClebschGordan[{(Subscript[j, 1]),(Subscript[m, 1])},{(Subscript[j, 2]),(Subscript[m, 2])},{j,m}]

Special Cases

ThreeJSymbol[{l,m},{l,-m},{0,0}]

expr=ThreeJSymbol[{l1,0},{l2,0},{l3,0}]

Table[expr/.Thread[{l1,l2,l3}->{1,2,4}]]

ThreeJSymbol[{a,α},{b,β},{a+b,α+β}]//FullSimplify

Sums

Sum[(2j+1)ThreeJSymbol[{j1,m1},{j2,m2},{j,m}]ThreeJSymbol[{j1,m1p},{j2,m2p},{j,m}],{j,∞},{m,∞}]

Sum[(2j+1)ThreeJSymbol[{j1,m1},{j2,m2},{j,m}]ThreeJSymbol[{j1,m1p},{j2,m2p},{j,m}],{j,20},{m,20}]