epsproc.geomFunc.w3jVecMethods module

ePSproc Wigner 3j vector methods

Functions for accelerated (vector, parallel, GPU) Wigner 3j calculations.

26/02/20 v1 Functions for accelerated Wigner 3j calcs plus sorting.

epsproc.geomFunc.w3jVecMethods.Wigner3jQNs(QNs)[source]
epsproc.geomFunc.w3jVecMethods.w3jguVecCPU(QNs, w3j_QNs)[source]

Wrapper for 3j with vectorization via @numba.guvectorize([“void(int32[:,:], float64[:])”], ‘(n,m)->(n)’, target = ‘parallel’).

Parameters:
  • QNs (np.array) – Array of QNs to calculated Wigner 3j terms for, columns [l,lp,L,m,mp,M].
  • w3j_QNs (np.array) – Empty array to hold results (no return from @guvectorize). Create as w3j_QNs = np.zeros(QNs.shape[0])
epsproc.geomFunc.w3jVecMethods.w3jprange(QNs)[source]

Wrapper for 3j with @numba.njit(parallel=True), using prange parallel loop.

In testing (Feb 2020) on an AMD Threadripper 1950X (16 core) this was (usually) fastest case, and beat vectorised version.

Parameters:QNs (np.array) – Array of QNs to calculated Wigner 3j terms for, columns [l,lp,L,m,mp,M].
Returns:w3j_QNs – Array of Wigner 3j results, one per row of input QNs.
Return type:np.array