7 #ifndef NIHU_FMM_INTEGRATED_HPP_INCLUDED
8 #define NIHU_FMM_INTEGRATED_HPP_INCLUDED
25 template <class Op, class FmmTag = typename std::decay<Op>::type::fmm_tag>
33 template <
class TestTag,
class TrialTag>
34 static auto eval(Op &&op, TestTag test_tag, TrialTag trial_tag,
size_t quadrature_order,
bool sing_check)
36 return create_x2p_integral(
37 std::forward<Op>(op), quadrature_order, test_tag);
46 template <
class TestTag,
class TrialTag>
47 static auto eval(Op &&op, TestTag test_tag, TrialTag trial_tag,
size_t quadrature_order,
bool sing_check)
49 return create_x2p_integral(
50 std::forward<Op>(op), quadrature_order, test_tag);
59 template <
class TestTag,
class TrialTag>
60 static auto eval(Op &&op, TestTag test_tag, TrialTag trial_tag,
size_t quadrature_order,
bool sing_check)
62 return create_p2x_integral(
63 std::forward<Op>(op), quadrature_order, trial_tag);
72 template <
class TestTag,
class TrialTag>
73 static auto eval(Op &&op, TestTag test_tag, TrialTag trial_tag,
size_t quadrature_order,
bool sing_check)
75 return create_p2x_integral(
76 std::forward<Op>(op), quadrature_order, trial_tag);
85 template <
class TestTag,
class TrialTag>
86 static auto eval(Op &&op, TestTag test_tag, TrialTag trial_tag,
size_t quadrature_order,
bool sing_check)
88 return create_p2p_integral(std::forward<Op>(op), test_tag, trial_tag, sing_check);
94 template <
class Op,
class TestTag,
class TrialTag>
95 auto create_integrated(Op &&op, TestTag test_tag, TrialTag trial_tag,
size_t quadrature_order,
bool sing_check)
97 return integrated<Op>::eval(std::forward<Op>(op), test_tag, trial_tag, quadrature_order, sing_check);
101 template <
class TestTag,
class TrialTag>
105 : m_quadrature_order(quadrature_order)
106 , m_sing_check(sing_check)
111 auto operator()(Op &&op)
const
113 return create_integrated(std::forward<Op>(op), TestTag(), TrialTag(),
118 size_t m_quadrature_order;
130 template <
class TestTag,
class TrialTag>
132 TestTag test_tag, TrialTag trial_tag,
133 size_t quadrature_order,
bool sing_check)
136 quadrature_order, sing_check);