12 #ifndef BEMBEL_SRC_AUGMENTEDEFIE_MIXEDEFIE_HPP_
13 #define BEMBEL_SRC_AUGMENTEDEFIE_MIXEDEFIE_HPP_
22 template <
typename LinOpVector,
typename LinOpScalar>
30 init_MixedEFIE(ansatz_space_vector, ansatz_space_scalar);
35 ansatz_space_vector_ = ansatz_space_vector;
36 ansatz_space_scalar_ = ansatz_space_scalar;
39 Eigen::Matrix<std::complex<double>, -1, 3> evaluate(
40 const Eigen::Matrix<double, Eigen::Dynamic, 3> &points) {
43 ansatz_space_vector_);
45 ansatz_space_scalar_);
48 A.get_potential().set_wavenumber(wavenumber_);
49 grad_phi.get_potential().set_wavenumber(wavenumber_);
52 A.set_cauchy_data(current_);
53 grad_phi.set_cauchy_data(charges_);
56 Eigen::Matrix<std::complex<double>, -1, 3> potential(points.rows(), 3);
58 potential = -std::complex<double>(0., 1.) * omega_ * Constants::mu0 *
60 potential -= grad_phi.evaluate(points) / Constants::eps0;
67 void set_omega(
double omega) { omega_ = omega; }
68 void set_wavenumber(std::complex<double> wavenumber) {
69 wavenumber_ = wavenumber;
71 void set_current(Eigen::VectorXcd current) { current_ = current; }
72 void set_charges(Eigen::VectorXcd charges) { charges_ = charges; }
76 double get_omega() {
return omega_; }
77 std::complex<double> get_wavenumber() {
return wavenumber_; }
78 Eigen::VectorXcd get_current() {
return current_; }
79 Eigen::VectorXcd get_charges() {
return charges_; }
84 Eigen::VectorXcd current_;
85 Eigen::VectorXcd charges_;
87 std::complex<double> wavenumber_;
Routines for the evalutation of pointwise errors.