FDTD 2-D UPML Theory
For the actual “theory” of the UPML see Taflove2005 pp. 285-302. The following are the equations for the 2-D implementation of the UPML ABC.
Contents |
Introduction
The equations for the 2-D UPML are adapted from Taflove2005 pages 285-302. Also from Sullivan2000 and Gedney1996: “An Anisotrophic PML Absorbing Media for the FDTD Simulation of Fields in Lossy and Dispersive Media” Electromagnetics, vol. 16 pp. 399-415, July/August 1996
UPML ABC Theory
Starting from (Taflove2005 page 289), the Maxwell’s curl equations in time harmonic form:
Where, S is the diagonal tensor:
[ sy sz / sx 0 0 ] [ 0 sx sz / sy 0 ] [ 0 0 sx sy / sz ]
and
![]() |
Eqn:3.5 |
For the 2-D case:
![]() |
and the tensor S reduces to…
[ sy / sx 0 0 ] [ 0 sx / sy 0 ] [ 0 0 sx sy ]
2-D UPML for the Electric Field
In order to solve equation Equation 3.1 without involving
a convolution define the following relationships:
![]() |
Eqn:3.7 |
Then Equation 3.1 reduces to:
![]() |
Eqn:3.8 |
![]() |
Eqn:3.9 |
and in the time domain:
![]() |
Eqn:3.11 |
Which is easily solved.
Note: The Numerical notation used in the equations is as follows:
E_x(i,j,n+1) is E_x at point x=i, y=j at timestep n+1 E_x(i,j-1,n) is E_x at point x=i, y=j-1 at timestep n H_z(i, j-.5, n+.5) is H_z at point x=i, y=j-.5 at timestep n-.5 (a 1/2 time-step, using the Yee "leap frogging" algorithm)
Solving for Ex (an example)
Solving equation Equation 3.10 numerically:
![]() |
Eqn:3.12 |
re-arranging terms:
![]() |
Eqn:3.13 |
and reduces to the simple:
![]() |
Eqn:3.14 |
Now to solve equation Equation 3.6:
![]() |
or
![]() |
Eqn:3.15 |
and from equations Equation 3.3, Equation 3.4 we get:
![]() |
Eqn:3.16 |
re-arranging terms:
![]() |
Eqn:3.17 |
and in the time domain…
![]() |
Eqn:3.18 |
Converting to numerical form:
![]() |
Eqn:3.19 |
re-arranging terms:
![]() |
Eqn:3.20 |
re-arranging terms again:
![]() |
Eqn:3.21 |
and finally we have all the equations necessary to solve for Ex:
![]() |
Eqn:3.22 |
![]() |
Eqn:3.23 |
![]() |
Eqn:3.24 |
where,
![]() |
![]() |
![]() |
![]() |
![]() |
and,
![]() |
It’s important to note how c2x and c3x vary with ‘y’ and c4x and c5x vary with ‘x’.
c2x and c3x are used with Ex parallel to the UPML boundary, and
c4x and c5x are used with Ex perpendicular to the UPML boundary.
2-D UPML for the Magnetic Field
In order to solve equation Equation 3.2 without involving
a convolution define the following relationship:
Then Equation 3.2 reduces to:
![]() |
Eqn:3.26 |
or
![]() |
Eqn:3.27 |
and in the time domain:
Which is solved as follows:
Solving for Hz
Solving equation Equation 3.28 numerically:
![]() |
Eqn:3.29 |
re-arranging terms:
![]() |
Eqn:3.30 |
re-arranging terms again:
![]() |
Eqn:3.31 |
Now to solve equation Equation 3.25:
![]() |
and from equations Equation 3.4 we get:
![]() |
Eqn:3.32 |
re-arranging terms:
![]() |
Eqn:3.33 |
and re-arranging terms again:
![]() |
Eqn:3.34 |
Converting to numerical form:
![]() |
Eqn:3.35 |
re-arranging terms:
![]() |
Eqn:3.36 |
re-arranging terms again:
![]() |
Eqn:3.37 |
and finally we have all the equations necessary to solve for Hz:
![]() |
Eqn:3.38 |
![]() |
Eqn:3.39 |
![]() |
Eqn:3.40 |
where,
![]() |
![]() |
![]() |
![]() |
and…
![]() |
It’s important to note how d1z and d2z vary with ‘x’ and d3z and d4z vary with ‘y’.
FDTD Source Code and Results
See the UPML C source code for more implementation details (In particular, the generation of the PML gradient):
See Also
- Fdtd Main Index Page (with example code)
- Maxwell’s Equations
- The Yee Algorithm
- 2D UPML Algorithm and Theory
- The 2D FDTD Wave Algorithm and Theory
- The 2D FDTD Wave Hz Algorithm
- Analytical Solution: Infinite Magnetic Line-source
- Numerical Methods
- Spherical and Cartesian coordinates
- Vector Algebra
- Fundamental and Derived Units
- Glossary
- FDTD References
- FDTD Resources