Professional Documents
Culture Documents
Three-Dimensional FDTD: Lecture Outline
Three-Dimensional FDTD: Lecture Outline
Computational Science:
Introduction to Finite-Difference Time-Domain
Three-Dimensional FDTD
Lecture Outline
• Two Common Grid Strategies
• Simplifying the update equations for crossed grating devices
• Boundary conditions
• Plane wave source using the total-field/scattered-field technique
• Calculation of transmittance and reflectance
• MATLAB’s slice() command for 3D visualization
Slide 2
1
1/23/2020
Slide 3
z-lo
x-lo y-hi
y-lo x-hi
z-hi
Slide 4
2
1/23/2020
Spacer Region
Unit cell of
model valid in here
real device
Spacer Region
Transmission Plane
real device
FDTD grid
Slide 5
Simplified Update
Equations for Crossed
Grating Devices
Slide 6
3
1/23/2020
2D Grid
40×200 cells = 8,000 cells
Slide 7
Slide 8
4
1/23/2020
mHx 2
i , j ,k
mHx 0
1
i, j ,k
xx
c0
i, j ,k
mHx3
i , j ,k
mHx 0
1
i , j ,k
c0 t x
0 xx i , j ,k
mHx 4
i , j ,k
mHx 0
1
i , j ,k
t
02 H i , j ,k
y H i , j ,k
z
E z E z E y E y
t i , j 1, k i , j ,k i , j , k 1 i , j ,k
t t
C
2
E i , j ,k
H E i , j ,k
i , j ,k i , j ,k i, j ,k
I CEx t x t I Hx t x T C x t t t
t t
t
2 T 0 y z
T 0
The third and fourth terms are eliminated from the update equation.
i , j ,k
H x t t 2 mHx1 i , j ,k
H i , j ,k
x t t 2 mHx 2 i , j ,k
C E i , j ,k
x t
mHx 3
i , j ,k
I i , j ,k
CEx t mHx 4 i , j ,k
I i , j ,k
Hx t
Slide 9
The curl is computed inside the main FDTD loop, but before the update equation.
E z E z E y E y
i , j 1, k i , j ,k i , j , k 1 i , j ,k
E i, j ,k
C x t t t
t t
y z
The update equation is computed inside the main FDTD loop immediately after the
curl term is calculated.
i, j ,k
H x t t 2 mHx1 i , j ,k
H i , j ,k
x t t 2 mHx 2 i , j ,k
C E i , j ,k
x t
Slide 10
5
1/23/2020
The curl term is computed inside the main FDTD loop, but before the update
equation.
E x E x E z E z
i , j , k 1 i , j ,k i 1, j , k i , j,k
E i , j ,k
C y t t t
t t
z x
The update equation is computed inside the main FDTD loop immediately after the
curl term is calculated.
Hy
i , j ,k
t
t
2
mHy1
i, j ,k
H i , j ,k
y t t
2
mHy 2 i , j ,k
C E i , j ,k
y t
Slide 11
The integration term and curl are computed inside the main FDTD loop, but before
the update equation.
E y E y E x E x
i 1, j , k i , j ,k i , j 1, k i , j ,k
t
I CEz
i , j ,k
t
C
T 0
E i , j ,k
z t C E i , j ,k
z t t
x
t
t
y
t
The update equation is computed inside the main FDTD loop immediately after the
integration term and curl term are updated.
Hz
i , j ,k
t
t
2
Hz
i , j ,k
t
t
2
mHz 2 i, j ,k
C E i , j ,k
z t
mHz 3
i , j ,k
I i , j ,k
CEz t
Slide 12
6
1/23/2020
The curl term is computed inside the main FDTD loop, but before the update
equation.
i , j ,k i , j 1, k i , j ,k i , j , k 1
Hz Hz Hy Hy
H i , j ,k t 2t t 2t t 2t t 2t
C x t t
2 y z
The update equation is computed inside the main FDTD loop immediately after the
curl term is calculated.
D x
i, j ,k
t t
mDx1
i , j ,k
D x t
i , j ,k
mDx 2
i, j ,k
C H i, j ,k
x t t
2
Slide 13
The integration terms are computed inside the main FDTD loop, but before the
update equation.
i , j ,k i , j , k 1 i , j ,k i 1, j , k
i , j ,k
Hx t 2t
Hx t 2t
Hz t 2t
Hz t 2t
C yH
t 2t z x
The update equation is computed inside the main FDTD loop immediately after the
integration terms are updated.
D y
i , j ,k
t t
mDy1
i, j ,k
D y t
i , j ,k
mDy 2
i, j ,k
C H i, j ,k
y t t
2
Slide 14
7
1/23/2020
c0 t
2
i , j ,k i , j ,k i, j ,k
mDz 2 c0 t mDz 3 zD
0
The integration term and curl term are computed inside the main FDTD loop, but
before the update equation.
t i , j ,k i 1, j , k
t i , j ,k i , j 1, k
Hy Hy Hx Hx
2
i , j ,k H i , j ,k H i , j ,k t 2t t 2t t 2t t 2t
I CHz t C z T C z t t
t
2
2 x y
T 0
The update equation is computed inside the main FDTD loop immediately after the
integration and curl terms are updated.
D z
i , j ,k
t t
D z
i , j ,k
t
mDz 2
i , j ,k
C H i , j ,k
z t t
2
mDz 3
i, j ,k
I CHz
i, j ,k
t
t
2
Slide 15
The update equations are computed inside the main FDTD loop.
E x
i, j,k
mEx1
t t
i, j,k
D x i, j,k
t t
E y
i, j,k
t t
mEy1
i, j,k
D i, j,k
y t t
E z
i, j,k
t t
mEz1
i, j,k
D i, j,k
z t t
Slide 16
8
1/23/2020
Boundary Conditions
Slide 17
We will implement periodic boundary conditions all the way around the grid.
Slide 18
9
1/23/2020
Curl of
The curl equations are
E z E z E y E y
i , j 1, k i , j ,k i , j , k 1 i , j ,k
E i , j ,k
C x t t t
t t
y z
E x E x E z E z
i , j , k 1 i , j ,k i 1, j , k i , j ,k
E i , j ,k
C y t t t
t t
z x
E y E y E x E x
i 1, j , k i , j ,k i , j 1, k i , j ,k
E i , j ,k
C z t t t
t t
x y
Problems arise when calculating these at the x-high, y-high, and z-high boundaries.
Slide 19
Curl of
The curl equations are
i , j ,k i , j 1, k i , j ,k i , j , k 1
i , j ,k Hz Hz Hy Hy
t 2t t 2t t 2t t 2t
C xH
t 2t y z
i , j ,k i , j , k 1 i , j ,k i 1, j , k
H x t t H x t t Hz Hz
H i , j ,k t 2t t 2t
C y t t 2 2
2 z x
i , j ,k i 1, j , k i , j 1, k
Hy Hy i , j ,k
H x t t H x
H i , j ,k t 2t t 2t t 2t
C z t t 2
2 x y
Problems areise when calculating these at the x-low, y-low, and z-low boundaries.
Slide 20
10
1/23/2020
E i , j 1,k E i , j ,k E i , j ,k 1 E i , j ,k
zt z t
y t y t
for j N y and k N z
y z
E z E z E y E y
i ,1, k i , N y ,k i , N y , k 1 i , N y ,k
t t
t t
for j N y and k N z
E i , j ,k y z
C x t
E z E z E y E y
i , j 1, N z i, j,Nz i , j ,1 i, j,N z
t t
t t
for j N y and k N z
y z
i ,1, N z
E z t E z E y E y
i,N y ,Nz i , N y ,1 i, N y , Nz
t
t t
for j N y and k N z
y z
Slide 21
% Compute CEx
for nx = 1 : Nx
for ny = 1 : Ny-1
for nz = 1 : Nz-1
CEx(nx,ny,nz) = (Ez(nx,ny+1,nz) - Ez(nx,ny,nz))/dy ...
- (Ey(nx,ny,nz+1) - Ey(nx,ny,nz))/dz;
end
CEx(nx,ny,Nz) = (Ez(nx,ny+1,Nz) - Ez(nx,ny,Nz))/dy ...
- (Ey(nx,ny,1) - Ey(nx,ny,Nz))/dz;
end
for nz = 1 : Nz-1
CEx(nx,Ny,nz) = (Ez(nx,1,nz) - Ez(nx,Ny,nz))/dy ...
- (Ey(nx,Ny,nz+1) - Ey(nx,Ny,nz))/dz;
end
CEx(nx,Ny,Nz) = (Ez(nx,1,Nz) - Ez(nx,Ny,Nz))/dy ...
- (Ey(nx,Ny,1) - Ey(nx,Ny,Nz))/dz;
end
Note: It important for speed and efficiency that the boundary conditions be
incorporated without using if/then statements. This should be done explicitly.
Slide 22
11
1/23/2020
H i , j ,k H i , j 1,k H i , j ,k H i , j ,k 1
z t 2t z t t
2
y t t
2
y t t
2
for j 1 and k 1
y z
i ,1, k 1
H i ,1,k H i , N y ,k H i ,1, k
y t t H y t t
z t t
2
z t t
2
2 2
for j 1 and k 1
y z
H i , j ,k
C x t t i , j ,1 i, j,Nz
2
H z i , j,1t H z i , jt1,1 H y t H y t
t 2 t 2
t 2 t 2
for j 1 and k 1
y z
i ,1,1 i , N ,1 i ,1,1 i ,1, N z
H z t t H z t yt H y t H y t
2
2 2
t 2
t
for j 1 and k 1
y z
Slide 23
Note: It important for speed and efficiency that the boundary conditions be
incorporated without using if/then statements. This should be done explicitly.
Slide 24
12
1/23/2020
Slide 25
TF/SF Framework
scattered-field
Scattered-
Field
Reflection Plane
TF/SF Planes
Total-
Spacer Region Field
Unit cell of
total-field
real device
Spacer Region
Transmission Plane
Slide 26
13
1/23/2020
Corrections
Scattered-
Field
Spacer Region
Total-
Unit cell of Field
real device
Spacer Region
Transmission Plane
Slide 27
E z E z E y E y
i , j 1, k i , j ,k i , j , k 1 i , j ,k
E i , j ,k
C x t t t
t t
y z
E x E x E z E z
i , j , k 1 i , j ,k i 1, j , k i , j ,k
E i , j ,k
C y t t t
t t
z x
E y E y E x E x
i 1, j , k i , j ,k i , j 1, k i , j ,k
E i , j ,k
C z t t t
t t
x y
Slide 28
14
1/23/2020
E z E z E y E y
i , j 1, k i , j ,k i , j , k 1 i , j ,k
E i , j ,k 1 src i , j ,k 1
C x t t t
t t
Ey
y z z t
E x E x E z E z
i , j , k 1 i , j ,k i 1, j , k i , j ,k
E i , j ,k 1 src i , j ,k 1
C y t t t
t t
Ex
z x z t
i , j ,k i , j 1, k i , j ,k i , j , k 1
Hz Hz Hy Hy
H i , j ,k t 2t t 2t t 2t t 2t
C x t t
2 y z
i , j ,k i , j , k 1 i , j ,k i 1, j , k
H x t t H x t t Hz Hz
H i , j ,k t 2t t 2t
C y t t 2 2
2 z x
i , j ,k i 1, j , k i , j 1, k
Hy Hy i , j ,k
H x t t H x
H i , j ,k t 2t t 2t t 2t
C z t t 2
2 x y
Slide 30
15
1/23/2020
i , j ,k i , j 1, k i , j ,k i , j , k 1
i , j ,k Hz Hz Hy Hy 1 src i , j ,k 1
t 2t t 2t t 2t t 2t
C xH H y t
t 2t y z z t 2
i , j ,k i , j , k 1 i , j ,k i 1, j , k
H x t t H x t t H z t t H z 1 src i , j ,k 1
H i , j ,k t 2t
C y t t 2 2
2
H x t
2 z x z t 2
Slide 31
Total- t
Spacer Region
E
Field src i , j , ksrc
y t
Unit cell of
real device
Spacer Region
Transmission Plane
Slide 32
16
1/23/2020
Polarization Vector
The electric field can be polarized in any direction in the x-y plane.
E ysrc
i , j , ksrc
Py cos t k0 ninc z
t
Slide 33
i , j , ksrc 1 r,src
H xsrc Py cos t 2t k0 ninc ksrc 1 z
t 2t r,src
i , j , ksrc 1 r,src
H ysrc Px cos t 2t k0 ninc ksrc 1 z
t 2t r,src
Slide 34
17
1/23/2020
E xsrc
i , j , ksrc
Px g t
t
E ysrc
i , j , ksrc
Py g t
t
i , j , ksrc 1 r,src
H xsrc Py g t t
t 2t r,src
i , j , ksrc 1 r,src
H ysrc Px g t t
t 2t r,src
nsrc z t
t
2c0 2
Slide 35
Gaussian Pulse
Slide 36
18
1/23/2020
Calculation of Transmittance
and Reflectance
Slide 37
Frequency
Normalize to Source
Calculate Sz
Slide 38
19
1/23/2020
Ex ,ref E y ,ref
Reflection Plane
TF/SF Planes
Spacer Region
Note: We do not calculate Ez.
We will do this another way after FDTD.
Unit cell of
real device
Transmission Plane
Slide 39
20
1/23/2020
2 m
k x m k x ,inc m , , 2, 1, 0,1, 2,
x
2 n
k y n k y ,inc n , , 2, 1, 0,1, 2,
y
k xy m, n k x m xˆ k y n yˆ
k xy m, n k x m xˆ k y n yˆ
Slide 42
21
1/23/2020
k z ,ref m, n k0 nref k x2 m k y2 n
2
% Compute Longitudinal Wave Vector Components
k0 = 2*pi/lam;
k z ,trn m, n k0 ntrn m k n
2
k 2
x
2
y
kzinc = k0*nref;
kzR = sqrt((k0*nref)^2 - kx.^2 - ky.^2);
kzT = sqrt((k0*ntrn)^2 - kx.^2 - ky.^2);
The center few modes will have real kz’s. These correspond to propagating waves. The
others will have imaginary kz’s and correspond to evanescent waves that do not transport
energy.
k xy m, n k z m, n Slide 43
kref m, n ktrn m, n
Slide 44
22
1/23/2020
Normalize to Source
When a Gaussian source is used, the energy decreases at high frequencies.
If nothing is done, lower energy observed at the high frequencies will be confused with low reflectance or
transmittance.
The solution is to normalize the steady-state fields to the source.
Slide 46
23
1/23/2020
Calculate Sz
It is not necessary to calculate the steady-state field Ez. Instead, calculate Sz from Sx and Sy
using the divergence equation.
r E m, n 0
E m, n 0
jk m x jk n y jk m , n z
S m, n e x e y e z 0
jk x m x jk y n y jk z m , n z jk m x jk n y jk m , n z jk m x jk n y jk m , n z
S x m, n e e e S y m, n e x e y e z S z m, n e x e y e z 0
x y z
k x m S x m, n k y n S y m, n k z m, n S z m, n 0
k x m S x m, n k y n S y m, n
S z m, n
k z m, n
Slide 47
2 k f ; m, n
DE ref f ; m, n Sref f ; m, n Re z ,ref
k z ,inc f
2 k f ; m, n r ,ref
DE trn f ; m, n S trn f ; m, n Re z ,trn
k z ,inc f r ,trn
Slide 48
24
1/23/2020
It is always good practice to check for conservation of energy. When no gain or loss is
incorporated into the model, the sum of the reflectance and transmittance should be 100%.
Slide 49
MATLAB’s slice()
Command for 3D Visualization
Slide 50
25
1/23/2020
slice(X,Y,Z,V,sx,sy,sz)
sx is a 1D array of numbers of where to place slices that are perpendicular to the x-axis.
sy is a 1D array of numbers of where to place slices that are perpendicular to the y-axis.
sz is a 1D array of numbers of where to place slices that are perpendicular to the z-axis.
Slide 51
% Draw Ex Field
slice(Y,X,-Z,Ex,0,0,0);
axis equal tight off;
colorbar;
view(-75,20);
Slide 52
26