inline static void eval(Context& c, const typename Context::source_box_type& sbox, const typename Context::target_box_type& tbox) { apply(c.expansion(), c.multipole(sbox), sbox.center(), c.target_begin(tbox), c.target_end(tbox), c.result_begin(tbox)); }
inline static void eval(Context& c, const typename Context::source_box_type& sbox) { apply(c.expansion(), c.source_begin(sbox), c.source_end(sbox), c.charge_begin(sbox), sbox.center(), c.multipole(sbox)); }
inline static void eval(Context& c, const typename Context::source_box_type& sbox) { #if defined(FMMTL_DEBUG) std::cout << "P2M:" << "\n " << sbox << std::endl; #endif FMMTL_LOG("P2M"); P2M::eval(c.expansion(), c.source_begin(sbox), c.source_end(sbox), c.charge_begin(sbox), sbox.center(), c.multipole(sbox)); }
inline static void eval(Context& c, const typename Context::source_box_type& sbox, const typename Context::target_box_type& tbox) { #if defined(FMMTL_DEBUG) std::cout << "M2L:" << "\n " << sbox << "\n " << tbox << std::endl; #endif FMMTL_LOG("M2L"); M2L::eval(c.expansion(), c.multipole(sbox), c.local(tbox), tbox.center() - sbox.center()); }