18#ifndef BEM_RWG_EXC_PLANE_WAVE_H
19#define BEM_RWG_EXC_PLANE_WAVE_H
33template <u
int8_t dim>
class Triangle;
49template <u
int8_t obs_num_dof>
90 dir_.cols() != pol_.cols() ||
91 dir_.cols() != pos_.cols() ||
92 dir_.cols() !=
amp.size()
95 throw std::invalid_argument(
96 "PlaneWaveBase: `dir`, `pol`, `pos`, and `amp` must have the same number of columns."
126 return amp_[
idx] * pol_.col(
idx) * Eigen::exp(-
J * k *
r_dir.array()).matrix();
132 std::shared_ptr<GaussTriangleQuadrature<3>> tri_quad_;
Class for Gaussian quadrature over a triangle.
Base class for generating excitation coefficients for RWG-based BEM systems.
Class for computing plane wave excitation vector coefficients when tested with rotated RWG functions.
EigMatNX< Complex, 3 > compute(const Complex k, const Triangle< 3 > &obs_tri) override
Computes the plane wave excitation coefficients when the field is tested with rotated RWG functions.
Class for computing plane wave excitation vector coefficients for RWG-based BEM systems.
PlaneWaveBase(ConstEigRef< EigMatNX< Float, 3 > > dir, ConstEigRef< EigMatNX< Float, 3 > > pol, ConstEigRef< EigMatNX< Float, 3 > > pos, ConstEigRef< EigRowVec< Complex > > amp, const uint8_t quadrature_order=4)
Constructs a PlaneWaveBase object with given plane wave parameters.
Index num_excitations() const override
Returns the number of excitations (right-hand sides) to be generated.
EigMatNX< Complex, 3 > eval(const Complex k, ConstEigRef< EigMatNX< Float, 3 > > r_obs, const Index idx=0)
Evaluates the plane wave vector field value at given observation points.
Class for computing plane wave excitation vector coefficients when tested with RWG functions.
EigMatNX< Complex, 3 > compute(const Complex k, const Triangle< 3 > &obs_tri) override
Computes the plane wave excitation coefficients when the field is tested with RWG functions.
const Complex J
Imaginary unit.
const Eigen::Ref< const EigObj > ConstEigRef
Read-only reference to an Eigen object.
std::complex< Float > Complex
Complex floating point number.
Eigen::Matrix< T, N, 1 > EigColVecN
Fixed-size column vector of size N containing type T.
std::size_t Index
Unsigned integer type for indices and container sizes.
Namespace for RWG-based BEM functionality.
Primary namespace for the OpenBEM library.