12#ifndef BEMBEL_SRC_MAXWELL_SINGLELAYEROPERATOR_HPP_
13#define BEMBEL_SRC_MAXWELL_SINGLELAYEROPERATOR_HPP_
18class MaxwellSingleLayerOperator;
24 typedef Eigen::VectorXcd EigenType;
25 typedef Eigen::VectorXcd::Scalar Scalar;
28 Form = DifferentialForm::DivConforming,
29 NumberOfFMMComponents = 2
45 void evaluateIntegrand_impl(
49 Eigen::Dynamic, Eigen::Dynamic> *
intval)
const {
50 auto polynomial_degree =
super_space.get_polynomial_degree();
51 auto polynomial_degree_plus_one_squared =
52 (polynomial_degree + 1) * (polynomial_degree + 1);
55 auto s =
p1.segment<2>(0);
56 auto t =
p2.segment<2>(0);
63 auto x_f =
p1.segment<3>(3);
66 auto y_f =
p2.segment<3>(3);
84 super_space.addScaledVectorBasisDivergenceInteraction(
90 Eigen::Matrix<std::complex<double>, 4, 4> evaluateFMMInterpolation_impl(
93 auto s =
p1.segment<2>(0);
94 auto t =
p2.segment<2>(0);
97 auto x_f =
p1.segment<3>(3);
100 auto y_f =
p2.segment<3>(3);
108 Eigen::Matrix<std::complex<double>, 4, 4>
intval;
126 const Eigen::Vector3d &
y)
const {
128 return std::exp(-std::complex<double>(0., 1.) * wavenumber_ *
r) / 4. /
134 void set_wavenumber(std::complex<double>
wavenumber) {
136 wavenumber2_ = wavenumber_ * wavenumber_;
141 std::complex<double> get_wavenumber() {
return wavenumber_; }
144 std::complex<double> wavenumber_;
145 std::complex<double> wavenumber2_;
153template <
typename InterpolationPo
ints>
155 static std::vector<Eigen::MatrixXd> compute2DMoment(
This class implements the specification of the integration for the Electric Field Integral Equation.
std::complex< double > evaluateKernel(const Eigen::Vector3d &x, const Eigen::Vector3d &y) const
Fundamental solution of Helmholtz/Maxwell problem.
Eigen::Matrix< double, 12, 1 > SurfacePoint
typedef of SurfacePoint
Eigen::MatrixXd moment2DComputer(const SuperSpace< LinOp > &super_space, const int cluster_level, const int cluster_refinements, const int number_of_points)
Computes a single 2D moment for the FMM by tensorisation of the 1D moments.
Routines for the evalutation of pointwise errors.
constexpr int getFunctionSpaceOutputDimension()
Computes 1D moment for FMM using derivatives of the basis functions. All calculations ar performed on...
Computes 1D moment for FMM. All calculations ar performed on [0,1].
Computes all 2D moment for the FMM by tensorisation of the 1D moments. Specialice this for your linea...
linear operator base class. this serves as a common interface for existing linear operators.
struct containing specifications on the linear operator has to be specialized or derived for any part...
The superspace manages local polynomial bases on each element of the mesh and provides an interface t...