Gaunt.h

00001 #ifndef gridripper_multipole_Gaunt_h
00002 #define gridripper_multipole_Gaunt_h
00003 
00004 
00005 #include <gridripper/math.h>
00006 #include <gridripper/tvector.h>
00007 
00008 
00009 namespace gridripper { namespace multipole {
00010 
00011 
00035 extern GReal_t YYY_coupling(const int l1, const int l2, const int l3, 
00036                             const int m1, const int m2, const int m3);
00037 
00038 
00050 extern bool YYY_coupling_zeros(const int l1, const int l2, const int l3, 
00051                                const int m1, const int m2, const int m3);
00052 
00053 
00055 extern unsigned int YYY_coupling_size();
00056 
00057 
00075 extern GReal_t YreYreYre_coupling(const int l1, const int l2, const int l3, 
00076                                   const int m1, const int m2, const int m3);
00077 
00078 
00095 extern GComplex_t YYreY_coupling(const int l1, const int l2, const int l3, 
00096                                  const int m1, const int m2, const int m3);
00097 
00098 
00125 extern GReal_t intYl1ExpMIPhi(const int l);
00126 
00127 
00158 extern GReal_t ExpPmIPhiYY_coupling(const int l1, const int m1, 
00159                                     const int l2, const int sign);
00160 
00161 
00163 extern unsigned int ExpPmIPhiYY_coupling_size();
00164 
00165 
00184 extern GReal_t intYl0(const int l, const GReal_t theta);
00185 
00186 
00211 extern GReal_t intBarYl1mYl2m(const int l1, const int l2, const int m, const GReal_t theta, tvector< tvector< tvector<GReal_t> > > *coeffstorage);
00212 
00213 
00214 } } // namespace gridripper::multipole
00215 
00216 
00217 #endif /* gridripper_multipole_Gaunt_h */