Beispiel #1
0
 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));
 }
Beispiel #2
0
 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));
 }
Beispiel #3
0
  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));
  }
Beispiel #4
0
  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());
  }