# Absorbing boundary condition

An absorbing boundary condition simulates infinite extent along a direction. This is accomplished by padding the side of the computational domain with artificial materials that absorbs incident electromagnetic fields. In FDTD++, these artificial materials are convolution perfectly matched layers (CPML)[1], which currently offer the best absorption in the finite-difference time-domain method. An illustration of CPML applied to the computational domain is shown to the lower right.

Illustration of CPML applied along the $x$ and $y$ sides of the computational domain. Parameters that can be set in the parameters file are shown in red.

## Setting absorbing boundary conditions

Absorbing boundary conditions are set by default along all directions ($x$, $y$, and $z$) in FDTD++. Note that this is the only boundary condition currently allowed along $z$. Thus, there is no need to define them in FDTD++, however they can be, for clarity, etc.

In order to set absorbing boundary conditions along $x$, $y$, and $z$, one can add the following to the parameters file:  

 BC CPML 

or explicitly set them along all directions:  

 BC CPML x BC CPML y BC CPML z 

The latter case also demonstrates how one may apply absorbing boundary conditions along only one direction.

Note that the CPML parameters (see below) are currently applied uniformly along every dimension for which they are set.

## Controlling the CPML parameters

Although they have been set to optimal values for the vast majority of simulations[2], the CPML parameters can be fine tuned using the following simulation parameters:

• BC CPML nlayers #: Set the number of CPML layers to #. The default value is 10.
• BC CPML fsigmaopt #: Set the CPML fraction of $\sigma_\text{opt}$ to #. The default value of # is 1.1.
• BC CPML kappamax #: Set the CPML $\kappa_\text{max}$ to #. The default value of # is 13.5.
• BC CPML alphamax #: Set the CPML $\alpha_\text{max}$ to #. The default value of # is 0.225.
• BC CPML m #: Set the CPML polynomial grading $m$ to #. The default value of # is 3.5.
• BC CPML ma #: Set the CPML polynomial grading $m_\alpha$ to #. The default value of # is 2.

As an example, if one desired 20 CPML layers (instead of the default 10), the following would be added to the parameters file:  

 BC CPML nlayers 20 

## Considerations

The addition of CPML along the sides of the computational domain will reduce the size of the interior region (available for geometries, etc.) by a size specified by $w$ = (BC CPML nlayers) $\cdot$ (domain disc w) (where w is x, y, or z), as illustrated in the above image.

## Notes and references

1. J. A. Roden and S. D. Gedney, "Convolution PML (CPML): An efficient FDTD implementation of the CFS-PML for arbitrary media," Microwave Opt. Tech. Lett. 27, 334-339 (2000).
2. A. Taflove and S. C. Hagness, “Computational Electrodynamics: The Finite-Difference Time-Domain Method,” 3rd Edition, Artech House: 2005. ISBN 978-1580538329