# epsproc.sphCalc module¶

ePSproc spherical function calculations.

Collection of functions for calculating Ylm, wignerD etc.

For spherical harmonics, currently using scipy.special.sph_harm

For other functions, using Moble’s spherical_functions package https://github.com/moble/spherical_functions

See tests/Spherical function testing Aug 2019.ipynb

27/08/19 Added wDcalc for Wigner D functions. 14/08/19 v1 Implmented sphCalc

epsproc.sphCalc.sphCalc(Lmax, Lmin=0, res=None, angs=None, XFlag=True)[source]

Calculate set of spherical harmonics Ylm(theta,phi) on a grid.

Parameters: Lmax (int) – Maximum L for the set. Ylm calculated for Lmin:Lmax, all m. Lmin (int, optional, default 0) – Min L for the set. Ylm calculated for Lmin:Lmax, all m. res (int, optional, default None) – (Theta, Phi) grid resolution, outputs will be of dim [res,res]. angs (list of 2D np.arrays, [thetea, phi], optional, default None) – If passed, use these grids for calculation XFlag (bool, optional, default True) – Flag for output. If true, output is Xarray. If false, np.arrays that either res OR angs needs to be passed. (Note) – Outputs – ------- – if XFlag - (-) – YlmX – 3D Xarray, dims (lm,theta,phi) else - (-) – lm (Ylm,) – 3D np.array of values, dims (lm,theta,phi), plus list of lm pairs
Currently set for scipy.special.sph_harm as calculation routine.

Example

>>> YlmX = sphCalc(2, res = 50)

epsproc.sphCalc.wDcalc(Lrange=[0, 1], Nangs=None, eAngs=None, R=None, XFlag=True)[source]

Calculate set of Wigner D functions D(l,m,mp,R) on a grid.

Parameters: Lrange (list, optional, default [0, 1]) – Range of L to calculate parameters for. If len(Lrange) == 2 assumed to be of form [Lmin, Lmax], otherwise list is used directly. For a given l, all (m, mp) combinations are calculated. for setting angles (use one only) (Options) – Nangs (int, optional, default None) – If passed, use this to define Euler angles sampled. Ranges will be set as (theta, phi, chi) = (0:pi, 0:pi/2, 0:pi) in Nangs steps. eAngs (np.array, optional, default None) – If passed, use this to define Euler angles sampled. Array of angles, [theta,phi,chi], in radians R (np.array, optional, default None) – If passed, use this to define Euler angles sampled. Array of quaternions, as given by quaternion.from_euler_angles(eAngs).
XFlag : bool, optional, default True
Flag for output. If true, output is Xarray. If false, np.arrays
• if XFlag -
wDX
Xarray, dims (lmmp,Euler)
• else -
wD, R, lmmp
np.arrays of values, dims (lmmp,Euler), plus list of angles and lmmp sets.
Uses Moble's spherical_functions package for wigner D function.
https://github.com/moble/spherical_functions
Moble's quaternion package for angles and conversions.
https://github.com/moble/quaternion

Examples

>>> wDX1 = wDcalc(eAngs = np.array([0,0,0]))

>>> wDX2 = wDcalc(Nangs = 10)