PartialWaveFunctions.jl

Partial Wave Analysis specific special funtions
Author mmikhasenko
Popularity
2 Stars
Updated Last
3 Years Ago
Started In
May 2020

PartialWaveFunctions

Build Status Build Status Codecov

Julia native implementation of the special functions used in the Partial Wave Analysis for High Energy Physics. Currently, Wigner D-functions and Clebsch-Gordan(CG) coefficients are available. The implementation of the CG coefficient is by factor 4 faster than the C++ code from the GSL package (see details in test/timing).

Installation

] add PartialWaveFunctions

Usage

using PartialWaveFunctions

# convenient call for integer indices
let j=3, (m1,m2) = (1,-1), cosθ=0.3
   wignerd(j,m1,m2,cosθ)
end # return 0.293

clebschgordan(1,0,1,0,1,0) # <1, 0; 1, 0 | 1, 0> = 0.0 : ρ⁰ → π⁰ π⁰
CG(1,0,1,0,1,0) # a shortcut

General implementation includes the half-integer indices:

let two_j=3, (two_m1,two_m2) = (1,-1), cosθ=0.3
   wignerd_doublearg(two_j,two_m1,two_m2, cosθ)
end # return -0.562

clebschgordan_doublearg(2,0,1,1,1,1) # <1, 0; 1/2, 1/2 | 1/2, 1/2> = -0.577
CG_doublearg(2,0,1,1,1,1) # a shortcut

Related packages:

  • python calls via SymPy.jl. Ideal for symbolic calculations. Works pretty with jupyter notebooks due to the latex output. See details in the test/physics.
  • WignerD.jl interfaces Fortran for the WignerD.
  • WignerSymbols.jl Julia package specialized on Symbols. Particularly it contains the Clebsch-Gordan coefficients.
  • GSL.jl interfaces C++. It can calculate Sperical Harmionics, Legendre polynomials. WignerD is not wrapped-up.

References

  • The Wigner functions are expressed via the Jacobi polynomials Pₙ⁽ᵃᵇ⁾(z) using Eq. (3.74) of L. Biedenharn, J. Louck, and P. Carruthers, Angular Momentum in Quantum Physics: Theory and Application
  • The Jacobi polynomials Pₙ⁽ᵃᵇ⁾(z) are codded using a series expression in powers of (1-z), see e.g. wikipedia page.
  • Clebsch-Gordan coefficients are computed from explicit expression via a finite series, see e.g. wikipedia page