Skip to content

Absorbing Boundary Condition

The absorbing boundary condition is generally applied to the outer boundary of the computational domain to effectively absorb radiation incoming from within, thereby preventing reflections and simulating an enclosure within infinite free space. According to this condition, if the boundary is sufficiently distant from the radiating or scattering object - allowing us to assume that waves reaching the boundary from within the computational domain are incident normally - the electric field field satisfies the following relation [1]:

\[ \hat{\mathbf{n}} \times \left(\frac{1}{\mu} \nabla \times \tilde{\mathbf{E}}\right) = j \frac{\omega}{Z} \hat{\mathbf{n}} \times \left(\tilde{\mathbf{E}} \times \hat{\mathbf{n}}\right), \]

where \(\hat{\mathbf{n}}\) is the unit vector normal to the boundary, \(\omega\) is the angular frequency, and \(Z = \sqrt{\mu/(\varepsilon - j\sigma/\omega)}\) is the impedance with \(\mu\), \(\varepsilon\), and \(\sigma\) being the permeability, permittivity, and conductivity of the material adjacent to the boundary.

To create an AbsorbingBoundaryCondition, the user must specify a custom name for the condition and provide the boundary Marker:

condition = AbsorbingBoundaryCondition(
    name = "My Absorbing Boundary Condition",
    marker = my_marker,
)

References

[1] J.-M. Jin, "The finite element method in electromagnetics", 3rd edition, Wiley, 2014 (Chapter 9.2)