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.



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


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 ]


731660ab249a1b4af94ca64744e81944.png 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:

3edbb50ce82982a08e849ca67347ca96.png Eqn:3.7

Then Equation 3.1 reduces to:

af64aaed4db64a306703da79efa30e26.png Eqn:3.8
dfe39faddea078d592eb08d6f41718c1.png Eqn:3.9

and in the time domain:

48a98d24428b21ab923a52829e0dd256.png 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:

05ed306f958db6eeadb36a06d4100538.png Eqn:3.12

re-arranging terms:

da73a3041881b6c4f4efa2835a6b9c42.png Eqn:3.13

and reduces to the simple:

0863d2c91191e9df37add49cf1b8f0f9.png Eqn:3.14

Now to solve equation Equation 3.6:



926e9eba8ecba43529f2065f81c019c9.png Eqn:3.15

and from equations Equation 3.3, Equation 3.4 we get:

237e2d1b468c675275d84dfe89998bbb.png Eqn:3.16

re-arranging terms:

e0a1e989ddd4ffdfc34d8becacdae760.png Eqn:3.17

and in the time domain…

9daa7dfab5b450bafdc3b1f757da44e7.png Eqn:3.18

Converting to numerical form:

49cd410910f8a965d460f3f0f45c1f6a.png Eqn:3.19

re-arranging terms:

5937da5ed3a88d9892ea571b25bafdac.png Eqn:3.20

re-arranging terms again:

96efe31204f1573a673e151ea88b1331.png Eqn:3.21

and finally we have all the equations necessary to solve for Ex:

eec07bb5adadbd5344267beec9df7241.png Eqn:3.22
72c83cd4e7a9152337900e18c0a8f8ec.png Eqn:3.23
91dae3a031b5d97937cd09825d977014.png Eqn:3.24





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:

5454e26a3f121761b6dfe54eee7d730b.png Eqn:3.26


ea1f580005245f2e3ad6494fd3f21208.png Eqn:3.27

and in the time domain:

Which is solved as follows:

Solving for Hz

Solving equation Equation 3.28 numerically:

8ee00747190d1ffd7af78d9c189fd5bd.png Eqn:3.29

re-arranging terms:

c5b134abba9c6298f05837e5d78b450b.png Eqn:3.30

re-arranging terms again:

806328fab64fc1ba5ac69bdcf9622652.png Eqn:3.31

Now to solve equation Equation 3.25:


and from equations Equation 3.4 we get:

a00b262585272d13ce26c4f70e04706b.png Eqn:3.32

re-arranging terms:

83c3daaf95f93a49ddf6e1b26e810659.png Eqn:3.33

and re-arranging terms again:

667c7876b868300532ed38e4c60834ac.png Eqn:3.34

Converting to numerical form:

f6faf03b522f00383511a1e441bcdb12.png Eqn:3.35

re-arranging terms:

ce4fa1510158021cdc7dc90d81f15fef.png Eqn:3.36

re-arranging terms again:

238a09e43db5786e61547354777547d9.png Eqn:3.37

and finally we have all the equations necessary to solve for Hz:

0249afb4717e1c3b06420471806622a1.png Eqn:3.38
84f0a1fc5bbf97cff8d9530db0b41cbe.png Eqn:3.39
60abd61450e7f4c6c2e2d2e457ab29f5.png Eqn:3.40





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