12 #ifndef BEMBEL_SRC_AUGMENTEDEFIE_INDUCTANCEMATRIX_HPP_
13 #define BEMBEL_SRC_AUGMENTEDEFIE_INDUCTANCEMATRIX_HPP_
18 class InductanceMatrix;
22 typedef Eigen::VectorXcd EigenType;
23 typedef Eigen::VectorXcd::Scalar Scalar;
26 Form = DifferentialForm::DivConforming,
27 NumberOfFMMComponents = 2
40 void evaluateIntegrand_impl(
43 Eigen::Dynamic, Eigen::Dynamic> *intval)
const {
44 auto polynomial_degree = super_space.get_polynomial_degree();
45 auto polynomial_degree_plus_one_squared =
46 (polynomial_degree + 1) * (polynomial_degree + 1);
49 auto s = p1.segment<2>(0);
50 auto t = p2.segment<2>(0);
57 auto x_f = p1.segment<3>(3);
58 auto x_f_dx = p1.segment<3>(6);
59 auto x_f_dy = p1.segment<3>(9);
60 auto y_f = p2.segment<3>(3);
61 auto y_f_dx = p2.segment<3>(6);
62 auto y_f_dy = p2.segment<3>(9);
66 auto integrand_vector = kernel_evaluation;
69 super_space.addScaledVectorBasisInteraction(intval, integrand_vector, s, t,
70 x_f_dx, x_f_dy, y_f_dx, y_f_dy);
79 const Eigen::Vector3d &y)
const {
80 auto r = (x - y).norm();
81 return std::exp(-std::complex<double>(0., 1.) * wavenumber_ * r) / 4. /
87 void set_wavenumber(std::complex<double> wavenumber) {
88 wavenumber_ = wavenumber;
93 std::complex<double> get_wavenumber() {
return wavenumber_; }
96 std::complex<double> wavenumber_;
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
Routines for the evalutation of pointwise errors.
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...