OpenBEM
Open-source framework for electromagnetic simulation with the boundary element method.
Loading...
Searching...
No Matches
bem::rwg::PlaneWaveBase< obs_num_dof > Class Template Referenceabstract

Class for computing plane wave excitation vector coefficients for RWG-based BEM systems. More...

#include <plane_wave.hpp>

+ Inheritance diagram for bem::rwg::PlaneWaveBase< obs_num_dof >:

Detailed Description

template<uint8_t obs_num_dof>
class bem::rwg::PlaneWaveBase< obs_num_dof >

Class for computing plane wave excitation vector coefficients for RWG-based BEM systems.

Template Parameters
obs_num_dof- Number of degrees of freedom associated with each observation triangle.

Definition at line 50 of file plane_wave.hpp.

Constructor & Destructor Documentation

◆ PlaneWaveBase()

template<uint8_t obs_num_dof>
bem::rwg::PlaneWaveBase< obs_num_dof >::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 
)
inline

Constructs a PlaneWaveBase object with given plane wave parameters.

Parameters
[in]dir- Direction of propagation each plane wave; will be normalized automatically.
[in]pol- Polarization vector of the field associated with each plane wave; will be normalized automatically.
[in]pos- Point where each plane wave is originating from, used as a phase reference only. This can be any point on a plane perpendicular to the direction of propagation, which will be used as the phase reference plane.
[in]amp- Complex amplitudes of the field associated with each plane wave.
[in]quadrature_order- Quadrature order for integration over the observation triangle (optional).

The PlaneWaveBase object is agnostic to which field (electric or magnetic) is being considered. This allows the same object to be used for generating different excitation vector coefficients for different BEM systems (EFIE, MFIE, etc.). To generate an excitation vector coefficient associated with an electric field excitation, pol should be set to the electric field polarization vector, and for a magnetic field excitation, pol should be set to the magnetic field polarization vector. For multiple right-hand-sides, e.g., multiple polarizations or directions of propagation, the dir, pol, pos, and amp parameters should be provided as matrices with each column corresponding to a different right-hand-side. The number of columns in these matrices must match.

Definition at line 74 of file plane_wave.hpp.

Member Function Documentation

◆ num_excitations()

template<uint8_t obs_num_dof>
Index bem::rwg::PlaneWaveBase< obs_num_dof >::num_excitations ( ) const
inlineoverridevirtual

Returns the number of excitations (right-hand sides) to be generated.

Returns
Number of excitations (right-hand sides).

Implements bem::rwg::ExcitationBase< obs_num_dof >.

Definition at line 108 of file plane_wave.hpp.

◆ eval()

template<uint8_t obs_num_dof>
EigMatNX< Complex, 3 > bem::rwg::PlaneWaveBase< obs_num_dof >::eval ( const Complex  k,
ConstEigRef< EigMatNX< Float, 3 > >  r_obs,
const Index  idx = 0 
)
inlineprotected

Evaluates the plane wave vector field value at given observation points.

Parameters
[in]k- Complex wavenumber.
[in]r_obs- Observation points at which to evaluate the plane wave field values.
[in]idx- Index of the right-hand side for which to evaluate the field (optional when there's only one right-hand side).
Returns
Plane wave vector field values sampled at r_obs, where each column corresponds to each excitation when there is more than one excitation (i.e., more than one right-hand side).

Definition at line 122 of file plane_wave.hpp.

◆ compute()

template<uint8_t obs_num_dof>
virtual EigMatNX< Complex, obs_num_dof > bem::rwg::ExcitationBase< obs_num_dof >::compute ( const Complex  k,
const Triangle< 3 > &  obs_tri 
)
pure virtualinherited

Computes the excitation coefficients for each degree of freedom associated with the observation triangle.

Parameters
[in]k- Complex wavenumber.
[in]obs_tri- Observation triangle in the local coordinate system of src_tri.
Returns
Excitation coefficient matrix, where each row corresponds to each degree of freedom associated with obs_tri, and each column corresponds to each excitation when there is more than one excitation (i.e., more than one right-hand side). The number of excitations and various other settings should be provided via the inheriting class's methods.

Implemented in bem::rwg::InfinitesimalGap, bem::rwg::RwgPlaneWave, and bem::rwg::NxRwgPlaneWave.

Member Data Documentation

◆ dir_

template<uint8_t obs_num_dof>
const EigMatNX<Float, 3> bem::rwg::PlaneWaveBase< obs_num_dof >::dir_
protected

Definition at line 130 of file plane_wave.hpp.

◆ pol_

template<uint8_t obs_num_dof>
const EigMatNX<Float, 3> bem::rwg::PlaneWaveBase< obs_num_dof >::pol_
protected

Definition at line 130 of file plane_wave.hpp.

◆ pos_

template<uint8_t obs_num_dof>
const EigMatNX<Float, 3> bem::rwg::PlaneWaveBase< obs_num_dof >::pos_
protected

Definition at line 130 of file plane_wave.hpp.

◆ amp_

template<uint8_t obs_num_dof>
const EigRowVec<Complex> bem::rwg::PlaneWaveBase< obs_num_dof >::amp_
protected

Definition at line 131 of file plane_wave.hpp.

◆ tri_quad_

template<uint8_t obs_num_dof>
std::shared_ptr<GaussTriangleQuadrature<3> > bem::rwg::PlaneWaveBase< obs_num_dof >::tri_quad_
protected

Definition at line 132 of file plane_wave.hpp.


The documentation for this class was generated from the following file: