#include <core/vector3.h>
Classes | |
struct | YlmProdTerm |
Term in real spherical harmonic expansion of a product of two real spherical harmonics. More... | |
Namespaces | |
YlmInternal | |
Macros | |
#define | Power pow |
#define | DECLARE_Ylm(lm, code) template<> __hostanddev__ double Ylm<lm>(double x, double y, double z) { return code; } |
#define | SwitchTemplate_lm(l, m, fTemplate, argList) |
Switch a function templated over l,m for all supported l,m with parenthesis enclosed argument list argList. | |
#define | ADD(l, m, coeff) result.push_back(YlmProdTerm(l,m,coeff)) |
Functions | |
double | bessel_jl (int l, double x) |
Spherical bessel function. | |
template<int lm> | |
__hostanddev__ double | YlmInternal::Ylm (double x, double y, double z) |
YlmInternal::DECLARE_Ylm (6,-0.31539156525252005 *(Power(x, 2)+Power(y, 2)-2.*Power(z, 2))) DECLARE_Ylm(8 | |
*x y *x y | YlmInternal::DECLARE_Ylm (9,-0.5900435899266435 *y *(-3.*Power(x, 2)+Power(y, 2))) DECLARE_Ylm(11 |
*x y *x y *y * | YlmInternal::Power (x, 2)+Power(y |
*x y *x y *y * | YlmInternal::Power (z, 2))) DECLARE_Ylm(12 |
*x y *x y *y *z *x *x y *x y *z | YlmInternal::DECLARE_Ylm (15, 0.5900435899266435 *x *(Power(x, 2)-3.*Power(y, 2))) DECLARE_Ylm(16 |
*x y *x y *y *z *x *x y *x y *z *x *x y *y *x y | YlmInternal::DECLARE_Ylm (17,-1.7701307697799304 *y *(-3.*Power(x, 2)+Power(y, 2))*z) DECLARE_Ylm(18 |
*x y *x y *y *z *x *x y *x y *z *x *x y *y *x y *x *y *y *z ** | YlmInternal::Power (Power(x, 2)+Power(y, 2), 2)-72.*(Power(x |
*x y *x y *y *z *x *x y *x y *z *x *x y *y *x y *x *y *y *z | YlmInternal::Power (y, 2))*Power(z |
*x y *x y *y *z *x *x y *x y *z *x *x y *y *x y *x *y *y *z * | YlmInternal::Power (z, 4))) DECLARE_Ylm(21 |
*x y *x y *y *z *x *x y *x y *z *x *x y *y *x y *x *y *y *z *x *z *x y *x y *x *z | YlmInternal::DECLARE_Ylm (24, 0.6258357354491761 *(Power(x, 4)-6.*Power(x, 2)*Power(y, 2)+Power(y, 4))) DECLARE_Ylm(25 |
*x y *x y *y *z *x *x y *x y *z *x *x y *y *x y *x *y *y *z *x *z *x y *x y *x *z *y ** | YlmInternal::Power (x, 4)-10.*Power(x |
*x y *x y *y *z *x *x y *x y *z *x *x y *y *x y *x *y *y *z *x *z *x y *x y *x *z *y | YlmInternal::DECLARE_Ylm (26, 8.302649259524166 *x *(x-y)*y *(x+y)*z) DECLARE_Ylm(27 |
*x y *x y *y *z *x *x y *x y *z *x *x y *y *x y *x *y *y *z *x *z *x y *x y *x *z *y *y *x *y *z *y *z *x *x y *x y *z *x *z | YlmInternal::DECLARE_Ylm (35, 0.6563820568401701 *x *(Power(x, 4)-10.*Power(x, 2)*Power(y, 2)+5.*Power(y, 4))) DECLARE_Ylm(36 |
*x y *x y *y *z *x *x y *x y *z *x *x y *y *x y *x *y *y *z *x *z *x y *x y *x *z *y *y *x *y *z *y *z *x *x y *x y *z *x *z *x *y | YlmInternal::DECLARE_Ylm (37, 2.366619162231752 *y *(5.*Power(x, 4)-10.*Power(x, 2)*Power(y, 2)+Power(y, 4))*z) DECLARE_Ylm(38 |
*x y *x y *y *z *x *x y *x y *z *x *x y *y *x y *x *y *y *z *x *z *x y *x y *x *z *y *y *x *y *z *y *z *x *x y *x y *z *x *z *x *y *x *x y *y *x y *y *z *x *y *y *z ** | YlmInternal::Power (Power(x, 2)+Power(y, 2), 3)+90.*Power(Power(x |
*x y *x y *y *z *x *x y *x y *z *x *x y *y *x y *x *y *y *z *x *z *x y *x y *x *z *y *y *x *y *z *y *z *x *x y *x y *z *x *z *x *y *x *x y *y *x y *y *z *x *y *y *z * | YlmInternal::Power (z, 6))) DECLARE_Ylm(43 |
template<int lm> | |
__hostanddev__ double | Ylm (const vector3<> &qhat) |
Index by combined lm := l*(l+1)+m index (useful when static-looping over all l,m) | |
template<int l, int m> | |
__hostanddev__ double | Ylm (const vector3<> &qhat) |
Index by l and m separately. | |
template<int l, int m> | |
void | set_Ylm (const vector3<> qHat, double &result) |
Use above macro to provide a non-templated version of the function. | |
double | Ylm (int l, int m, const vector3<> &qHat) |
std::vector< YlmProdTerm > | expandYlmProd (int lm1, int lm2) |
std::vector< YlmProdTerm > | expandYlmProd (int l1, int m1, int l2, int m2) |
Wrapper function expandYlmProd with individual indices. | |
Real spherical Harmonics and spherical bessel functions