Download as pdf or txt
Download as pdf or txt
You are on page 1of 40

FDTD Formulas

Milos Subotic
milos.subotic.sm@gmail.com
January 25, 2023

1 Common part of derivation


1.1 Basics
Maxwell’s equations are:

∇·E=0 (1)

∇·H=0 (2)

∂B
∇×E=− (3)
∂t
∂D
∇×H= (4)
∂t
Constitutive equation are:

B = µH (5)

D = εE (6)
eqs. (1) and (2) are not explicitly used in FDTD formulas derivation. These
Maxwell’s divergence equations are implicitly satisfied by Yee grid.

1.2 Normalization
Because numeric precision we introduce Ẽ, a normalized E, as:
r
0 1
Ẽ = E= E (7)
µ0 η0
Also D, P and J could be normalized:
1
D̃ = √ D = c0 D (8)
0 µ0

1
1
P̃ = √ P = c0 P (9)
0 µ0
1
J̃ = √ J = c0 J (10)
0 µ0
After normalizing eqs. (1) to (4) become:

∇ · Ẽ = 0 (11)

∇·H=0 (12)

µr ∂H
∇ × Ẽ = − (13)
c0 ∂t

εr ∂ Ẽ
∇×H= (14)
c0 ∂t
This normalization will make Ẽ and H same order of magnitude and com-
putation is more precise.

1.3 Governing equations


Normalized Maxwell’s equations could be now expanded to scalar form.
From eq. (11):
∂ Ẽx ∂ Ẽy ∂ Ẽz
+ + =0 (15)
∂x ∂y ∂z
From eq. (12):
∂Hx ∂Hy ∂Hz
+ + =0 (16)
∂x ∂y ∂z
From eq. (13):
! ! !
∂ Ẽz ∂ Ẽy ∂ Ẽx ∂ Ẽz ∂ Ẽy ∂ Ẽx
− i+ − j+ − k=
∂y ∂z ∂z ∂x ∂x ∂y
 
µr ∂Hx ∂Hy ∂Hz
− i+ j+ k (17)
c0 ∂t ∂t ∂t

From eq. (14):


     
∂Hz ∂Hy ∂Hx ∂Hz ∂Hy ∂Hx
− i+ − j+ − k=
∂y ∂z ∂z ∂x ∂x ∂y
!
εr ∂ Ẽx ∂ Ẽy ∂ Ẽz
i+ j+ k (18)
c0 ∂t ∂t ∂t

2
Here i, j and k are standard basis of the Cartesian 3D space.
Aforementioned equation could be spillted per coordinates and we get gov-
erning equations:
For i:
∂ Ẽz ∂ Ẽy µr ∂Hx
− =− (19)
∂y ∂z c0 ∂t

∂Hz ∂Hy εr ∂ Ẽx


− = (20)
∂y ∂z c0 ∂t
For j:
∂ Ẽx ∂ Ẽz µr ∂Hy
− =− (21)
∂z ∂x c0 ∂t

∂Hx ∂Hz εr ∂ Ẽy


− = (22)
∂z ∂x c0 ∂t
For k:
∂ Ẽy ∂ Ẽx µr ∂Hz
− =− (23)
∂x ∂y c0 ∂t

∂Hy ∂Hx εr ∂ Ẽz


− = (24)
∂x ∂y c0 ∂t
For simplified formulations curl terms and constituve equation is calculated
separately. So final analytic equations are:
µr ∂Hx
CxE = − (25)
c0 ∂t

µr ∂Hy
CyE = − (26)
c0 ∂t
µr ∂Hz
CzE = − (27)
c0 ∂t

1 ∂ D̃x
CxH = (28)
c0 ∂t

1 ∂ D̃y
CyH = (29)
c0 ∂t

1 ∂ D̃z
CzH = (30)
c0 ∂t
with constitutive equation

D̃z = εr Ẽz (31)

3
and curl equations
∂ Ẽz ∂ Ẽy
CxE = − (32)
∂y ∂z

∂ Ẽx ∂ Ẽz
CyE = − (33)
∂z ∂x

∂ Ẽy ∂ Ẽx
CzE = − (34)
∂x ∂y
∂Hz ∂Hy
CxH = − (35)
∂y ∂z
∂Hx ∂Hz
CyH = − (36)
∂z ∂x
∂Hy ∂Hx
CzH = − (37)
∂x ∂y

1.4 Finite-difference approximation


All terms in eqs. (25) to (30) eqs. (32) to (37) could be approximated by
centered finite-difference approximation of first order.
Space derivatives approximation:
i,j+1,k i,j,k

Ẽz
− Ẽz
∂ Ẽz t t
⇒ (38)
∂y ∆y
i,j,k+1 i,j,k

Ẽy − Ẽy
∂ Ẽy t t
⇒ (39)
∂z ∆z
i,j,k+1 i,j,k

Ẽx
− Ẽx
∂ Ẽx t t
⇒ (40)
∂z ∆z
i+1,j,k i,j,k

Ẽz
− Ẽz
∂ Ẽz t t
⇒ (41)
∂x ∆x
i+1,j,k i,j,k

Ẽy − Ẽy
∂ Ẽy t t
⇒ (42)
∂x ∆x

4
i,j+1,k i,j,k

Ẽx
− Ẽx
∂ Ẽx t t
⇒ (43)
∂y ∆y
i,j,k i,j−1,k

Hz
− Hz
∂Hz t+ ∆t
t+∆t
⇒ 2 2
(44)
∂y ∆y
i,j,k i,j,k−1

Hy
− Hy
∂Hy t+ ∆t
t+ ∆t
⇒ 2 2
(45)
∂z ∆z
i,j,k i,j,k−1

Hx
− Hx
∂Hx t+ ∆t
t+ ∆t
⇒ 2 2
(46)
∂z ∆z
i,j,k i−1,j,k

Hz
− Hz
∂Hz t+ ∆t ∆t
t+
⇒ 2 2
(47)
∂x ∆x
i,j,k i−1,j,k

Hy
− Hy
∂Hy t+ ∆t ∆t
t+
⇒ 2 2
(48)
∂x ∆x
i,j,k i,j−1,k

Hx
− Hx
∂Hx t+ ∆t
t+∆t
⇒ 2 2
(49)
∂y ∆y
Time derivatives approximation:
i,j,k i,j,k

Hx − Hx
∂Hx t+ ∆t t− ∆t
⇒ 2 2
(50)
∂t ∆t
i,j,k i,j,k

Hy − Hy
∂Hy t+ ∆t t− ∆t
⇒ 2 2
(51)
∂t ∆t
i,j,k i,j,k

Hz − Hz
∂Hz t+ ∆t t− ∆t
⇒ 2 2
(52)
∂t ∆t

5
i,j,k i,j,k

D̃x
− D̃x
∂ D̃x t+∆t t
⇒ (53)
∂t ∆t
i,j,k i,j,k

D̃y − D̃y
∂ D̃y t+∆t t
⇒ (54)
∂t ∆t
i,j,k i,j,k

D̃z
− D̃z
∂ D̃z t+∆t t
⇒ (55)
∂t ∆t
Analytic equation eqs. (25) to (30) could be now expressed as:
i,j,k i,j,k i,j,k

H − H

i,j,k µr
x
x

µr ∂Hx t+ ∆t t− ∆t
CxE = − ⇒ CxE

=− 2 2
(56)
c0 ∂t t c0 ∆t

i,j,k i,j,k i,j,k



H − H

i,j,k µr
y
y

µr ∂Hy t+ ∆t t− ∆t
CyE = − ⇒ CyE

=− 2 2
(57)
c0 ∂t t c0 ∆t
i,j,k i,j,k i,j,k

H − H

i,j,k µr
z
z

µr ∂Hz t+ ∆t t− ∆t
CzE = − ⇒ CzE

=− 2 2
(58)
c0 ∂t t c0 ∆t
i,j,k i,j,k

i,j,k D̃x − D̃x
1 ∂ D̃x 1 t+∆t t
CxH ⇒ CxH

= = (59)
c0 ∂t t+ ∆t c0 ∆t
2

i,j,k i,j,k

i,j,k D̃y − D̃y
1 ∂ D̃y 1 t+∆t t
CyH ⇒ CyH

= = (60)
c0 ∂t t+ ∆t c 0 ∆t
2

i,j,k i,j,k

i,j,k D̃z − D̃z
1 ∂ D̃z 1 t+∆t t
CzH ⇒ CzH

= = (61)
c0 ∂t t+ ∆t c0 ∆t
2

Discrete constitutive equation:


i,j i,j,k i,j

D̃z = εr
Ẽz (62)
t t

6
Curl terms eqs. (32) to (37) could be then expressed as:
i,j+1,k i,j,k i,j,k+1 i,j,k

i,j,k Ẽz
− Ẽz Ẽy
− Ẽy
∂ Ẽz ∂ Ẽy
CxE = ⇒ CxE
t t t t
− = −
∂y ∂z t ∆y ∆z
(63)

i,j,k+1 i,j,k i+1,j,k i,j,k



i,j,k Ẽx
− Ẽx Ẽz
− Ẽz
∂ Ẽx ∂ Ẽz
CyE = ⇒ CyE
t t t t
− = −
∂z ∂x t ∆z ∆x
(64)

i+1,j,k i,j,k i,j+1,k i,j,k



i,j,k Ẽy
− Ẽy Ẽx
− Ẽx
∂ Ẽy ∂ Ẽx
CzE = ⇒ CzE
t t t t
− = −
∂x ∂y t ∆x ∆y
(65)

i,j,k i,j−1,k i,j,k i,j,k−1



i,j,k Hz
− Hz Hy
− Hy
∂Hz ∂Hy t+ ∆t
t+∆t
t+ ∆t
t+∆t
CxH H

= − ⇒ Cx = 2 2
− 2 2

∂y ∂z t+ ∆t ∆y ∆z
2
(66)

i,j,k i,j,k−1 i,j,k i−1,j,k



i,j,k Hx
− Hx Hz
− Hz
∂Hx ∂Hz t+ ∆t
t+ ∆t
t+ ∆t ∆t
t+
CyH H

= − ⇒ Cy = 2 2
− 2 2

∂z ∂x t+ ∆t ∆z ∆x
2
(67)

i,j,k i−1,j,k i,j,k i,j−1,k



i,j,k Hy
− Hy Hx
− Hx
∂Hy ∂Hx t+ ∆t ∆t
t+ t+ ∆t ∆t
t+
CzH H

= − ⇒ Cz = 2 2
− 2 2

∂x ∂y t+ ∆t ∆x ∆y
2
(68)

2 2D
2.1 Ez mode

In Ez mode (TM mode) all partial derivatives per z are 0 ( ∂z = 0). From
this reason Ẽx , Ẽy and Hz are eliminated, and all calculation is done by means
of Ẽz , Hx and Hy .

7
Eliminating ∂z, Ẽx , Ẽy and Hz from eqs. (25) to (30) we get:

µr ∂Hx
CxE = − (69)
c0 ∂t

µr ∂Hy
CyE = − (70)
c0 ∂t

1 ∂ D̃z
CzH = (71)
c0 ∂t
with constitutive equation

D̃z = εr Ẽz (72)

and curl equations


∂ Ẽz
CxE = (73)
∂y

∂ Ẽz
CyE = − (74)
∂x
∂Hy ∂Hx
CzH = − (75)
∂x ∂y
After finite-difference approximation we get:
i,j i,j i,j

µr Hx ∆t − Hx ∆t

i,j
E
t+ t−
Cx =− 2 2
(76)
t c0 ∆t

i,j i,j i,j



µr Hy ∆t − Hy ∆t

i,j
t+ t−
CyE

=− 2 2
(77)
t c0 ∆t
i,j i,j

i,j D̃z
− D̃z
1 t+∆t t
CzH

= (78)
t+ ∆t c0 ∆t
2

i,j i,j i,j



D̃z = εr Ẽz
(79)
t t
i,j+1 i,j

i,j Ẽz
− Ẽz
CxE =
t t
(80)
t ∆y

8
i+1,j i,j

i,j Ẽz
− Ẽz
CyE = −
t t
(81)
t ∆x
i,j i−1,j i,j i,j−1

i,j Hy
− Hy Hx
− Hx
∆t ∆t ∆t ∆t
t+ t+ t+ t+
CzH

= 2 2
− 2 2
(82)
t+ ∆t ∆x ∆y
2

After refactoring to update equations by steps:

• Step 1, Ẽ curls:
i,j+1 i,j

i,j Ẽz − Ẽz
CxE =
t t
(83)
t ∆y
i+1,j i,j

i,j Ẽz
− Ẽz
CyE = −
t t
(84)
t ∆x

• Step 2, update H:
i,j i,j i,j
c0 ∆t E
Hx
= Hx
− i,j Cx (85)
t+ ∆t t− ∆t t
2 2
µr

i,j i,j i,j


c0 ∆t E
Hy = Hy − i,j Cy (86)
t+ ∆t t− ∆t t
2 2
µr

• Step 3, H curl:
i,j i−1,j i,j i,j−1

i,j Hy
− Hy Hx
− Hx
∆t ∆t ∆t ∆t
t+ t+ t+ t+
CzH

= 2 2
− 2 2
(87)
t+ ∆t ∆x ∆y
2

• Step 4, update D̃:


i,j i,j i,j
H

D̃z = D̃z + c0 ∆tCz
(88)
∆t
t+∆t t t+ 2

• Step 5, insert source:


i,j i,j

D̃z = D̃z + src(t) (89)
t+∆t t+∆t

9
• Step 6, calculate Ẽ:
i,j i,j
1
Ẽz = i,j D̃z (90)
t+∆t t+∆t
εr

3 UPML
3.1 UPML frequency-domain analytic formulations
Before UPML:
∇ × E(ω) = −jωµH(ω) (91)

∇ × H(ω) = jωD(ω) (92)

D(ω) = εE(ω) (93)


After UPML:
∇ × E(ω) = −jωµ[s]H(ω) (94)

∇ × H(ω) = jω[s]D(ω) (95)

D(ω) = εE(ω) (96)


where  sy sz
0 0

sx
sx sz
[s] =  0 sy 0  (97)
sx sy
0 0 sz

where
σx
sx = 1 + (98)
jωε0
σy
sy = 1 + (99)
jωε0
σz
sz = 1 + (100)
jωε0
where   3
ε0 Lx −x



 2∆t L x
0 <= x < Lx
σx = 0 Lx <= x <= Nx − Lx (101)
  3
 ε0 Nx +Lx −x

Nx − Lx < x <= Nx

2∆t Lx

10
  3
ε0 Ly −y


 2∆t
 Ly 0 <= y < Ly
σy = 0 Ly <= y <= Ny − Ly (102)
  3
 ε0 Ny +Ly −y

Ny − Ly < y <= Ny

2∆t Ly
  3
ε0 Lz −z


 2∆t
 Lz 0 <= z < Lz
σz = 0 Lz <= z <= Nz − Lz (103)
  3
 ε0 Nz +Lz −z

Nz − Lz < z < Nz

2∆t Lz

where Lx,y,z are width of UPML and Nx,y,z is width of space in corresponding
dimension.
Normalize electric field quantities:
jωµr
∇ × Ẽ(ω) = − [s]H(ω) (104)
c0


∇ × H(ω) = [s]D̃(ω) (105)
c0

D̃(ω) = εr Ẽ(ω) (106)


In matrix format:
∂ ∂ 
− ∂z
 
0 ∂y Ẽx (ω)
 ∂ 0 ∂ 
− ∂x Ẽy (ω) =
∂z
∂ ∂
− ∂y ∂x 0 Ẽz (ω)
 −1  
s s s 0 0 Hx (ω)
jωµr  x y z
− 0 sx s−1
y sz 0  Hy (ω) (107)
c0
0 0 sx sy s−1
z Hz (ω)

∂ ∂ 
− ∂z
 
0 ∂y Hx (ω)
 ∂ 0 ∂ 
− ∂x Hy (ω) =
∂z
∂ ∂ Hz (ω)
− ∂y ∂x 0
 −1  
s s s 0 0 D̃x (ω)
jω  x y z
0 sx s−1
y sz 0  D̃y (ω) (108)
c0
0 0 sx sy s−1
z D̃z (ω)
   
D̃x (ω) Ẽx (ω)
D̃y (ω) = εr Ẽy (ω) (109)
D̃z (ω) Ẽz (ω)
After vector expansions we get:
µr sy sz
CxE (ω) = −jω Hx (ω) (110)
c0 sx

11
µr sx sz
CyE (ω) = −jω Hy (ω) (111)
c0 sy
µr sx sy
CzE (ω) = −jω Hz (ω) (112)
c0 sz
jω sy sz
CxH (ω) = D̃x (ω) (113)
c0 sx
jω sx sz
CyH (ω) = D̃y (ω) (114)
c0 sy
jω sx sy
CzH (ω) = D̃z (ω) (115)
c0 sz
where
D̃x (ω) = εr Ẽx (ω) (116)

D̃y (ω) = εr Ẽy (ω) (117)

D̃z (ω) = εr Ẽz (ω) (118)


Curls are like:
∂ Ẽz (ω) ∂ Ẽy (ω)
CxE (ω) = − (119)
∂y ∂z

∂ Ẽx (ω) ∂ Ẽz (ω)


CyE (ω) = − (120)
∂z ∂x

∂ Ẽy (ω) ∂ Ẽx (ω)


CzE (ω) = − (121)
∂x ∂y
∂Hz (ω) ∂Hy (ω)
CxH (ω) = − (122)
∂y ∂z
∂Hx (ω) ∂Hz (ω)
CyH (ω) = − (123)
∂z ∂x
∂Hy (ω) ∂Hx (ω)
CzH (ω) = − (124)
∂x ∂y
Final form of UPML analytic frequency-domain equations after re-
placing sx,y,z :
 −1   
σx σy σz c0
jω 1 + 1+ 1+ Hx (ω) = − CxE (ω) (125)
jωε0 jωε0 jωε0 µr

  −1  
σx σy σz c0
jω 1 + 1+ 1+ Hy (ω) = − CyE (ω) (126)
jωε0 jωε0 jωε0 µr

12
   −1
σx σy σz c0
jω 1 + 1+ 1+ Hz (ω) = − CzE (ω) (127)
jωε0 jωε0 jωε0 µr

 −1   
σx σy σz
jω 1 + 1+ 1+ D̃x (ω) = c0 CxH (ω) (128)
jωε0 jωε0 jωε0
  −1  
σx σy σz
jω 1 + 1+ 1+ D̃y (ω) = c0 CyH (ω) (129)
jωε0 jωε0 jωε0
   −1
σx σy σz
jω 1 + 1+ 1+ D̃z (ω) = c0 CzH (ω) (130)
jωε0 jωε0 jωε0
where
D̃x (ω) = εr Ẽx (ω) (131)

D̃y (ω) = εr Ẽy (ω) (132)

D̃z (ω) = εr Ẽz (ω) (133)


and
∂ Ẽz (ω) ∂ Ẽy (ω)
CxE (ω) = − (134)
∂y ∂z

∂ Ẽx (ω) ∂ Ẽz (ω)


CyE (ω) = − (135)
∂z ∂x

∂ Ẽy (ω) ∂ Ẽx (ω)


CzE (ω) = − (136)
∂x ∂y
∂Hz (ω) ∂Hy (ω)
CxH (ω) = − (137)
∂y ∂z
∂Hx (ω) ∂Hz (ω)
CyH (ω) = − (138)
∂z ∂x
∂Hy (ω) ∂Hx (ω)
CzH (ω) = − (139)
∂x ∂y

13
3.2 UPML time-domain analytic formulations
Some important Fourier transformations are:

F {g(t)} = G(ω) (140)

F {ag(t)} = aG(ω) (141)

da
 
F g(t) = (jω)a G(ω) (142)
dta
Z t 
1
F g(τ )dτ = G(ω) (143)
−∞ jω
Let start with transforming first UPML equation eq. (125):
 −1   
σx σy σz c0
jω 1 + 1+ 1+ Hx (ω) = − CxE (ω) (144)
jωε0 jωε0 jωε0 µr
    
σy σz c0 σx
jω 1 + 1+ Hx (ω) = − 1+ CxE (ω) (145)
jωε0 jωε0 µr jωε0
    
σy σz c0 σx
jω 1 + 1+ Hx (ω) = − 1+ CxE (ω) (146)
jωε0 jωε0 µr jωε0
   
σy + σz σy σz c0 σx
jω 1 + + Hx (ω) = − 1 + CxE (ω) (147)
jωε0 (jωε0 )2 µr jωε0

σy + σz 1 σy σz
jωHx (ω) + Hx (ω) + Hx (ω) =
ε0 jω ε20
c0 E 1 c0 σx E
− C (ω) − C (ω) (148)
µr x jω ε0 µr x
Convert each term to time domain separately:

∂Hx (t)
jωHx (ω) ⇒ (149)
∂t

σy + σz σy + σz
Hx (ω) ⇒ Hx (t) (150)
ε0 ε0

σy σz t
Z
1 σy σz
H x (ω) ⇒ Hx (τ )dτ (151)
jω ε20 ε20 −∞
c0 E c0 E
Cx (ω) ⇒ C (t) (152)
µr µr x

14
Z t
1 c0 σx E c0 σx
C (ω) ⇒ CxE (τ )dτ (153)
jω ε0 µr x ε0 µr −∞

After conversion to time domain eq. (125) is:


Z t
∂Hx (t) σy + σz σy σz
+ Hx (t) + 2 Hx (τ )dτ =
∂t ε0 ε0 −∞
Z t
c0 E c0 σx
− C (t) − CxE (τ )dτ (154)
µr x ε0 µr −∞

After similar procedure all UPML analytical time-domain equation


are:
Z t
∂Hx (t) σy + σz σy σz
+ Hx (t) + 2 Hx (τ )dτ =
∂t ε0 ε0 −∞
Z t
c0 E c0 σx
− C (t) − CxE (τ )dτ (155)
µr x ε0 µr −∞

Z t
∂Hy (t) σx + σz σx σz
+ Hy (t) + 2 Hy (τ )dτ =
∂t ε0 ε0 −∞
Z t
c0 E c0 σ y
− Cy (t) − CyE (τ )dτ (156)
µr ε0 µr −∞

Z t
∂Hz (t) σx + σy σx σy
+ Hz (t) + 2 Hz (τ )dτ =
∂t ε0 ε0 −∞
Z t
c0 E c0 σ z
− C (t) − CzE (τ )dτ (157)
µr z ε0 µr −∞

Z t
∂ D̃x (t) σy + σz σy σz
+ D̃x (t) + 2 D̃x (τ )dτ =
∂t ε0 ε0 −∞
Z t
c0 σx
c0 CxH (t) + CxH (τ )dτ (158)
ε0 −∞

Z t
∂ D̃y (t) σx + σz σx σz
+ D̃y (t) + 2 D̃y (τ )dτ =
∂t ε0 ε0 −∞
Z t
c0 σy
c0 CyH (t) + CyH (τ )dτ (159)
ε0 −∞

15
Z t
∂ D̃z (t) σx + σy σx σy
+ D̃z (t) + 2 D̃z (τ )dτ =
∂t ε0 ε0 −∞
Z t
c0 σ z
c0 CzH (t) + CzH (τ )dτ (160)
ε0 −∞

where
D̃x (t) = εr Ẽx (t) (161)

D̃y (t) = εr Ẽy (t) (162)

D̃z (t) = εr Ẽz (t) (163)


and
∂ Ẽz (t) ∂ Ẽy (t)
CxE (t) = − (164)
∂y ∂z

∂ Ẽx (t) ∂ Ẽz (t)


CyE (t) = − (165)
∂z ∂x

∂ Ẽy (t) ∂ Ẽx (t)


CzE (t) = − (166)
∂x ∂y
∂Hz (t) ∂Hy (t)
CxH (t) = − (167)
∂y ∂z
∂Hx (t) ∂Hz (t)
CyH (t) = − (168)
∂z ∂x
∂Hy (t) ∂Hx (t)
CzH (t) = − (169)
∂x ∂y

3.3 UPML numeric equations


All terms of eq. (155) could be approximated in next way:
i,j,k i,j,k

Hx
− Hx
∂Hx (t) ∆t
t+ ∆t
t−
⇒ 2 2
(170)
∂t ∆t

i,j,k i,j,k ! i,j,k i,j,k !


σy + σz 1
σyHx + σzHx

Hx (t) ⇒ Hx + Hx (171)
ε0 2ε0 ∆t
t+ ∆t
t−
2 2

16
Z t
σy σz
Hx (τ )dτ
ε20 −∞
i,j,k i,j,k  i,j,k i,j,k


 Hx + Hx

σyHx σzHx t− ∆t
X2 i,j,k 
 t+ ∆t t− ∆t ∆t 
⇒ 2
 2 2
+ H x
∆t
ε0  2 2 T

 T =− ∆t 2

i,j,k
 i,j,k 

i,j,k i,j,k  Hx + Hx t− ∆t
X2 i,j,k 
∆t Hx Hx
 t+ ∆t t− ∆t 
⇒ 2 σy σz  2 2
+ Hx
 (172)
ε0  4 ∆t T

 T =− 
2

i,j,k
c0 E c0 E

C (t) ⇒ C (173)
µr x
i,j,k x
t
µr

i,j,k

Z t σx t i,j,k
c0 σx E c0 X
E

Cx (τ )dτ ⇒ i,j,k Cx ∆t
ε0 µr −∞ ε0 T
T =0
µr
i,j,k

σxHx t i,j,k
∆tc0 X
E

⇒ i,j,k Cx (174)
ε0 T
T =0
µr

where i,j+1,k i,j,k i,j,k+1 i,j,k



i,j,k Ẽz
− Ẽz Ẽy
− Ẽy
CxE
t t t t
= − (175)
t ∆y ∆z

17
After all numerical approximations eqs. (155) to (160) become:
i,j,k i,j,k

Hx
− Hx i,j,k i,j,k ! i,j,k i,j,k !
t+ ∆t
t− ∆t 1
σyHx + σzHx
2 2

+ Hx + Hx
∆t 2ε0 t+ ∆t t− ∆t
2 2
 i,j,k i,j,k 

i,j,k i,j,k  Hx + Hx t− ∆t
X2 i,j,k 
∆t Hx Hx
 t+ ∆t
2 t− ∆t
2

+ 2 σy σz  + Hx =
ε0  4 T

 T =− ∆t 
2

i,j,k

i,j,k σxHx
t i,j,k
c0 E
∆tc0 X
E

− C
i,j,k x − i,j,k C x (176)
t ε0 T
T =0
µr µr

i,j,k i,j,k

Hy
− Hy i,j,k i,j,k ! i,j,k i,j,k !
t+ ∆t
t− ∆t 1
σxHy σzHy
2 2

+ + Hy + Hy
∆t 2ε0 t+ ∆t t− ∆t
2 2
i,j,k
 i,j,k 

i,j,k H
i,j,k  y
+ Hy
t− ∆t i,j,k 
∆t Hy t+ ∆t t− ∆t X2
Hy
 2 2

+ 2 σx σz  + Hy =
ε0  4 ∆t T

 T =− 
2

i,j,k
Hy
i,j,k σy t i,j,k
c0 E
∆tc0 X
E

− i,j,k Cy − i,j,k Cy (177)
t ε0 T
T =0
µr µr

18
i,j,k i,j,k

Hz
− Hz i,j,k i,j,k ! i,j,k i,j,k !
t+ ∆t
t− ∆t 1
σxHz σyHz
2 2

+ + Hz
+ Hz
∆t 2ε0 t+ ∆t t− ∆t
2 2
i,j,k
 i,j,k 

i,j,k H
i,j,k  z
+ H z
t− ∆t i,j,k 
∆t Hz t+ ∆t t− ∆t X2
Hz
 2 2

+ 2 σx σy  + H z
=
ε0  4 ∆t T

 T =− 
2

i,j,k

i,j,k σzHz t i,j,k
c0 E
∆tc0 X
E

− i,j,k Cz − i,j,k Cz (178)
t ε0 T
T =0
µr µr

i,j,k i,j,k

D̃x
− D̃x i,j,k i,j,k ! i,j,k i,j,k !
t+∆t t 1
σyD σzD

+ + D̃x + D̃x
∆t 2ε0 t+∆t t
 i,j,k i,j,k 

i,j,k i,j,k  D̃x
+ D̃x
t i,j,k 
∆t t+∆t t
X
+ 2 σyD σzD

+ D̃x =
 
ε0 4

 T 
T =0

i,j,k i,j,k t+ ∆t i,j,k


∆tc0 D X2
c0 CxH H

+ σ Cx (179)
t+ ∆t ε0 x ∆t T
2 T= 2

i,j,k i,j,k

D̃y
− D̃y i,j,k i,j,k ! i,j,k i,j,k !
t+∆t t 1
σxD + σzD

+ D̃y + D̃y
∆t 2ε0 t+∆t t
i,j,k
 i,j,k 

i,j,k i,j,k  D̃y
+ D̃y
t i,j,k 
∆t D D
t+∆t t
X
+ 2 σx σz + D̃y =
 
ε0 4

 T 
T =0

i,j,k i,j,k t+ ∆t i,j,k


∆tc0 D X2
c0 CyH H

+ σy Cy (180)
t+ ∆t ε0 ∆t T
2 T= 2

19
i,j,k i,j,k

D̃z
− D̃z i,j,k i,j,k ! i,j,k i,j,k !
t+∆t t 1
σxD + σyD

+ D̃z + D̃z
∆t 2ε0 t+∆t t
i,j,k  i,j,k 

i,j,k i,j,k  D̃z
+ D̃z
t i,j,k 
∆t D D
t+∆t t
X
+ 2 σx σy + D̃z =
 
ε0 4

 T 
T =0

i,j,k i,j,k t+ ∆t i,j,k


∆tc0 D X2
c0 CzH H

+ σz Cz (181)
t+ ∆t ε0 ∆t T
2 T= 2

where
i,j+1,k i,j,k i,j,k+1 i,j,k

i,j,k Ẽz − Ẽz Ẽy − Ẽy
CxE
t t t t
= − (182)
t ∆y ∆z
i,j,k+1 i,j,k i+1,j,k i,j,k

i,j,k Ẽx − Ẽx Ẽz − Ẽz
CyE
t t t t
= − (183)
t ∆z ∆x
i+1,j,k i,j,k i,j+1,k i,j,k

i,j,k Ẽy
− Ẽy
Ẽx
− Ẽx
CzE
t t t t
= − (184)
t ∆x ∆y
i,j,k i,j−1,k i,j,k i,j,k−1

i,j,k Hz
− Hz Hy
− Hy
∆t ∆t ∆t ∆t
t+ t+ t+ t+
CxH

= 2 2
− 2 2
(185)
t+ ∆t ∆y ∆z
2
i,j,k i,j,k−1 i,j,k i−1,j,k

i,j,k Hx − Hx Hz − Hz
t+ ∆t t+ ∆t t+ ∆t t+ ∆t
CyH

= 2 2
− 2 2
(186)
t+ ∆t ∆z ∆x
2
i,j,k i−1,j,k i,j,k i,j−1,k

i,j,k Hy − Hy Hx − Hx
t+ ∆t t+ ∆t t+ ∆t t+ ∆t
CzH

= 2 2
− 2 2
(187)
t+ ∆t ∆x ∆y
2

and where i,j,k i,j,k i,j,k



D̃x = εr Ẽx (188)
t+∆t t+∆t
i,j,k i,j,k i,j,k

D̃y = εr Ẽy (189)
t+∆t t+∆t

20
i,j,k i,j,k i,j,k

D̃z
= εr Ẽz (190)
t+∆t t+∆t

3.4 UPML update equations


UPML update equations derivation is shown on example of eq. (176).
Mark future time field terms:
i,j,k i,j,k

Hx − Hx i,j,k i,j,k ! i,j,k i,j,k !
t+ ∆t
2 t− ∆t
2
1
+ σy + σz Hx + Hx +
∆t 2ε0 t+ ∆t t− ∆t
2 2
 i,j,k i,j,k 

i,j,k i,j,k  Hx + Hx t− ∆t
X2 i,j,k 
∆t  t+ ∆t
2 t− ∆t2

2 σy σz
 + Hx =
ε0  4 T

 T =− ∆t 2

i,j,k

i,j,k σx t i,j,k
c0 ∆tc0 X
− i,j,k CxE E

− i,j,k C x (191)
t ε0 T
T =0
µr µr

Refactor around future field term:


i,j,k i,j,k i,j,k i,j,k ! i,j,k
1 1 1 H
H

Hx − Hx + σy x
+ σz
x
Hx
∆t t+ ∆t ∆t t− ∆t 2ε0 t+ ∆t
2 2 2
i,j,k i,j,k ! i,j,k i,j,k i,j,k i,j,k
1 ∆t
σyHx + σzHx + 2 σyHx σzHx

+ Hx Hx
2ε0 t− ∆t 4ε0 t+ ∆t
2 2

i,j,k i,j,k i,j,k i,j,k i,j,k t− ∆t i,j,k


∆t Hx ∆t Hx X2
Hx Hx

+ 2 σy σz Hx
+ 2 σy σz Hx =
4ε0 t− ∆t ε0 ∆t T
2 T =− 2
i,j,k

i,j,k σxHx t i,j,k
c0 E
∆tc0 X
E

− i,j,k Cx − i,j,k Cx (192)
t ε0 T
T =0
µr µr

21
Collect common field terms:
" i,j,k i,j,k ! i,j,k i,j,k # i,j,k
1 1 Hx
Hx
∆t Hx Hx

+ σy + σz + 2 σy σz Hx
∆t 2ε0 4ε0 t+ ∆t
2
" i,j,k i,j,k ! i,j,k i,j,k # i,j,k
1 1 ∆t
σyHx + σzHx + 2 σyHx σzHx

− + Hx
∆t 2ε0 4ε0 t− ∆t 2

i,j,k i,j,k t− ∆t i,j,k


∆t Hx X2
Hx

+ 2 σy σz Hx =
ε 0 T
T =− ∆t
2
i,j,k

i,j,k σxHx t i,j,k
c0 E
∆tc0 X
E

− i,j,k Cx − i,j,k Cx (193)
t ε0 T
T =0
µr µr

Refactor:
" i,j,k i,j,k ! i,j,k i,j,k # i,j,k
1 1 Hx
Hx
∆t Hx Hx

+ σy + σz + 2 σy σz Hx =
∆t 2ε0 4ε0 t+ ∆t
2
" i,j,k i,j,k ! i,j,k i,j,k # i,j,k
1 1 ∆t
σyHx + σzHx − 2 σyHx σzHx

− Hx
∆t 2ε0 4ε0 t− ∆t
2

i,j,k i,j,k t− ∆t i,j,k


∆t Hx X2
Hx

− 2 σy σz Hx
ε 0 T
T =− ∆t
2
i,j,k
Hx

i,j,k σx t i,j,k
c0 E
∆tc0 X
E

− i,j,k Cx − i,j,k Cx (194)
t ε0 T
T =0
µr µr

22
Final equation:
i,j,k

Hx =
t+ ∆t
2
i,j,k i,j,k ! i,j,k i,j,k
1 1
∆t Hx

∆t − 2ε0 σyHx + σzHx − σ
4ε20 y
σzHx
i,j,k

i,j,k i,j,k ! i,j,k i,j,k Hx
t− ∆t
σyHx + σzHx ∆t Hx
σzHx
1 1
2
∆t + 2ε0 + 4ε 2 σy
0
i,j,k i,j,k

− ∆t σ Hx
ε20 y
σ Hx
z t− ∆t
X 2
i,j,k

+ i,j,k i,j,k ! i,j,k i,j,k Hx
1 1 Hx
Hx
∆t Hx
Hx

T =− ∆t T
∆t + 2ε0 σy + σz + 4ε2 σy σz 2
0

ci,j,k
0


µr i,j,k

E

+ i,j,k i,j,k ! i,j,k i,j,k Cx
t
σyHx + σzHx ∆t Hx
σzHx
1 1

∆t + 2ε0 + 4ε 2 σy
0
i,j,k

Hx
σx

− ∆tc ε0
0 i,j,k

µr t i,j,k
X
E

+ i,j,k i,j,k ! i,j,k i,j,k Cx (195)
1 1 Hx
Hx
∆t Hx
Hx
T =0 T
∆t + 2ε0 σy + σz + 4ε2 σy
0
σz

Extracting coefficients:
i,j,k
1
mHx 0 = i,j,k i,j,k ! i,j,k i,j,k (196)
σyHx + σzHx ∆t Hx Hx
1 1

∆t + 2ε0 + σ
4ε20 y
σz

i,j,k

mHx 1 =
i,j,k " i,j,k i,j,k ! i,j,k i,j,k #
1 1 ∆t Hx
σyHx Hx Hx

mHx 0 − + σz − 2 σy σz (197)
∆t 2ε0 4ε0

i,j,k i,j,k i,j,k i,j,k


∆t Hx Hx

mHx 2 = −mHx 0 2 σ y σ z (198)
ε0

23
i,j,k i,j,k
c0
mHx 3
= −mHx 0 i,j,k (199)

µr
i,j,k

i,j,k i,j,k σxHx
∆tc0
mHx 4 = −mHx 0 i,j,k (200)
ε0
µr

Substitution for sums:


i,j,k t− ∆t
2
i,j,k
X
IHx = Hx (201)
∆t
t− 2 T =− ∆t T
2

i,j,k Xt i,j,k
CxE

ICxE = (202)
t T =0 T

Here:
i,j+1,k i,j,k i,j,k+1 i,j,k

i,j,k Ẽz
− Ẽz Ẽy
− Ẽy
CxE
t t t t
= − (203)
t ∆y ∆z
Final update equation is:
i,j,k i,j,k i,j,k i,j,k i,j,k

Hx = mHx 1 Hx + mHx 2 IHx
t+ ∆t
2 t− ∆t
2 t− ∆t
2
i,j,k i,j,k i,j,k i,j,k
CxE

+ mHx 3 + mHx 4 ICxE (204)
t t

Simple test for above equation is reducing equation for outside PML, where
σxHx , σyHx and σzHx are zeros:
i,j,k

mHx 0 = ∆t (205)

i,j,k

mHx 1 =1 (206)
i,j,k

mHx 2 =0 (207)
i,j,k
c0
mHx 3 = −∆t i,j,k (208)

µr

24
i,j,k

mHx 4 =0 (209)

Update equation is now:


i,j,k i,j,k i,j,k
c0 E

Hx
= 1Hx −∆t i,j,k Cx (210)
∆t ∆t
t+ t− t
2 2
µr

which match with eq. (56):


i,j,k i,j,k i,j,k

Hx − Hx

i,j,k µr
∆t
t+ t− ∆t
CxE

=− 2 2
(211)
t c0 ∆t

Here, summary of UPML update equation is given, by steps:


• Step 1, compute coefficients:

– Step 1.a, compute σs on 2x grid (throw away later):


  3
ε0 2Lx −i+1

 2∆t
i,j,k 
 2Lx 1 <= i <= 2Lx

σx
= 0 2Lx < i < 2Nx − 2Lx + 1
  3
−2N
 ε 2L +i
 0 x x
2Nx − 2Lx + 1 <= i <= 2Nx

2∆t 2Lx
(212)

  3
ε0 2Ly −j+1
i,j,k


 2∆t
 2Ly 1 <= j <= 2Ly

σy = 0 2Ly < j < 2Ny − 2Ly + 1
  3
 ε0 2Ly −2Ny +j

2Ny − 2Ly + 1 <= j <= 2Ny

2∆t 2Ly
(213)

  3
ε0 2Lz −k+1
i,j,k


 2∆t
 2Lz 1 <= k <= 2Lz

σz = 0 2Lz < k < 2Nz − 2Lz + 1
  3
 ε0 2Lz −2Nz +k

2Nz − 2Lz + 1 <= k <= 2Nz

2∆t 2Lz
(214)
H D
– Step 1.b, extract σ s and σ s (throw away later):
i,j,k 2i−1,2j,2k
σxHx

= σx (215)

25
i,j,k 2i−1,2j,2k
σyHx

= σy (216)

i,j,k 2i−1,2j,2k
σzHx

= σz (217)

i,j,k 2i,2j−1,2k
σxHy

= σx (218)

i,j,k 2i,2j−1,2k
σyHy

= σy (219)

i,j,k 2i,2j−1,2k
σzHy

= σz (220)

i,j,k 2i,2j,2k−1
σxHz

= σx (221)

i,j,k 2i,2j,2k−1
σyHz

= σy (222)

i,j,k 2i,2j,2k−1
σzHz

= σz (223)

i,j,k 2i,2j−1,2k−1
σxDx

= σx (224)

i,j,k 2i,2j−1,2k−1
σyDx

= σy (225)

i,j,k 2i,2j−1,2k−1
σzDx

= σz (226)

i,j,k 2i−1,2j,2k−1
σxDy

= σx (227)

i,j,k 2i−1,2j,2k−1
σyDy

= σy (228)

i,j,k 2i−1,2j,2k−1
σzDy

= σz (229)

i,j,k 2i−1,2j−1,2k
σxDz

= σx (230)

26
i,j,k 2i−1,2j−1,2k
σyDz

= σy (231)

i,j,k 2i−1,2j−1,2k
σzDz

= σz (232)

where
1 <= i <= Nx (233)

1 <= j <= Ny (234)

1 <= k <= Nz (235)


– Step 1.c, compute mHx,y,z 0 and mDx,y,z 0 (throw away later):
i,j,k
1
mHx 0 = i,j,k i,j,k ! i,j,k i,j,k
σyHx + σzHx ∆t Hx Hx
1 1

∆t + 2ε0 + σ
4ε20 y
σ z

(236)

i,j,k
1
mHy 0 = i,j,k i,j,k ! i,j,k i,j,k
1 1 H H ∆t Hy
H
∆t + 2ε0 σx y + σz y + σ
4ε20 x
σz y

(237)

i,j,k
1
mHz 0 = i,j,k i,j,k ! i,j,k i,j,k
σxHz + σyHz ∆t Hz
σyHz
1 1

∆t + 2ε0 + σ
4ε20 x

(238)

i,j,k
1
mDx 0 = i,j,k i,j,k ! i,j,k i,j,k
σyDx + σzDx ∆t Dx
σzDx
1 1

∆t + 2ε0 + σ
4ε20 y

(239)

i,j,k
1
mDy 0 = i,j,k i,j,k ! i,j,k i,j,k
1 1 D D ∆t Dy
Dy
∆t + 2ε0 σx y + σz y + σ
4ε20 x
σ z

(240)

27
i,j,k
1
mDz 0 = i,j,k i,j,k ! i,j,k i,j,k
σxDz + σyDz ∆t Dz Dz
1 1

∆t + 2ε0 + σ
4ε20 x
σy

(241)
– Step 1.d, compute other mH s and mD s:
i,j,k i,j,k " i,j,k i,j,k ! i,j,k i,j,k #
1 1 H
H
∆t H
H

mHx 1 = mHx 0 − σy x + σz x − 2 σy x σz x
∆t 2ε0 4ε0
(242)
i,j,k i,j,k i,j,k i,j,k
∆t Hx Hx

mHx 2 = −mHx 0 2 σ y σ z (243)
ε0
i,j,k i,j,k
c0
m Hx 3
= −mHx 0 i,j,k (244)

µr
i,j,k

i,j,k i,j,k σxHx
∆tc0
mHx 4 = −mHx 0 i,j,k (245)
ε0
µr

i,j,k i,j,k " i,j,k i,j,k ! i,j,k i,j,k #


1 1 ∆t Hy
σxHy σzHy Hy

mHy 1
= mHy 0 − + − 2 σx σz
∆t 2ε0 4ε0
(246)
i,j,k i,j,k i,j,k i,j,k
∆t Hy Hy

mHy 2
= −mHy 0
σ σz (247)
ε2 x 0
i,j,k i,j,k
c0
mHy 3 = −mHy 0 i,j,k (248)

µr
i,j,k
H
i,j,k i,j,k σy y
∆tc0
mHy 4 = −mHy 0 i,j,k (249)
ε0
µr

i,j,k i,j,k " i,j,k i,j,k ! i,j,k i,j,k #


1 1 ∆t Hz
σxHz σyHz Hz

mHz 1 = mHz 0 − + − 2 σx σy
∆t 2ε0 4ε0
(250)

28
i,j,k i,j,k i,j,k i,j,k
∆t Hz Hz

mHz 2
= −mHz 0
σ σy (251)
ε2 x
0
i,j,k i,j,k
c0
mHz 3
= −mHz 0 i,j,k (252)

µr

i,j,k

i,j,k i,j,k σzHz
∆tc0
m Hz 4
= −mHz 0 i,j,k (253)
ε0
µr

i,j,k i,j,k " i,j,k i,j,k ! i,j,k i,j,k #


1 1 ∆t Dx
σyDx σzDx Dx

mDx 1
= mDx 0 − + − 2 σy σz
∆t 2ε0 4ε0
(254)
i,j,k i,j,k i,j,k i,j,k
∆t Dx Dx

mDx 2
= −mDx 0
σ σz (255)
ε2 y
0
i,j,k i,j,k

mDx 3
= mDx 0 c0 (256)

i,j,k i,j,k i,j,k


∆tc0 Dx
mDx 4 = mDx 0 σx (257)
ε0

i,j,k i,j,k " i,j,k i,j,k ! i,j,k i,j,k #


1 1 ∆t Dy
σxDy σzDy Dy

mDy 1 = mDy 0 − + − 2 σx σz
∆t 2ε0 4ε0
(258)
i,j,k i,j,k i,j,k i,j,k
∆t Dy Dy

mDy 2
= −mDy 0

2 σx σz (259)
ε 0
i,j,k i,j,k

mDy 3
= mDy 0 c0 (260)

i,j,k i,j,k i,j,k


∆tc0 Dy
mDy 4
= mDy 0
σ (261)
ε0 y

i,j,k i,j,k " i,j,k i,j,k ! i,j,k i,j,k #


1 1 ∆t Dz
σxDz σyDz Dz

mDz 1 = mDz 0 − + − 2 σx σy
∆t 2ε0 4ε0
(262)

29
i,j,k i,j,k i,j,k i,j,k
∆t Dz Dz

mDz 2
= −mDz 0
σ σy (263)
ε2 x 0
i,j,k i,j,k

mDz 3 = mDz 0 c0 (264)

i,j,k i,j,k i,j,k


∆tc0 Dz
mDz 4
= mDz 0
σ (265)
ε0 z
– Step 1.e, compute mE :
i,j,k
1
mE = i,j,k (266)

εr

• Step 2, compute Ẽ curls:


i,j+1,k i,j,k i,j,k+1 i,j,k

i,j,k Ẽz
− Ẽz
Ẽy
− Ẽy
CxE
t t t t
= − (267)
t ∆y ∆z
i,j,k+1 i,j,k i+1,j,k i,j,k

i,j,k Ẽx
− Ẽx
Ẽz
− Ẽz
CyE
t t t t
= − (268)
t ∆z ∆x
i+1,j,k i,j,k i,j+1,k i,j,k

i,j,k Ẽy
− Ẽy Ẽx
− Ẽx
CzE
t t t t
= − (269)
t ∆x ∆y

• Step 3, update Ẽ curl integrations:


i,j,k t
X
i,j,k
E

ICxE
= Cx (270)
t T =0 T

i,j,k Xt i,j,k
E

ICyE
= Cy (271)
t T =0 T
i,j,k Xt i,j,k
CzE

ICzE = (272)
t T =0 T

• Step 4, update H integrations:


i,j,k t− ∆t
2
i,j,k
X
IHx = Hx (273)
∆t
t− 2 T =− ∆t T
2

30
i,j,k t− ∆t
2
i,j,k
X
IHy = Hy (274)
∆t
t− 2 T =− ∆t T
2

i,j,k t− ∆t
2
i,j,k
X
IHz = Hz (275)
∆t
t− 2 T =− ∆t T
2

• Step 5, update H fields:


i,j,k i,j,k i,j,k i,j,k i,j,k

Hx
= m Hx 1
Hx
+ mHx 2
IHx
∆t ∆t ∆t
t+ 2 t− 2 t− 2
i,j,k i,j,k i,j,k i,j,k
CxE

+ mHx 3 + mHx 4 ICxE (276)
t t

i,j,k i,j,k i,j,k i,j,k i,j,k



Hy
= m Hy 1
Hy
+ mHy 2
IHy
∆t ∆t ∆t
t+ 2 t− 2 t− 2
i,j,k i,j,k i,j,k i,j,k
CyE

+ mHy 3 + mHy 4 ICyE (277)
t t

i,j,k i,j,k i,j,k i,j,k i,j,k



Hz
= mHz 1
Hz
+ mHz 2
IHz
∆t ∆t ∆t
t+ 2 t− 2 t− 2
i,j,k i,j,k i,j,k i,j,k
CzE

+ mHz 3 + mHz 4 ICzE (278)
t t

• Step 6, compute H curls:


i,j,k i,j−1,k i,j,k i,j,k−1

i,j,k Hz
− Hz Hy
− Hy
∆t ∆t ∆t ∆t
t+ t+ t+ t+
CxH

= 2 2
− 2 2
(279)
t+ ∆t ∆y ∆z
2

i,j,k i,j,k−1 i,j,k i−1,j,k



i,j,k Hx
− Hx Hz
− Hz
∆t ∆t ∆t ∆t
t+ t+ t+ t+
CyH

= 2 2
− 2 2
(280)
t+ ∆t ∆z ∆x
2

i,j,k i−1,j,k i,j,k i,j−1,k



i,j,k Hy − Hy Hx − Hx
t+ ∆t t+ ∆t t+ ∆t t+ ∆t
CzH

= 2 2
− 2 2
(281)
t+ ∆t ∆x ∆y
2

31
• Step 7, update H curl integrations:
i,j,k t+ ∆t i,j,k
X2
CxH

ICxH = (282)
∆t
t+ 2 T = ∆t T
2

i,j,k t+ ∆t i,j,k
X2
CyH

ICyH = (283)
∆t
t+ 2 T = ∆t T
2

i,j,k t+ ∆t i,j,k
X2
H

ICzH
= Cz (284)
∆t
t+ 2 T = ∆t T
2

• Step 8, update D̃ integrations:


i,j,k t
X
i,j,k

ID̃x
= D̃x (285)
t T =0 T

i,j,k Xt i,j,k

ID̃y = D̃y (286)
t T =0 T
i,j,k Xt i,j,k

ID̃z
= D̃z (287)
t T =0 T

• Step 9, update D̃ fields:


i,j,k i,j,k i,j,k i,j,k i,j,k

D̃x
= mDx 1
D̃x
+ mDx 2 ID̃x
t+∆t t t
i,j,k i,j,k i,j,k i,j,k
H

+ mDx 3 Cx + mDx 4 ICxH (288)
t+ ∆t
2 t+ ∆t
2

i,j,k i,j,k i,j,k i,j,k i,j,k



D̃y = mDy 1 D̃y + mDy 2 ID̃y
t+∆t t t
i,j,k i,j,k i,j,k i,j,k
CyH

+ mDy 3 + mDy 4 ICyH (289)
∆t ∆t
t+ 2 t+ 2

i,j,k i,j,k i,j,k i,j,k i,j,k



D̃z
= mDz 1
D̃z
+ mDz 2 ID̃z
t+∆t t t
i,j,k i,j,k i,j,k i,j,k
H

+ mDz 3 Cz + mDz 4 ICzH (290)
t+ ∆t
2 t+ ∆t
2

32
• Step 10, inject source:
i,j,k i,j,k

D̃x = D̃x + srcx (t) (291)
t+∆t t+∆t

i,j,k i,j,k

D̃y = D̃y + srcy (t) (292)
t+∆t t+∆t
i,j,k i,j,k

D̃z
= D̃z + srcz (t) (293)
t+∆t t+∆t

• Step 11, compute Ẽ:


i,j,k i,j,k i,j,k

Ẽx
= mE D̃x (294)
t+∆t t+∆t

i,j,k i,j,k i,j,k



Ẽy
= mE D̃y (295)
t+∆t t+∆t
i,j,k i,j,k i,j,k

Ẽz
= mE D̃z (296)
t t+∆t

3.5 2D Ez mode with UPML


In 2D Ez mode all derivatives in z directions are 0:

=0 (297)
∂z
and there is no need for PML termination in z axis:

σz (z) = 0 (298)

sz (z) = 1 (299)
Also Ẽx , Ẽy and Hz are eliminated.
UPML update equation for 2D Ez mode are given by next steps:
• Step 1, compute coefficients:

– Step 1.a, compute σs on 2x grid (throw away later):

 ε0 2Lx −i+1 3
  
i,j 

 2∆t 2L x
1 <= i <= 2Lx

σx = 0 2Lx < i < 2Nx − 2Lx + 1
 ε0 2Lx −2Nx +i 3

  

2∆t 2Lx 2Nx − 2Lx + 1 <= i <= 2Nx
(300)

33
  3
ε0 2Ly −j+1
i,j



 2∆t 2L y
1 <= j <= 2Ly

σy = 0 2Ly < j < 2Ny − 2Ly + 1
 ε0 2Ly −2Ny +j 3

  

2∆t 2Ly 2Ny − 2Ly + 1 <= j <= 2Ny
(301)
– Step 1.b, extract σ H s and σ D s (throw away later):
i,j 2i−1,2j
σxHx = σx

(302)

i,j 2i−1,2j
σyHx = σy

(303)

i,j 2i,2j−1
σxHy

= σx (304)
i,j 2i,2j−1
σyHy = σy

(305)

i,j 2i−1,2j−1
σxDz = σx

(306)
i,j 2i−1,2j−1,
σyDz

= σy (307)

where
1 <= i <= Nx (308)

1 <= j <= Ny (309)


– Step 1.c, compute mHx,y 0 and mDx,y 0 (throw away later):
i,j
1
mHx 0 = i,j (310)
Hx
1 1

∆t + σ
2ε0 y

i,j
1
mHy 0 = i,j (311)
1 1 Hy
∆t + 2ε0 σx

i,j
1
mDz 0 = i,j i,j ! i,j i,j
Dz Dz ∆t Dz
σyDz
1 1

∆t + 2ε0 σx + σy + σ
4ε20 x

(312)

34
– Step 1.d, compute other mH s and mD s:
i,j i,j " i,j #
1 1 Hx
mHx 1 = mHx 0
− σ (313)
∆t 2ε0 y
i,j i,j
c0
mHx 3 = −mHx 0
i,j (314)

µr

i,j
Hx

i,j i,j σx
∆tc0
mHx 4 = −mHx 0 i,j (315)
ε0
µr

i,j i,j " i,j #


1 1 H

mHy 1 = mHy 0 − σx
y
(316)
∆t 2ε0
i,j i,j
c0
mHy 3 = −mHy 0 i,j (317)

µr

i,j
H
i,j i,j σy y
∆tc0
mHy 4 = −mHy 0 i,j (318)
ε0
µr

i,j i,j " i,j i,j ! i,j i,j #


1 1 ∆t Dz
σxDz σyDz Dz

mDz 1 = mDz 0 − + − 2 σx σy
∆t 2ε0 4ε0
(319)
i,j i,j
∆t D i,j D i,j


mDz 2 = −mDz 0
σ z
σy
z
(320)
ε2 x
0
i,j i,j

mDz 3 = mDz 0 c0
(321)

– Step 1.e, compute mE :


i,j
1
mE = i,j (322)

εr

35
• Step 2, compute Ẽ curls:
i,j+1 i,j

i,j Ẽz
− Ẽz
CxE =
t t
(323)
t ∆y
i+1,j i,j

i,j Ẽz
− Ẽz
CyE = −
t t
(324)
t ∆x

• Step 3, update Ẽ curl integrations:


t
i,j X i,j
E

ICxE =
Cx (325)
t T =0 T

t
i,j X i,j
CyE

ICyE = (326)
t T =0 T

• Step 4, update H fields:


i,j i,j i,j

Hx
= mHx 1 Hx
∆t ∆t
t+ 2 t− 2
i,j i,j i,j i,j
+ mHx 3 CxE + mHx 4 ICxE

(327)
t t

i,j i,j i,j



Hy
= mHy 1 Hy
∆t ∆t
t+ 2 t− 2
i,j i,j i,j i,j
E

+ mHy 3 Cy + mHy 4 ICyE
(328)
t t

• Step 5, compute H curl:


i,j i−1,j i,j i,j−1

i,j Hy − Hy Hx − Hx
t+ ∆t t+ ∆t t+ ∆t t+ ∆t
CzH

= 2 2
− 2 2
(329)
t+ ∆t ∆x ∆y
2

• Step 6, update D̃ integration:


t
i,j X i,j

ID̃z = D̃z (330)
t T =0 T

36
• Step 7, update D̃ field:
i,j i,j i,j i,j i,j

D̃z = mDz 1 D̃z + mDz 2 ID̃z

t+∆t t t
i,j i,j
H

+ mDz 3 Cz
(331)
∆t
t+ 2

• Step 8, inject source:


i,j i,j

D̃z = D̃z + srcz (t) (332)
t+∆t t+∆t

• Step 9, compute Ẽ:


i,j i,j i,j

Ẽz = mE D̃z
(333)
t t+∆t

4 Energy in grid
Electromagnetic energy is electromagnetic energy density integrated over cell
volume V : Z
W = u(v)dv (334)
V
Electromagnetic energy density is defined as:
1
u= (E · D + H · B) (335)
2
Because modeling isotropic materials and µr = 1, electromagnetic energy
density could be simplified:
1 1
u= ( D2 + µ0 H2 ) (336)
2 ε0 εr
After normalization:  
µ0 1 2
u= D + H2 (337)
2 εr
After discretization:
 
i,j,k 2 i,j,k 2
i,j,k
µ0  1
u = D̃ + H (338)

2 εr

∆t t+ ∆t t+ ∆t
t+
2 2 2

Discretized energy:
 
i,j,k 2 i,j,k 2
i,j,k
µ0  1
W = ∆x∆y∆z D̃ + H (339)

2 εr

t+ ∆t
t+ ∆t t+ ∆t
2 2 2

37
D̃ and H have to be space averaged to middle of the cell, and to be time averaged
to same time moment. t + ∆t 2 moment in time is chosen because it is easier for
implementation. Here, Euclidean length is defined as:
v
i,j,k u i,j,k
i,j,k i,j,k
u 2 2

2

U = U +U + U (340)
t
t+ ∆t t+ ∆t t+ ∆t t+ ∆t
2 2 2 2

and from that


i,j,k 2
i,j,k i,j,k i,j,k
2 2 2

U =U +U +U (341)

t+ ∆t t+ ∆t t+ ∆t t+ ∆t
2 2 2 2

After time averaging D̃ we have:

i,j,k 2 i,j,k 2
 
 D̃ + D̃

i,j,k 2 
i,j,k 
µ 1
0  t
t+∆t

W = ∆x∆y∆z + H (342)

2 ε 2
 
∆t
t+ 2
 r ∆t 
t+ 2
 

Expanding to scalar form:


i,j,k

W =
∆t
t+ 2
i,j,k i,j,k i,j,k !
µ0 1
D̃x2 D̃y2 D̃z2

∆x∆y∆z + +
2 εr t+ ∆t t+ ∆t t+ ∆t
2 2 2
i,j,k i,j,k i,j,k !
µ0 2
2
2

+ ∆x∆y∆z Hx + Hy + Hz (343)
2 t+∆t ∆t
t+ ∆t
t+
2 2 2

Where: i,j,k i,j,k



i,j,k D̃x
+ D̃x
t t+∆t

D̃x = (344)
t+ ∆t 2
2

i,j,k i,j,k

i,j,k D̃y
+ D̃y
t t+∆t

D̃y = (345)
t+ ∆t 2
2

i,j,k i,j,k

i,j,k D̃z
+ D̃z
t t+∆t

D̃z = (346)
t+ ∆t 2
2

This formulation still does not have space averaging.

38
For 2D Ez mode energy is formulated as:
i,j i,j i,j i,j !!
µ0 1 2
2
2

W = ∆x∆y D̃z + Hx + Hy (347)
t+ ∆t 2 εr t+ ∆t t+ ∆t t+ ∆t
2 2 2 2

where i,j i,j



i,j,k D̃z + D̃z
t t+∆t

D̃z = (348)
t+ ∆t 2
2

Should be mentioned that all D̃s and Hs are positioned to walls of the Yee
cell, so space averaging should be done to have fields in the middle of the Yee
cell. Final equations is:
 i,j i+1,j i,j+1 i+1,j+1 2

i,j  D̃z + D̃z + D̃z + D̃z 
µ0 1  t+ ∆t
2 t+ ∆t
2 t+ ∆t
2 t+ ∆t
2

W = ∆x∆y   +
t+ ∆t 2 εr 
 4 
2


i,j i+1,j 2  i,j i,j+1 2 

 Hx + Hx   Hy + Hy  
µ0 

t+ ∆t
2 t+ ∆t
2 
  t+ ∆t
2 t+ ∆t  
2  
∆x∆y   +  (349)
2  2 


 2  
 
 

where time averaged D̃z is:


i,j i,j

i,j D̃z + D̃z

t t+∆t

D̃z = (350)
t+ ∆t 2
2

5 Source function
5.1 Dolph-Chebyshev Window
Input parameters for Dolph-Chebyshev Window window are:
• A - minimum attenuation in dB. Should not be greater than -40 dB.
• Fc - maximum main lobe half-width (cut-off frequency, stop-band edge),
in cycles/sample (normalized frequency). Must be in range [0, 0.5], where
1 indicate sampling frequency.
Length of window N is defined as:

N = 2M + 1 (351)

39
where
cosh−1 (1/r)
 
1
M= (352)
2 cosh−1 (sec(ωc /2))
Here r, the ripple ratio, is defined as:
1
r= A (353)
10 −20
and ωc , the cut-off frequency, in radians/sample, defined as:

ωc = 2πFc (354)

After calculating N real Fc is:


 
1 1
Fc = cos−1 (355)
π x0

Window is then defined as:


" M     #
1 1 X iπ 2πni
w(n) = +2 TN −1 x0 cos cos (356)
N r i=1
N N

where   
1 1
x0 = cosh cosh−1 (357)
N −1 r
and Chebyshev polynomial of the first kind is defines as:
(
cos(n cos−1 (x)) |x| < 1
Tn (x) = (358)
cosh(n cosh−1 (x)) |x| > 1

Note that:
−M ≤ n ≤ M (359)

40

You might also like