rotex__wigner Module

Calculate the Wigner 3j symbols


Functions

public pure elemental module function clebsch(j1, m1, j2, m2, j, m) result(res)

Returns the Clebsch-Gordan coefficient by using its relation to the Wigner 3j symbol

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: j1
integer, intent(in) :: m1
integer, intent(in) :: j2
integer, intent(in) :: m2
integer, intent(in) :: j
integer, intent(in) :: m

Return Value real(kind=dp)

public pure elemental module function wigner3j(dj1, dj2, dj3, dm1, dm2, dm3) result(res)

returns the Wigner 3j symbol via explicit calculation. These should probably be precomputed, but this works for now. The WignerSymbol-f repo seems like a good implementation. The wigner repo by ogorton takes up way too much memory for the high partial waves because it tries to allocate (2N+1)^6 doubles. NOTE: for the high partial wave, we know that we'll only need values with m1 = m2 = m3 = 0, so take advantage of this ?

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: dj1

twice the angular momenta j

integer, intent(in) :: dj2

twice the angular momenta j

integer, intent(in) :: dj3

twice the angular momenta j

integer, intent(in) :: dm1

twice the angular momenta m

integer, intent(in) :: dm2

twice the angular momenta m

integer, intent(in) :: dm3

twice the angular momenta m

Return Value real(kind=dp)

the result