41 void evaluateIntegrand_impl(
45 Eigen::Dynamic, Eigen::Dynamic> *
intval)
const {
46 auto polynomial_degree =
super_space.get_polynomial_degree();
47 auto polynomial_degree_plus_one_squared =
48 (polynomial_degree + 1) * (polynomial_degree + 1);
51 auto s =
p1.segment<2>(0);
52 auto t =
p2.segment<2>(0);
59 auto x_f =
p1.segment<3>(3);
62 auto y_f =
p2.segment<3>(3);
83 Eigen::Matrix<std::complex<double>, 1, 1> evaluateFMMInterpolation_impl(
86 auto s =
p1.segment<2>(0);
87 auto t =
p2.segment<2>(0);
90 auto x_f =
p1.segment<3>(3);
93 auto y_f =
p2.segment<3>(3);
103 Eigen::Matrix<std::complex<double>, 1, 1>
intval;
113 const Eigen::Vector3d &
x_n,
114 const Eigen::Vector3d &
y)
const {
118 auto i = std::complex<double>(0., 1.);
119 return -
c.dot(
x_n) * std::exp(-
i * wavenumber_ *
r) *
120 (1. +
i * wavenumber_ *
r) / 4. / BEMBEL_PI /
r3;
125 void set_wavenumber(std::complex<double>
wavenumber) {
131 std::complex<double> get_wavenumber() {
return wavenumber_; }
134 std::complex<double> wavenumber_;