Source code for pynao.m_csphar_talman_libnao


from __future__ import division
import numpy as np
from ctypes import POINTER, c_double, c_int
from pynao.m_libnao import libnao

libnao.csphar_talman.argtypes = (
  POINTER(c_double),  # rvec(3)
  POINTER(2*c_double),  # ylm(0:(lmax+1)**2)
  POINTER(c_int) )    # lmax
  
#
#
#
[docs]def csphar_talman_libnao(rvec, lmax): assert len(rvec)==3 assert lmax>-1 rvec_sp = np.require(rvec, dtype=float, requirements='C') ylm = np.require( np.zeros(((lmax+1)**2), dtype=np.complex128), dtype=np.complex128, requirements='C') libnao.csphar_talman(rvec_sp.ctypes.data_as(POINTER(c_double)), ylm.ctypes.data_as(POINTER(2*c_double)), c_int(lmax) ) return ylm
# # #
[docs]def talman2world(ylm_t): lmax = int(np.sqrt(len(ylm_t)))-1 ylm_w = np.zeros(len(ylm_t), dtype=np.complex128) i = -1 for l in range(lmax+1): for m in range(-l,l+1): i = i + 1 ylm_w[i] = ylm_t[i]*np.sqrt((2*l+1)/(4*np.pi)) return ylm_w