wigner-symbols-1.0.0: CG coefficients and Wigner symbols.

Stabilityunstable
Safe HaskellSafe
LanguageHaskell2010

WignerSymbols.Internal

Description

Functions in this module are subject to change without notice.

Synopsis

Documentation

newtype SignedSqrtRational Source

Represents a mathematical expression of the form:

s √(n / d)

where

  • s is a sign (+, -, or 0),
  • n is a nonnegative numerator, and
  • d is a positive denominator.

ssr_new Source

Arguments

:: (Integer, Rational)

(c, r)

-> SignedSqrtRational 

Construct a SignedSqrtRational equal to c √r.

ssr_approx :: Floating b => SignedSqrtRational -> b Source

Approximate a SignedSqrtRational as a floating-point number.

clebschGordan Source

Arguments

:: (Int, Int, Int, Int, Int, Int)

(tj1, tm1, tj2, tm2, tj12, tm12)

-> Double 

Calculate a Clebsch-Gordan coefficient:

⟨j1 j2 m1 m2|j1 j2 j12 m12⟩

clebschGordanSq Source

Arguments

:: (Int, Int, Int, Int, Int, Int)

(tj1, tm1, tj2, tm2, tj12, tm12)

-> SignedSqrtRational 

Similar to clebschGordan but exact.

clebschGordanSqSlow :: (Int, Int, Int, Int, Int, Int) -> SignedSqrtRational Source

Used only as a reference, it implements the formula from Wikipedia, which comes from equation (2.41) on page 172 of Quantum Mechanics: Foundations and Applications (1993) by A. Bohm and M. Loewe (ISBN 0-387-95330-2).

(Note: clebschGordan is not implemented using this function.)

wigner3j Source

Arguments

:: (Int, Int, Int, Int, Int, Int)

(tj1, tm1, tj2, tm2, tj3, tm3)

-> Double 

Calculate a Wigner 3-j symbol:

⎛j1 j2 j3⎞
⎝m1 m2 m3⎠

wigner3jSq Source

Arguments

:: (Int, Int, Int, Int, Int, Int)

(tj1, tm1, tj2, tm2, tj3, tm3)

-> SignedSqrtRational 

Similar to wigner3j but exact.

wigner3jSqRawC Source

Arguments

:: (Int, Int, Int, Int, Int, Int)

(tj1, tm1, tj2, tm2, tj3, tm3)

-> SignedSqrtRational 

Calculate the Wigner 3-j symbol times (−1) ^ (j1 − j2 − m3).

wigner3jSqRaw Source

Arguments

:: (Int, Int)

(j1 + m1, j2 + m2)

-> (Int, Int, Int, Int, Int, Int)

(tj1, tm1, tj2, tm2, tj3, tm3)

-> SignedSqrtRational 

Calculate the Wigner 3-j symbol times (−1) ^ (j1 − j2 − m3). The selection rules are not checked.

wigner6j Source

Arguments

:: (Int, Int, Int, Int, Int, Int)

(tj11, tj12, tj13, tj21, tj22, tj23)

-> Double 

Calculate a Wigner 6-j symbol:

⎧j11 j12 j13⎫
⎩j21 j22 j23⎭

wigner6jSq Source

Arguments

:: (Int, Int, Int, Int, Int, Int)

(tj11, tj12, tj13, tj21, tj22, tj23)

-> SignedSqrtRational 

Similar to wigner6j but exact.

wigner6jSqRaw Source

Arguments

:: (Int, Int, Int, Int, Int, Int)

(tj11, tj12, tj13, tj21, tj22, tj23)

-> SignedSqrtRational 

Calculate the Wigner 6-j symbol. The selection rules are not checked.

wigner9j Source

Arguments

:: (Int, Int, Int, Int, Int, Int, Int, Int, Int)

(tj11, tj12, tj13, tj21, tj22, tj23, tj31, tj32, tj33)

-> Double 

Calculate a Wigner 9-j symbol:

⎧j11 j12 j13⎫
⎨j21 j22 j23⎬
⎩j31 j32 j33⎭

wigner9jSq Source

Arguments

:: (Int, Int, Int, Int, Int, Int, Int, Int, Int)

(tj11, tj12, tj13, tj21, tj22, tj23, tj31, tj32, tj33)

-> SignedSqrtRational 

Similar to wigner9j but exact.

wigner9jSqRaw Source

Arguments

:: (Int, Int, Int, Int, Int, Int, Int, Int, Int)

(tj11, tj12, tj13, tj21, tj22, tj23, tj31, tj32, tj33)

-> SignedSqrtRational 

Calculate the Wigner 9-j symbol. The selection rules are not checked.

factorial Source

Arguments

:: Int

n

-> Integer 

Calculate the factorial n!.

fallingFactorial Source

Arguments

:: Int

n

-> Int

k

-> Integer 

Calculate the falling factorial, i.e. the product of the integers [n, k).

binomial Source

Arguments

:: Int

n

-> Int

k

-> Integer 

Calculate the binomial coefficient C(n, k).

minusOnePow Source

Arguments

:: Int

n

-> Int 

Calculate (−1) ^ n.

triangleCondition Source

Arguments

:: (Int, Int, Int)

(tj1, tj2, tj3).

-> Bool 

Check |j1 − j2| ≤ j3 ≤ j1 + j2 and j1 + j2 + j3 ∈ ℤ.

triangularFactor Source

Arguments

:: (Int, Int, Int)

(tj1, tj2, tj3)

-> Rational 

Calculate the triangular factor:

Δ(j1, j2, j3) = (−j1 + j2 _ j3)! (j1 − j2 + j3)! (j1 + j2 − j3)!
              / (j1 + j2 + j3 + 1)!

triangularFactorRaw Source

Arguments

:: Int

jd

-> (Int, Int, Int)

(ja, jb, jc)

-> Rational 

Calculate ja! jb! jc! / jd!.

tetrahedralSum Source

Arguments

:: (Int, Int, Int, Int, Int, Int)

(tj11, tj12, tj13, tj21, tj22, tj23)

-> Integer 

Calculate the symbol in the paper by L. Wei that is enclosed in square brackets:

⎡j11 j12 j13⎤
⎣j21 j22 j23⎦

This is essentially a Wigner 6-j symbol without the triangular factors, although the ordering of the arguments is a bit funky here.

getTriangularTjs Source

Arguments

:: Int

tjmax

-> (Int, Int)

(tj1, tj2)

-> [Int] 

Get all angular momenta that satisfy the triangle condition with the given pair of angular momenta, up to a maximum of jmax.

getBitriangularTjs Source

Arguments

:: Int

tjmax

-> ((Int, Int), (Int, Int))

((tj11, tj12), (tj21, tj22))

-> [Int] 

Get all angular momenta that satisfy the triangle condition with each of the given two pairs of angular momenta, up to a maximum of jmax.

getTms Source

Arguments

:: Int

tj

-> [Int] 

Get all projection quantum numbers that lie within the multiplet of j.

get3tjms Source

Arguments

:: Int

tjmax

-> [(Int, Int, Int, Int, Int, Int)] 

Get all possible arguments of the Wigner 3-j symbol that satisfy the selection rules up to a maximum of jmax.

get6tjs :: Int -> [(Int, Int, Int, Int, Int, Int)] Source

Get all possible arguments of the Wigner 6-j symbol that satisfy the selection rules up to a maximum of jmax.

get9tjs :: Int -> [(Int, Int, Int, Int, Int, Int, Int, Int, Int)] Source

Get all possible arguments of the Wigner 9-j symbol that satisfy the selection rules up to a maximum of jmax.

tuple6ToList :: (a, a, a, a, a, a) -> [a] Source

Convert a 6-tuple into a list.

tuple9ToList :: (a, a, a, a, a, a, a, a, a) -> [a] Source

Convert a 9-tuple into a list.