ほぼ自分用のメモ
from scipy.special import spherical_jn, spherical_yn, sph_harm from sympy import * from sympy.physics.wigner import clebsch_gordan, gaunt # spherical Bessel function def jl( l, rho ): return spherical_jn( l, rho ) # spherical Neumann function def nl( l, rho ): return spherical_yn( l, rho ) # 1st kind of spherical Hankel function def h1l( l, rho ): return spherical_jn( l, rho ) + 1j * spherical_yn( l, rho ) # 1st derivative of spherical Bessel function def jlp( l, rho ): return spherical_jn( l, rho, True ) # 1st derivative of spherical Neumann function def nlp( l, rho ): return spherical_yn( l, rho, True ) # spherical harmonics def Ylm( l, m, theta, phi ): return sph_harm( m, l, phi, theta ) # Clebsh-Gordan coefficient def CG( j1, m1, j2, m2, j3, m3 ): return float( clebsch_gordan( j1, j2, j3, m1, m2, m3 ) ) # Gaunt integral def GLLL( l1, m1, l2, m2, l3, m3 ): temp = complex( gaunt( l1, l2, l3, m1, m2, -m3 ) ) return (-1)**m3 * temp # Coefficient for matrix element with multipole expansion def ck( k, l1, m1, l2, m2 ): q = m2 - m1 temp = GLLL( l1, m1, k, q, l2, m2 ) return np.sqrt( 4 * np.pi / ( 2 * k + 1 ) ) * temp