OpenBEM
Open-source framework for electromagnetic simulation with the boundary element method.
Loading...
Searching...
No Matches
bem::SingularitySubtractedTaylorHGF Class Referenceabstract

Class for computing the scalar Green's function for homogeneous, linear, and isotropic materials, with the singular term(s) implicitly subtracted using the Taylor series expansion of the kernel. More...

#include <hgf.hpp>

+ Inheritance diagram for bem::SingularitySubtractedTaylorHGF:

Detailed Description

Class for computing the scalar Green's function for homogeneous, linear, and isotropic materials, with the singular term(s) implicitly subtracted using the Taylor series expansion of the kernel.

Definition at line 148 of file hgf.hpp.

Member Function Documentation

◆ compute() [1/2]

EigRowVec< Complex > bem::SingularitySubtractedTaylorHGF::compute ( ConstEigRef< EigColVecN< Float, 3 > >  r_obs,
ConstEigRef< EigMatNX< Float, 3 > >  r_src,
const Complex  k 
) const

Computes the kernel for given observation and source points.

Parameters
[in]r_obs- Observer position vector.
[in]r_src- Set of source position vectors.
[in]k- Complex wavenumber.
Returns
Kernel value.

Computes

\[ \frac{e^{-jk|\vec{r} - \vec{r}\,'|}}{4\pi|\vec{r} - \vec{r}\,'|} - \frac{1}{4\pi|\vec{r} - \vec{r}\,'|} \]

where \( \vec{r} \) is the observer position vector, \( \vec{r}\,' \) is the source position vector, and \( k \) is the complex wavenumber. The singular term is never actually computed; it is implicitly subtracted out using the Taylor series expansion

\[ \frac{e^{-jk|\vec{r} - \vec{r}\,'|}}{4\pi|\vec{r} - \vec{r}\,'|} = \frac{1}{4\pi|\vec{r} - \vec{r}\,'|} + \frac{(-jk)}{4\pi} + \frac{(-jk)^2}{4\pi\cdot 2!}|\vec{r} - \vec{r}\,'| + \ldots \]

truncated when the next term is smaller than the tolerance KERNEL_DEFAULT_TOL relative to the sum so far.

Definition at line 97 of file hgf.cpp.

◆ compute_grad() [1/2]

EigMatNX< Complex, 3 > bem::SingularitySubtractedTaylorHGF::compute_grad ( ConstEigRef< EigColVecN< Float, 3 > >  r_obs,
ConstEigRef< EigMatNX< Float, 3 > >  r_src,
const Complex  k 
) const

Computes the gradient of the kernel for given observation and source points.

Parameters
[in]r_obs- Observer position vector.
[in]r_src- Set of source position vectors.
[in]k- Complex wavenumber.
Returns
Components of the gradient of the kernel.

Computes

\begin{align*} \nabla\left(\frac{e^{-jk|\vec{r} - \vec{r}\,'|}}{4\pi|\vec{r} - \vec{r}\,'|} - \frac{1}{4\pi|\vec{r} - \vec{r}\,'|}\right) &=\\ -(\vec{r} - \vec{r}\,')&\left[\left(1 + jk|\vec{r} - \vec{r}\,'|\right) \frac{e^{-jk|\vec{r} - \vec{r}\,'|}}{4\pi|\vec{r} - \vec{r}\,'|^3} - \frac{1}{4\pi|\vec{r} - \vec{r}\,'|^3} - \left(\frac{1}{2}\right) \frac{k^2}{4\pi|\vec{r} - \vec{r}\,'|}\right] \end{align*}

where \( \vec{r} \) is the observer position vector, \( \vec{r}\,' \) is the source position vector, and \( k \) is the complex wavenumber. The singular term is never actually computed; it is implicitly subtracted out using the Taylor series expansion

\[ \nabla\left(\frac{e^{-jk|\vec{r} - \vec{r}\,'|}}{4\pi|\vec{r} - \vec{r}\,'|}\right) = -\frac{\vec{r} - \vec{r}\,'}{4\pi|\vec{r} - \vec{r}\,'|}\left[ \frac{1}{|\vec{r} - \vec{r}\,'|^2} - \frac{(-jk)^2}{2!} - 2\frac{(-jk)^3}{3!}|\vec{r} - \vec{r}\,'| + \ldots\right] \]

truncated when the next term is smaller than the tolerance KERNEL_DEFAULT_TOL relative to the sum so far.

Definition at line 128 of file hgf.cpp.

◆ compute() [2/2]

virtual EigRowVec< Complex > bem::ScalarKernelBase< dim >::compute ( ConstEigRef< EigColVecN< Float, dim > >  r_obs,
ConstEigRef< EigMatNX< Float, dim > >  r_src,
const Complex  k 
) const
pure virtualinherited

Computes the scalar kernel for given observation and source points.

Parameters
[in]r_obs- Observer position vector.
[in]r_src- Set of source position vectors.
[in]k- Complex wavenumber.
Returns
Scalar kernel value.

◆ compute_grad() [2/2]

virtual EigMatNX< Complex, dim > bem::ScalarKernelBase< dim >::compute_grad ( ConstEigRef< EigColVecN< Float, dim > >  r_obs,
ConstEigRef< EigMatNX< Float, dim > >  r_src,
const Complex  k 
) const
pure virtualinherited

Computes the gradient of the scalar kernel for given observation and source points.

Parameters
[in]r_obs- Observer position vector.
[in]r_src- Set of source position vectors.
[in]k- Complex wavenumber.
Returns
Components of the gradient of the scalar kernel.

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