Professional Documents
Culture Documents
FDTD Formulas
FDTD Formulas
Milos Subotic
milos.subotic.sm@gmail.com
January 25, 2023
∇·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.
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
µ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
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
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 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
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)
∂y ∂z t+ ∆t ∆y ∆z
2
(66)
∂z ∂x t+ ∆t ∆z ∆x
2
(67)
∂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
∂ Ẽ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
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
• 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
• 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
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)
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
jω
∇ × H(ω) = [s]D̃(ω) (105)
c0
∂ ∂
− ∂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)
−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)
13
3.2 UPML time-domain analytic formulations
Some important Fourier transformations are:
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 −∞
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)
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
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
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
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
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
20
i,j,k i,j,k i,j,k
D̃z
= εr Ẽz (190)
t+∆t t+∆t
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
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
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
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
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
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)
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)
(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
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
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 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
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
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
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
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
σ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:
ε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)
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
H
i,j i,j σy y
∆tc0
mHy 4 = −mHy 0 i,j (318)
ε0
µ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
t
i,j X i,j
CyE
ICyE = (326)
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
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
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
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
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
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
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)
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