Vous êtes sur la page 1sur 71

T H E U N I V E R S I T Y O F T U L S A

THE GRADUATE SCHOOL

FINITE DIFFERENCE TIME DOMAIN (FDTD)

SIMULATION OF OPTICAL WAVEGUIDES

by
Phillip Forkner

A thesis submitted in partial fulllment of

the requirements for the degree of Master of Science

in the Discipline of Physics

The Graduate School

The University of Tulsa

2016
T H E U N I V E R S I T Y O F T U L S A

THE GRADUATE SCHOOL

FINITE DIFFERENCE TIME DOMAIN (FDTD)

SIMULATION OF OPTICAL WAVEGUIDES

by
Phillip Forkner

A THESIS

APPROVED FOR THE DISCIPLINE OF

PHYSICS

By Thesis Committee

, Chair
Scott A. Holmstrom

George P. Miller

Peter G. LoPresti

ii
ABSTRACT

Phillip Forkner (Master of Science in Physics)

Finite Dierence Time Domain (FDTD) Simulation of Optical Waveguides

Directed by Scott A. Holmstrom

67 pp., Chapter 5: Conclusion

(206 words)

The main objective of this work is to compute the amount of light reected at the terminus of

a rib waveguide. In photonics, a waveguide is anything which guides light from one point to another

in a photonic circuit. A ber optic cable is one example of a waveguide  a rib waveguide is another.

As the light moves through the circuit, it encounters boundaries between the devices where some light is

reected and some is transmitted. Computing these reectivities from rst principles is very dicult, if

not impossible, so numerical methods are used. One such method is the Finite Dierence Time Domain

(FDTD) method which approximates Maxwell's equations and iterates them over time using a computer. I

used an implementation of the FDTD method developed at the Massachusetts Institute of Technology (MIT)

called MIT Electromagnetic Equation Propagation (Meep). The results of Meep are compared to published

results that were created with another implementation of FDTD called Lumerical and it is shown that

there is good agreement between the two. Finally, Meep is applied to rib waveguides and compared with

a semi-analytical approach created by Dr. Holmstrom's group. In this case, there is good agreement for a

certain range of waveguide thicknesses, but disagreement for others.

iii
ACKNOWLEDGEMENTS

I would like to express sincere thanks to my advisor, Dr. Scott Holmstrom. The completion of this

thesis was made possible through his continuous help and encouragement even when I did not deserve it. I

would also like to thank the people of the University of Tulsa (TU) Department of Physics and Engineering

Physics. Specically, its chair, Dr. George Miller. The TU physics department is a great place to study and

to teach and this is due in large part to Dr. Miller's constant eorts. Also, Dr. Peifen Zhu and Dr. Scott

Noble for letting me use their computers and for their help and input regarding this project. Furthermore,

I extend many thanks to the graduate school, especially to Dr. Richard Redner and Hope Geiger. You are

so ecient and expedient and provide so much. Finally, I would like to thank my wife, Dae Castaneda. You

helped make this possible. You made this worth it.

iv
TABLE OF CONTENTS

ABSTRACT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii

ACKNOWLEDGEMENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iv

TABLE OF CONTENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi

LIST OF FIGURES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii

CHAPTER 1: INTRODUCTION 1

CHAPTER 2: MAXWELL'S EQUATIONS 3


2.1 Microscopic to Macroscopic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 The Linear Regime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.1 Boundary Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 Isotropic Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.1 Electromagnetics as an Eigenvalue Problem . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4 Waveguides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.1 Modes of Propagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4.2 Planar Waveguides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.3 Rib Waveguide  Eective Index Method . . . . . . . . . . . . . . . . . . . . . . . . . . 15

CHAPTER 3: FINITE DIFFERENCE TIME DOMAIN (FDTD) METHOD 19


3.1 What is the FDTD Method? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2 Advantages and Disadvantages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3 Finite Dierence Approximations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4 The Yee Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.5 Boundaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

CHAPTER 4: MIT ELECTROMAGNETIC EQUATION PROPAGATION (MEEP) 28


4.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.2 The .ctl File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.3 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.3.1 Symmetric Waveguide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.3.2 Asymmetric Waveguide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.3.3 Rib Waveguide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

CHAPTER 5: CONCLUSION 44

BIBLIOGRAPHY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

v
APPENDIX A: PROGRAM LISTINGS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
A.1 Eective Index Method Mathematica Notebook . . . . . . . . . . . . . . . . . . . . . . 46
A.2 Tandy Supercomputer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
A.2.1 Meep Install Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
A.2.2 Sample .bsub Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
A.3 Meep .ctl Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
A.3.1 Symmetric Waveguide in Two Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . 57
A.3.2 Symmetric Waveguide in Three Dimensions . . . . . . . . . . . . . . . . . . . . . . . . 59
A.3.3 Asymmetric Waveguide in Three Dimensions . . . . . . . . . . . . . . . . . . . . . . . 61
A.3.4 Rib Waveguide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

vi
LIST OF FIGURES

2.1 Boundary conditions for the elds. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2 Cross section of a three layer planar waveguide. . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.3 Depiction of a ray propagating down a planar waveguide. . . . . . . . . . . . . . . . . . . . . 16

2.4 The eective index method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.5 TE mode prole using the eective index method. . . . . . . . . . . . . . . . . . . . . . . . . 17

2.6 TE mode prole from http://www.computational-photonics.eu/eims.html . . . . . . . . 18

2.7 Eigenmode prole created with Meep. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.1 Forward and backward dierence approximations. . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.2 The central dierence approximation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.3 The Yee cell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.4 Yee cell showing encircling elds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.1 A z=0 cross-section of the computational lattice. . . . . . . . . . . . . . . . . . . . . . . . . 31

4.2 A y=0 cross-section of the computational lattice. . . . . . . . . . . . . . . . . . . . . . . . . 32

4.3 Meep versus Lumerical. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.4 2D versus 3D for a symmetric waveguide. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.5 2D versus 3D for an asymmetric waveguide. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4.6 Asymmetric versus a rib waveguide. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.7 Meep, R4 , and Rmeas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.8 Rib waveguide for three dierent rib widths. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4.9 Guided TM mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

vii
CHAPTER 1

INTRODUCTION

Photonics is a burgeoning eld in electromagnetics where photonic circuits are used to manipulate

light in order to transmit information. This can be compared with electronics where electronic circuits are

used to manipulate electrons in order to transmit information. Electronic circuits are composed of electronic

devices such as resistors, capacitors, and wires whereas photonic circuits are composed of photonic devices
such as diodes, lasers, and optical bers. In both cases, a good understanding of the underlying physics is

necessary in order to design the devices and much of this understanding stems from the classical theory of

electromagnetism.

Perhaps the most basic electronic device is the wire. It is used to guide an electronic signal from

one point to another. In photonics, a waveguide is used. A familiar example of a waveguide is the ber optic

cable. When a wire is used to connect dierent electronic devices, the electrical signal encounters interfaces,

or boundaries, between the devices where, for example, a contact potential occurs. In photonics, as light

passes through the circuit, it encounters interfaces between the waveguides and devices that make up the

circuit. At each interface, some light is transmitted and some is reected. Thus, knowing how much light

is reected at a given interface is critical to designing photonic circuits. This characteristic is called the

reectivity.
One method of analyzing these devices is to apply classical electromagnetic theory which is generally

attributed to James Clerk Maxwell who was the rst to combine electricity and magnetism into a single

mathematical theory. However, using this theory, analytical solutions for the reectivities are not known

except in the simplest of cases. Thus, approximate methods are used such as the Finite Dierence Time

Domain (FDTD) method. The approximated equations are then iterated over time using a computer and

the desired electromagnetic elds are found. Once the values of the elds are known, the reectivities can

be computed.

There are several software packages that implement the FDTD method two of which are Lumerical
and MIT Electromagnetic Equation Propagation (Meep). Lumerical is a powerful, commercial, computa-

tional electromagnetics software package that includes many tools including FDTD. Its main advantage is

that it has an intuitive graphical user interface and is easy to use. Its main disadvantage is that users must

purchase an expensive software license. Meep is also a powerful software package but is free software under

1
the GNU General Public License. Its main disadvantage is that it does not include a graphical user interface

and has a steep learning curve. Both packages can be used on a supercomputer, but Meep lends itself to

this because it was developed in a Unix environment and can be compiled from source. All of the FDTD

simulations in this thesis were done using Meep. However, some of these results were compared to published

results that were created using Lumerical.

This thesis is broken up into three main parts. In the rst part, I will go over basic waveguide

theory starting with the microscopic form of Maxwell's equations and putting them in a form that is used to

implement the FDTD method. Another form will be shown that are applicable to the waveguide geometries

studied in this work. The next main part will be dedicated to the FDTD method itself and the third main

part will be dedicated to Meep and the results that were obtained.

2
CHAPTER 2

MAXWELL'S EQUATIONS

It is dicult to overestimate the inuence James Clerk Maxwell and his theory of electricity and

magnetism has had on theoretical physics. In his works published during the late 1800's, culminating in the

publication of his Treatise on Electricity and Magnetism in 1873, he proposed 20 equations which gave a

unied, mathematical description of all the electric and magnetic phenomena of the time. In the process,

he predicted that light is an electromagnetic wave and predicted the speed of such waves. These predictions

were later veried by Heinrich Hertz who developed an apparatus to transmit and receive radio waves. Later,

Oliver Heaviside, using his vector calculus formalism, condensed Maxwell's equations into the four that we

use today. We call these equations the Maxwell equations (or Maxwell's equations) and the microscopic

version of them are written and named as follows:


E= Gauss's law, (2.1)
0
B=0 Gauss's law for magnetism, (2.2)

B
E= Faraday's law, and (2.3)
t
E
B = 0 0 + 0 j Ampere's law (2.4)
t

where E is the electric eld with units of Volts/meter, B is the magnetic ux density (or the magnetic induc-

tion or the magnetic eld) with units of Webers/meter2 , is the charge density in units of Coulombs/meter3 ,

and j is the current density in units of Amperes/meter2 . Like mass, charge is a fundamental quantity

in nature. However, it diers from mass in that it can be positive or negative and like charges repel

each other while opposite charges attract. A current is simply a moving charge or charges. Finally,

0 = 8.8541878176 1012 Farads/meter is the permittivity of free space and 0 = 4 107 Henrys/meter

is the permeability of free space. Both are fundamental constants.

The in the rst two equations is the divergence operator and is a measure of how much a quantity

diverges or spreads out. In Gauss's law (2.1) the electric eld diverges away from positive charges and towards

negative ones. It is typically pictured as arrows pointing away from positive charges and towards negative

ones. In Gauss's law for magnetism, the magnetic eld has zero divergence, i.e. it does not spread out and

always forms closed loops (this is sometimes referred to as the absence of magnetic monopoles). The next

3
two equations contain the dynamics because they involve the time derivatives. The in both of those

equations is the curl operator and is a measure of how much a quantity curls around or loops around. In

Faraday's law (2.3), the electric eld loops around a magnetic eld that is changing in time. If there is no

changing magnetic eld, then no electric eld is created. Finally, in Ampere's law, the magnetic eld forms

loops around a changing electric eld and around electric currents.

Perhaps the greatest shift in thinking that happened during this time, and which Maxwell (and

Michael Faraday) introduced, is the idea of elds of force permeating all of space instead of an action at

a distance as proposed by Isaac Newton. The electric and magnetic elds can exist independently of the

charges and currents that created them. Then, the force felt by a charge, q, moving with velocity, v, can be

computed from the Lorentz force law:

F = q(E + v B).

It is remarkable that a large part of electromagnetism comes down to manipulating the above ve

equations. It is also remarkable how compatible this formalism is with the more modern theories of special

relativity and quantum mechanics. Indeed, it was Maxwell's equations, and their validity for all inertial

frames of reference, that Albert Einstein used as a starting point for his Special Theory of Relativity.

Finally, at a time when there were numerous experiments to measure the values of 0 and 0 using charged

objects and current-carrying wires, which have little to do with light, Maxwell was able to use his theory to


predict that light is an electromagnetic wave traveling with speed c = 1/ 0 0 .

Usually the task when dealing with Maxwell's equations is to solve for the electric and magnetic elds

given a particular conguration of charges and currents. The microscopic form of the Maxwell equations

apply equally well to vacuum as to when matter is present however, most of the material physics is tied up in

the source terms, and j. Studying these will lead to the macroscopic form of Maxwell's equations. When

these equations are applied to linear materials, the FDTD method can then be applied to the resulting

Maxwell equations. When the materials are isotropic and non-magnetic, the Maxwell equations can be

solved analytically for a particular waveguide geometry  the planar waveguide. Finally, even though the

rib waveguide studied in this work has no analytical solution, the planar waveguide solutions can be used to

approximate it in the eective index method.

2.1 Microscopic to Macroscopic


In general, a material will have free electrons, which are able to move through the material, and

bound electrons, which spend all of their time around their respective nuclei. Thus, materials are generally

classied as either conductors or insulators. A conductor has free electrons, an insulator does not. Now,

a dielectric is an insulator that can be polarized. Even though the electrons in a dielectric are bound, an

4
applied electric eld can shift their average location in such a way that they spend more time on one side

of the nucleus than the other. The net eect of this results in an accumulation of charge. This is what is

meant by polarization since an otherwise neutral dielectric can have a non-uniform charge distribution.

Given that materials can be polarized, it is typical to separate the charge density, , into its bound

and free parts, b and f , respectively. As the names suggest, b is the charge density related to the

polarization of the material and the free charge density, f , is related to any conduction charges that may

be present (note that in a dielectric there are no free charges). Thus, the total charge density can be written

as the sum of the free and bound parts,

= f + b . (2.5)

On the atomic (or molecular) scale, each of the polarized atoms forms a tiny electric dipole which has

an associated dipole moment. So, a macroscopic quantity called the polarization, P, is dened as the electric
dipole moment per unit volume which has units of Coulombs/meter2 . Then, the bound charge density can

be computed from P by

b = P, (2.6)

where P points in the same direction as the applied electric eld and thus any divergence in P results in a

negative charge density. Substituting (2.6) and (2.5) into Gauss's law, (2.1), and collecting the divergence

terms results in

(0 E + P) = f .

The term in parentheses is dened as the electric displacement (sometimes called the electric ux density or

the auxiliary eld D, or just the displacement ),

D 0 E + P. (2.7)

A similar analysis can be done with the other source term, j. There will be free currents associated

with the free charges and bound currents associated with the spin and orbital motion of the bound charges.

These bound currents form tiny magnetic dipoles and so another macroscopic quantity, the magnetization, M,
is dened as the magnetic dipole moment per unit volume which has units of Amperes/meter. Furthermore,

if the applied electric eld is changing, then the polarization will also be changing resulting in a polarization

current density. Thus, the bound part of the current density is separated in two parts, one resulting from

magnetization and one from a changing polarization and the total current density is

j = jf + jb + jp , (2.8)

5
where jf , jb , and jp are the free, bound, and polarization current densities, respectively [1, p269,329].

The bound current density is

jb = M (2.9)

and polarization current density is


P
jp = . (2.10)
t

Plugging (2.10), (2.9), and (2.8) into Ampere's law,(2.4), and using (2.7) results in

 
1 D
BM = jf .
0 t

where the term in parentheses is dened as the magnetizing eld (or sometimes magnetic eld or auxiliary
eld H ),
1
H BM (2.11)
0

which has units of Amperes/meter.

D and H are sometimes referred to as the auxiliary elds. They are macroscopic quantities whereas

E and B are microscopic. Historically, Maxwell introduced D because he realized that the electric eld

responsible for the force on a charged particle diered from the eld induced in matter by an external

charge. Similarly, William Thomson (Lord Kelvin) introduced H because he intuited that the magnetic

eld produced by Faraday's law diered in some way from the eld induced in matter by a steady external

current. Nowadays, the distinction is made between the elds produced by charge and current intrinsic to

the matter from those extrinsic to the matter [2, page 43].

Putting the denitions for the auxiliary elds, (2.7) and (2.11), into the microscopic Maxwell equa-

tions, (2.1) and (2.4), results in the macroscopic Maxwell equations:

D = f Gauss's law (2.12)

B=0 Gauss's law for magnetism (2.13)

B
E+ =0 Faraday's law (2.14)
t
D
H = jf Ampere's law (2.15)
t

2.2 The Linear Regime


Experiment has veried that the components of the polarization can be written as

(2)
X X
Pi = 0 ij Ej + 0 ijk Ej Ek + O(E 3 )
j j,k

6
(2)
[2, page 167]. In the linear regime, all the ijk and higher terms are neglected so that

P = 0 e E, (2.16)

where the second rank electric susceptibility tensor, e , is a unitless quantity that depends on the material.

Note that, since e is a tensor, P and E may not be parallel. Putting (2.16) into (2.7) results in the rst

constitutive relation,
D = E, (2.17)

where  0 (1 + e ) is the permittivit y tensor of the material. A material with a higher electric susceptibil-

ity, by denition, has a higher permittivity and permits less electric eld (i.e. it is more easily polarizable).

The permittivity tensor can be represented by a 33 matrix:


11 12 13

=
21 22 .
23

31 32 33

This matrix can be diagonalized. The diagonal elements are then the permittivities of the principle
axes of the crystal. When all diagonal elements are the same, then the crystal is said to be cubic (or

isotropic). When two of the elements are the same and one is dierent, the crystal is said to be uniaxial. A

classical example of a uniaxial crystal is calcite which exhibits the phenomenon of birefringence. Finally, if

all three elements are dierent, the crystal is said to be biaxial. These three cases are represented below:


 0 0  0 0 1 0 0

0  0 0  0 0 2 0


0 0  0 0 k 0 0 3 .

Cubic Uniaxial Biaxial

Non-crystalline, or amorphous, solids such as glass or SiN are also isotropic. In that case, as in the cubic

crystal case, the permittivity can be represented by a single scalar function.

Now, the magnetization follows a similar empirical rule,

(2)
X X
Mi = ij Hj + ijk Hj Hk + O(H 3 )
j j,k

(2)
[2, page 421]. Just as with the polarization, in the linear regime, the ijk and higher order terms are neglected

7
Medium 2

n D1 n B1 n n E1 n H1

n D2 n B2 n E2 n H2
Medium 1

Figure 2.1: The normal components of D and B are continuous across the boundary whereas the tangential
components of E and H are.

and the magnetization is written as

M = m H

where m is the magnetic susceptibility tensor. The magnetization is customarily written in terms of the

macroscopic eld H instead of the microscopic eld B (whereas P was written in terms of E, the microscopic

eld). This is mainly to do with the way the two quantities are measured. We usually measure voltages and

currents, so E and H are the natural quantities to use. Plugging this into the denition of the magnetizing

eld, (2.11), results in the second constitutive relation,

B = H (2.18)

where 0 (1 + m ) is the permeability tensor.


Thus, the macroscopic Maxwell equations in the linear regime are:

(E) = f (H) = 0

E= (H) H= (E) + jf
t t

Assuming  and are time-independent and there are no sources (e.g. the dielectrics studied in this thesis),

then the macroscopic Maxwell equations for a time-independent material with no sources (or sinks) are:

(E) = 0 (H) = 0
H E
E = H= (2.19)
t t

These are the equations will be used to develop the FDTD method (chapter 3).

2.2.1 Boundary Conditions


When light passes from one medium to another, it must pass through the boundary between the

two media. Some of the light is transmitted and some is reected. The Maxwell equations impose certain

8
constraints, or boundary conditions, on the elds and although it may be easier to understand these conditions
from examining the integral form of Maxwell's equations, a step-function can be dened for the elds at the

boundary and the dierential form of Maxwell's equations used [2, p42]. Regardless, in a source-free region

of space where f = jf = 0, they lead to

n D1 = n D2 n B1 = n B2 (2.20)

n E1 = n E2 n H1 = n H2 (2.21)

where n is a unit normal which points from medium 1 towards medium 2 (Fig. 2.1). What these equations

say is that the normal components of D and B are continuous across the boundary while the tangential

components of E and H are. Only the normal component of E or the tangential component of D can have
a discontinuity at the boundary [3, p9].

2.3 Isotropic Case


In the isotropic case (e.g. a cubic or amorphous dielectric), the permittivity tensor can be repre-

sented by a scalar function of position. Furthermore, since dielectrics are typically non-magnetic at optical

frequencies, the material parameters become,

 = (r) and = 0 ,

the constitutive relations become

D = (r)E and H = 1
0 B,

and the Maxwell equations, (2.19), become

(r)E = 0

H=0
(2.22)
H
E + 0 =0
t
E
H (r) = 0.
t

When these equations are decoupled (for example, by inserting the curl of the bottom equation into

the third equation), one arrives at the 3 dimensional homogeneous wave equation. This equation shows that,


in vacuum (where  (r) = 0 ), these waves travel at a speed c = 1/ 0 0 , commonly referred to as the speed

of light. It turns out that all massless particles travel at this speed. Now, when light travels through a given

9

material, its speed changes. This new speed is v = 1/ , which is usually lower than c. The ratio of c to

v occurs so often that it has a special name, the index of refraction, and it is given by

r
c 
n= = .
v 0 0

If the three dimensional wave equations is analyzied in Cartesian coordinates, then each component

of the elds satises the scalar wave equation. Furthermore, since the equations are linear, one can separate

the time and space dependence of the elds. In the case of the wave equation, it is common to consider plane

wave solutions whose spatial dependence is proportional to the real part of eikr where k is the propagation
vector. In this case, the operators in Maxwell's equations can be replaced:

ik.

Now, consider a plane wave propagating toward an innite planar boundary between two dielectric

media, 1 and 2. Let the wave be incident from medium 1 and have wave vector ki . The angle this vector

makes with a normal to the surface is called the angle of incidence and is denoted by i . Part of the wave is

reected back into medium 1 and its wave vector is denoted by kr , which makes an angle r with the normal.

Finally, the transmitted wave is given the wave vector kt and it makes and angle t with the normal, but

inside medium 2. The boundary conditions (2.20) and (2.21) require that

ki r = kr r = kt r.

Thus, all three wave vectors lie in the same plane called the plane of incidence.
An electromagnetic wave has a polarization (not to be confused with polarization of matter discussed

above) given by the direction of its electric eld. If the electric eld is oriented perpendicular to the plane of

incidence, then it is said to have transverse electric (TE) polarization (or s polarization where s stands for

senkrecht, the German word for perpendicular). If it is parallel, then the wave has transverse magnetic (TM)

polarization (or p polarization since the electric eld is parallel). The reection and transmission coecients

for each polarization are obtained by taking the ratio of the reected and transmitted eld amplitudes,

respectively, to the incident eld amplitude. This results in the so-called Fresnel equations [3, p44],[2, p590].

Furthermore, the reectivity is obtained by taking the ratio of the reected power to the incident power

(equivalently, the absolute square of the Fresnel reection coecient). The transmissivity is then one minus

the reectivity. Again, this is done for each polarization. The Fresnel equations are well known and will

not be repeated here, however, there are two special cases that should be noted. First, when the angle of

10
incidence is zero, i.e. normal incidence, the reectivity is given simply by

n1 n2 2

R = (2.23)
n1 + n2

where n1 and n2 are the indices of refraction of medium 1 and medium 2, respectively.Second, there is

a critical angle such that if light is incident at this angle (or larger) then no light is transmitted. This

phenomenon is referred to as total internal reection. The critical angle is given by

n2
c = sin1 . (2.24)
n1

2.3.1 Electromagnetics as an Eigenvalue Problem


Regarding the temporal part of the elds, it is common to consider harmonic functions, i.e. functions

that vary as eit where is the angular frequency. This is motivated by Fourier analysis and the fact that

any solution can be built up as an appropriate combination of these functions. Then, in Maxwell's equations,

the partial time derivative operators can be replaced:


i. (2.25)
t

Then, the elds can then be written as a spatial prole times a complex exponential

E(r, t) = E(r) exp (it) and H(r, t) = H(r) exp(it). (2.26)

where E(r) and H(r) are the spatial proles.

The Maxwell divergence equations require that these solutions satisfy

H(r) = 0 and [(r)E(r)] = 0

which can be interpreted as there being no point sources or sinks of displacement and magnetic elds in the

region of interest. Furthermore, they require that the elds are transverse. Using (2.25), the two Maxwell

curl equations in (2.22) result in

E (r) i0 H (r) = 0 and H (r) + i (r) E (r) = 0 (2.27)

which can be decoupled by taking the curl of the equation on the right and substituting the equation on the

11

left to eliminate E. Utilizing c = 1/ 0 0 results in

   2
0
H = H. (2.28)
 c

More succinctly, dene the operator


0
=


then (2.28) can be written as


 2
H = H.
c

This is identied as an eigenvalue problem where an operation is performed on a function which results in

the function itself multiplied by a constant. In that case, the function is called an eigenfunction and the

multiplicative constant is called the eigenvalue. It is this reason why (2.26) are called harmonic modes (or

eigenmodes) and the spatial proles are called mode proles. Once the mode proles, H(r), and corresponding

frequencies, , are found, then E(r) can be found using the rst equation in (2.27),

i
E (r) = H (r) .


Proceeding in this way automatically satises the Maxwell divergence equations since the divergence of a

curl is zero.

The operator is linear. Furthermore, it is Hermitian. This is reminiscent of quantum mechanics

where Hermitian operators are used to create eigenvalue problems involving a wavefunction. As a matter

of fact, many of the same properties apply. For example, the eigenvalues are real and positive and the

eigenfunctions form a complete orthogonal set. Also, if the mode proles are spatially bound, then the

frequencies form a discrete set. If they are unbound, then they form a continuous set. This is similar to

the energy spectrum of a particle in quantum mechanics. Further development of electrodynamics as an

eigenvalue problem and its comparisons to quantum mechanics can be found in, for example, Joannopoulos

[4].

2.4 Waveguides
With these ideas in mind, I will now turn attention to waveguides. A waveguide is a device which

limits the spatial extent of a wave in one or more directions while allowing it to propagate in another. For

example, a cone would be a waveguide when it used to project a person's voice over a greater distance. Electric

power lines guide electromagnetic energy into homes at 60 Hz in the United States. Optical waveguides, such

as ber optic cables, typically operate in the near infrared part of the spectrum corresponding to about

12
300 THz. The basic structure of an optical waveguide is an inner guiding core surrounded by an outer

cladding such that the waveguide prole has a constant index of refraction in the direction of propagation

but not in the transverse directions. High-index dielectrics are used for the core and lower index dielectrics

for the cladding thus allowing for total internal reection within the waveguide.

These optical waveguides can be categorized into two basic types: planar and non-planar. A planar

waveguide has optical connement in only one transverse direction (say, the x direction). For example, a

thin sheet of glass lying on the yz plane. As light enters, edge on, into the glass, it disperses freely in

the yz direction but is conned in the x direction because of reections o the inside glass-air boundary. A

non-planar waveguide has connement in both transverse (xy) directions. For example, radar and microwave

waveguides often employ metal rectangular tubes where the wave is conned in the xy (say) and allowed to

propagate down the tube in the z direction. Analytical solutions to Maxwell's equations for two dimensional

connement are rare, but some general statements can be made.

2.4.1 Modes of Propagation


Consider a non-planar waveguide and choose the longitudinal direction to be the z direction. Since

the elds are transverse, it convenient to write r = r + zz where r represents the transverse components

of the position vector. Then the mode proles can be written as

E (r) = [E (r ) + zEz (r )] eiz

H (r) = [H (r ) + zHz (r )] eiz (2.29)

where is the z component of the propagation vector. Note that the prole amplitudes do not depend on


z. Then, using = + z z in (2.27) and writing the longitudinal and transverse components separately

results in

E = iHz z
(2.30)
iH iz E = z Ez .

H = iEz z
(2.31)
iE + iz H = z Hz .

In the above equations, all of the transverse eld components are in terms of the longitudinal

components. Provided Ez and Hz are not both zero, the transverse components can be solved in terms of

the longitudinal components. For example, take z on the last equation in (2.31) noting that z z = 1

on any transverse vector and using the last equation in (2.30) to eliminate z E . The same procedure on

13
Ez Hz
Transverse Electric (TE) =0 6= 0
Transverse Magnetic (TM) 6= 0 =0
Transverse Electromagnetic (TEM) both zero
Hybrid neither zero

Table 2.1: Summary of the various modes.

the other two equations results in

k 2 2 H = i Hz + iz Ez

(2.32)
k 2 2 E = i Ez iz Hz


where k 2 = 2 . Thus, only the longitudinal components of the eld proles need to be solved for. To

isolate the longitudinal components, take the curl of (2.32) and substitute (2.30) and (2.31) appropriately.

Upon doing so, it is found that both elds satisfy the two-dimensional Helmholtz equation


 2 E
 z
+ k 2 2 = 0. (2.33)
Hz

So, any elds written as (2.29) can be written as the sum of two independent modes dened to be

the transverse electric mode (TE mode) and the transverse magnetic mode (TM mode). A TE mode has

Ez = 0 and Hz 6= 0 while a TM mode has Hz = 0 and Ez 6= 0. There are also transverse electric and
magnetic modes (TEM modes) where Ez and Hz are both zero, however these waveguides do not support

such modes. This can be inferred from (2.32) and (2.33) where if Ez and Hz are both zero then E and H

must also be. Finally, there are hybrid modes where neither Ez nor Hz are zero. These modes can exist in

waveguides that have two-dimensional transverse connement but not in planar waveguides which only have

one dimensional transverse connement [2, p693],[3, p79]. See table (2.1) for a summary of these modes.

Finally, the modes are indexed by using a subscript. If there is only one dimensional connement,

then only a single subscript is needed (e.g. TEn ). For two dimensional connement, two subscripts are

needed (e.g. TEnm ). Thus, the fundamental TE mode of a waveguide with two dimensional transverse

connement would be labeled TE00 .

14
n3 x

n1 y h

n2

Figure 2.2: Cross section of a three layer planar waveguide. Propagation is in the z direction (into the page)
and connement only occurs in the x direction.

2.4.2 Planar Waveguides



For planar waveguides,  (x) and /y = 0 (and thus = x x ). Then (2.32) become

Hz Ez
k 2 2 H = i

x + i y (2.34)
x x
Ez Hz
k 2 2 E = i

x i0 y (2.35)
x x

and (2.33) becomes



2
Ez
 

+ k 2 2 = 0.

(2.36)
x2
Hz

The planar waveguides considered here consist of three layers: an inner guiding core with index n1 ,

a lower cladding with index n2 , and an upper cladding with index n3 (see Fig. 2.2). The index of refraction

of the core is higher than that of the cladding to allow for internal reections between the core-cladding

boundaries. If the angle of incidence is greater than or equal to the critical angle, c , (Eq. 2.24), such

that total internal reection occurs, then the light becomes trapped in the core and can propagate down

the waveguide (Fig. 2.3). However, as the light reects o of the upper and lower cladding, it interferes

with itself  sometimes constructively and sometimes destructively. Thus, there is a transverse propagation
condition as well as total internal reection that determines if the light will propagate down the waveguide

without loss. Light that meets these conditions is called a guided mode. If the angle of incidence is less than

c , then some light will be reected back into the core and some will be transmitted into the cladding. These

are called radiation modes.


The TE mode has Ez = 0 and so, from (2.34) and (2.34), it can be seen that Hy = Ex = 0 as well.

Since Ey is the only nonvanishing component of the electric eld, it is found rst and then Hx and Hz can

be found from (2.34) and (2.35). The TM mode has Hz = 0 and a similar analysis shows that Hx = Ey = 0.

Finally, the guided mode proles of a planar waveguide can be found analytically by nding the elds in

each layer separately and using the appropriate boundary conditions.

2.4.3 Rib Waveguide  Eective Index Method

15
n3
x

c
n1 z

n2

Figure 2.3: Depiction of a ray propagating down a planar waveguide.

w
w n3
n3
x t
n1 h
n1 y d = nII nI nIII

n2 n2

II I III

Figure 2.4: The eective index method. The rib waveguide is split into three regions (I, II, and II) and
considered as a combination of the central region (I) with core thickness h and an eective symmetric
waveguide with core thickness w oriented in the other transverse direction.

These three layer planar waveguides are categorized into two types: symmetric and asymmetric.
A symmetric waveguide has n2 = n3 whereas an asymmetric waveguide has n2 6= n3 . A rib waveguide is

similar to an asymmetric planar waveguide but with a rectangular structure added to it (leftmost image

in Fig. 2.4). Actually, it is created by etching away material from the core leaving behind a thin strip in

the longitudinal direction. While the eect is small, this thin strip (i.e. rib) provides connement in the

transverse y direction. Once this additional transverse connement is added, there are no longer analytical

solutions to the Maxwell equations and approximations must be made. One approximation is to use nite

dierences, the main focus of this thesis, but another approximation is called the eective index method.
What this method does is to treat the two dimensional connement problem as the combination of two one

dimensional connement problems (Fig. 2.4).

The basic idea is to split the rib waveguide into three regions and treat each region as a (usually

asymmetric) planar waveguide. The modes can then be computed for these waveguides and an eective
index computed from the corresponding propagation constants where nef f = /2 is the eective index.

These eective indices are then used to create a symmetric planar waveguide oriented in the other transverse

direction for which the modes are computed. The region (I) mode computed in the rst step constitutes

the x dependence of the eld and the modes of the symmetric waveguide in the second step constitute the

16
Figure 2.5: TE mode prole using the eective index method.

y dependence of the elds. These eld components are then combined to nd the mode prole of the rib

waveguide [3].

Figure 2.5 shows the fundamental mode prole for a rib waveguide using this method (the full

Mathematica notebook is included in appendix A.1). In this case, the core is made of SiN with n1 = 1.9827,

the lower cladding is SiO2 with n2 = 1.444, and the upper cladding is air with n3 = 1 . The height of the

rib is t = 110 nm and the height of the slab part of the core is d = 200 nm so that the overall height of the

core is h = t + d = 310 nm. The width of the rib is w = 2 m and the wavelength studied is = 1.55 m.

The region (I) part of the waveguide is treated as an asymmetric waveguide with core thickness h and the

fundamental TE mode propagation constant was found to be

0 = 6.589 m1 .

The corresponding mode prole will constitute the x dependence of the overall mode prole.

Regions (II) and (III) are treated as (identical) asymmetric waveguides and their eective indices

found. These eective indices, along with the region (I) eective index, are used to create a symmetric

waveguide with core thickness w (the width of the rib). This symmetric waveguide is oriented in the other

transverse direction, in this case the y direction. Since I wish the compute the fundamental TE00 mode for

the overall waveguide, I must nd the fundamental TM0 mode for this eective symmetric waveguide. After

doing so, the fundamental TE mode propagation constant was found to be

00 = 6.488 m1 .

17
1

0.5

x (m)
0

0.5

1
2 1 0 1
y (m)

Figure 2.6: TE mode prole from http://www.computational-photonics.eu/eims.html

Figure 2.7: Eigenmode prole created with Meep.

For comparison, Fig. 2.6 shows the fundamental TE mode prole created from a web application

(http://www.computational-photonics.eu/eims.html) which uses a modied variational eective index

method. It found 00 = 6.475 m1 for the TE mode. Finally, Fig. 2.7 shows the mode prole obtained

from Meep.

18
CHAPTER 3

FINITE DIFFERENCE TIME DOMAIN (FDTD) METHOD

In this section, I will give a brief overview of the FDTD method, talk about what nite dierence

approximations are, and then show one example of how those approximations are applied to the governing

equations (2.19).

3.1 What is the FDTD Method?


The FDTD method was introduced in the late 1960s by Kane Yee and improved upon in the 1970s

and 1980s. With the advent of more and more powerful computers and their large memory capacities,

the FDTD method has been gaining popularity as a robust tool for simulating various electromagnetic

phenomena such as light propagation in photonic crystals, radar interactions with airplane hulls, and the

electromagnetic radiation patterns of the entire Earth. The FDTD method has also been successfully used

to simulate things such as light emitting diodes (LEDs), charged coupled devices (CCDs), ber optics,

photovoltaics, and microwave photonic devices for use in mobile communications.

The FDTD method uses a nite dierence approximation to Maxwell's equations to create the update
equations. These update equations are used to compute the magnetic and electric elds in an iterative, time-

stepping fashion. It is a grid based technique, so a computational lattice is rst setup that includes any

objects and materials under study. Usually, all of the elds are initialized to zero and then, at the beginning

of the simulation, a source (i.e. a current) is turned on which creates an electromagnetic disturbance. During

the next time step, the magnetic eld values are updated and these new values are used to update the values

of the electric eld during the next time step. The new values for the electric eld are then used to update

the magnetic eld which are used to update the electric eld, and so on. In this way, the elds are computed

at every point on the grid in the time domain. This process is possible because of the unique way the elds

are situated on the Yee cell and allows for the computation of the elds directly from Maxwell's equations

without having to solve the associated wave equation.

3.2 Advantages and Disadvantages


The FDTD method has many advantages over other techniques. For example, the numerical com-

plexity scales linearly with the problem size and so it is easily parallelized and straightforward to setup on

a supercomputer. Nonlinear materials are naturally included in the simulations through the constitutive

19
relations and a broadband pulse source can be used to return the response for multiple frequencies in a

single simulation run. Furthermore, given its popularity, there is a plethora of literature on the method and

its errors and limitations. Finally, the FDTD method solves the Maxwell equations directly and thus lends

itself to visualization of the electric and magnetic elds, eld power, etc., which makes it a great learning

tool for anyone wanting to better understand electromagnetics.

As with all things, there are disadvantages. Since it is a grid based technique, clever means must be

implemented to simulate curved surfaces and since simulations are iterated over the time domain, memory

requirements scale as the fourth power of simulation lattice size (i.e. doubling the lattice size increases

memory demands by a factor of 16) emphasizing the need for computers with high processing speeds and

large memory capacities. Also, it is dicult to incorporate dispersion and if the device is very small or

resonant, the simulation times can be very long.

3.3 Finite Dierence Approximations


At its heart, the FDTD method is a nite dierence method. Since it is the Maxwell curl equations

that give the dynamics of the electric and magnetic elds, it is upon those which the nite dierence

approximations are made. Some examples of ways to approximate the derivative, f 0 (x), of a function at the

point x are the forward, backward, and central dierences (Figs. 3.1 and 3.2).

f (x + x/2)

f (x x/2)
f (x) f (x)

x x/2 x x + x/2 x x/2 x x + x/2


(a) Depiction of the forward nite dier- (b) Depiction of the backward nite dier-
ence approximation. ence approximation.

Figure 3.1: The forward and backward dierence approximations to f 0 (x). The dashed lines represent the
approximate slope of f (x) and the solid line is the actual slope.

The fundamental theorem of calculus is,

df f (x + x) f (x)
= lim .
dx x0 x

20
f (x + x/2)

f (x x/2)
f (x)

x x/2 x x + x/2

Figure 3.2: The central dierence approximation.

Of course, using a computer, x cannot go completely to zero. So, what is done is to say

df f (x + x) f (x)
.
dx x

This is, actually, the forward dierence approximation. It is approximating the slope of the function f at a

point x by evaluating the function at a point x + x in front of x. For convenience, let x x/2, then

Fig. 3.1a represents the forward dierence approximation. Similarly, one can approximate the slope using a

point behind x. This is called the backward dierence (Fig. 3.1b). Finally, one can approximate the slope

using a point in front of x and a point behind x and this is called the central dierence (Fig. 3.2). Thus,

the forward, backward, and central dierence approximations are:

f (x + x/2) f (x)
f 0 (x)
x/2
f (x) f (x x/2)
f 0 (x)
x/2
f (x + x/2) f (x x/2)
f 0 (x)
x

Which of these three approximations is best? An analysis is performed by taking Taylor expansions of the

forward and backward dierences. The forward dierence results in

 2  3
x 0 1 x 00 1 x
f (x + x) = f (x) + f (x) + f (x) + f 000 (x) + (3.1)
2 2! 2 3! 2

and solving for f 0 (x) gives


f (x + x) f (x)
f 0 (x) = + O(x),
x/2

where terms of order x and higher are grouped into O(x). Thus, the forward dierence is rst order

21
accurate. The Taylor expansion of the backward dierence is

 2  3
x 0 1 x 1 x
f (x x) = f (x) f (x) + f 00 (x) f 000 (x) + (3.2)
2 2! 2 3! 2

and solving for f 0 (x) gives


f (x x) f (x)
f 0 (x) = + O(x)
x/2

and, thus, the backward dierence is also rst-order accurate. Now, if the Taylor expansions (3.1) and (3.2)

are rst subtracted and then f 0 (x) solved for, the central dierence is obtained:

f (x + x/2) f (x x/2)
f 0 (x) = + O (x)2 .
 
x

This is second-order accurate and what is used in the FDTD method. What remains is to apply this

approximation to the Maxwell equations.

3.4 The Yee Algorithm


z

Ez

Hx
Hy

Ex y
Ey
Hz
x

Figure 3.3: The Yee cell

There are various schemes in which to organize the E and H vectors onto a grid for use on a computer

however, the Yee cell (Fig. 3.3) has proven to be the most robust and easy to use. Kane Yee introduced this

cell geometry in 1966 which elegantly takes into account the divergence equations (the E and H elds form

loops), the boundary conditions (where Ek and H are continuous), and provides a clever way to deal with

the time derivatives [5]. However, the eld components are in dierent locations and it is possible that they

are in dierent materials (even though they are in the same cell). Additionally, the eld components will be

out of phase.

Since the divergence equations are automatically satised by adopting the Yee cell, the central

22
dierence is used on the curl equations. Furthermore, the E and H elds are used since they do not include

the material parameters. This will allow the creation of the FDTD algorithm independent of the material

parameters which can be added at a later time through the use of the constitutive relations. Furthermore,

the material parameters are dened at the same locations as the E and H elds.

Since the electric eld is roughly 300 times larger than the magnetic eld, it is good practice to rst

normalize the elds so as not to introduce additional numerical error. Choosing to normalize the magnetic

eld,

H = 0 H

p
where the free space impedance, 0 = 0 /0 , is used since the actual impedance is not known in advance

(i.e. dierent materials may be simulated). Thus, the normalized curl equations are.

r H r E
E= and H = .
c t c t

where r = /0 and r = /0 are the relative permeability and permittivity, respectively. Applying the

central dierence approximation to the time derivatives results in,

r H(t + t/2) H(t t/2)


E(t) , and
c t
r E(t + t/2) E(t t/2)
H(t) . (3.3)
c t

The problem here is that H exists at t + t/2 in the top equation and at t in the bottom equation (vice-versa

for E ). To x this, E is dened to exist at integer multiples of t and H at half-integer multiples, so that the

second equation becomes,


r E(t + t) E(t)
H(t + t/2) ' .
c t

Using the top equation in (3.3) to solve for H(t + t/2) and the above equation to solve for E(t + t),

ct
H(t + t/2) H(t t/2) E(t)
r
ct
E(t + t) E(t) + H(t + t/2). (3.4)
r

Thus, H at a future time step is determined by using H and E at a previous time step. Then, this new

value of H is used to compute the new value of E. Hence, the ow of the FDTD algorithm will be: update

H from E, then update E from H, and so on.

For the curl equations, expanding them results in,

23
!
Ez Ey 1 Hx Hy Hz
= xx + xy + xz
y z c t t t
!
Ex Ez 1 Hx Hy Hz
= yx + yy + yz
z x c t t t
!
Ey Ex 1 Hx Hy Hz
= zx + zy + zz
x y c t t t

 
Hz Hy 1 Ex Ey Ez
= xx + xy + xz
y z c t t t
 
Hx Hz 1 Ex Ey Ez
= yx + yy + yz
z x c t t t
 
Hy Hx 1 Ex Ey Ez
= zx + zy + zz
x y c t t t

In general, one would apply the central dierence approximation to these equations and, as one

could imagine, the equations will be very long. The interested reader can nd the full equations in most

texts on FDTD, for instance [6]. However, some assumptions can be made that will simplify things. The

rst assumption is that the principle axes are being used and thus and  are diagonalized. Then, all of

o-diagonal components are zero and the curl equations become,

Ez Ey xx Hx Hz Hy xx Ex
= , = ,
y z c0 t y z c0 t
Ex Ez yy Hy Hx Hz yy Ey
= , = ,
z x c0 t z x c0 t
Ey Ex zz Hz Hy Hx zz Ez
= , and = . (3.5)
x y c0 t x y c0 t

24
z

Eyi,j,k+1

Ezi,j,k
Ezi,j+1,k
Hxi,j,k
Hy

Ex y
Eyi,j,k
Hz
x

Figure 3.4: Yee cell showing encircling elds around Hxi,j,k .

To apply the central dierence approximation to these equations, it is common to use superscripts

to keep track of the derivatives while reserving the subscripts for the components. For instance,


Ez Ezi,j+1,k t Ezi,j,k t
= .
y y

Note that the E eld is being evaluated at time t since the curl term for E in (3.4) was evaluated at t. Now,

since the derivative is being taken with respect to y, the dierence is taken between Ezi,j+1,k (i.e. Ey in the

next location in the y direction, j + 1) and Ezi,j,k in the current location, j (Fig. 3.4). As another example,

take
Ey Eyi,j,k+1 t Eyi,j,k t
= .
z z

In this case, the derivative is taken with respect to z and so the dierence is taken between Eyi,j,k+1 (i.e. Ey

in the next location in the z direction, k + 1) and Eyi,j,k at the current location, k. Finally,


Hxi,j,k Hxi,j,k

Hx t+ t
2 t t
2
= .
t t

Here the derivative is taken with respect to time and H is dened on half-integer multiples of t. Combining

the last three equations, the upper left equation in (3.5) is written as the rst equation below. The same

25
conventions are used for the rest of the curl equations and:


Hxi,j,k Hxi,j,k

Ezi,j+1,k t Ezi,j,k t Eyi,j,k+1 t
Eyi,j,k t
i,j,k t+ t t t
= xx 2 2
,
y z c0 t

Hyi,j,k t Hyi,j,k t

Exi,j,k+1 t Exi,j,k t Ezi+1,j,k t Ezi,j,k t i,j,k
yy t+ 2 t 2
= ,
z x c0 t

Hzi,j,k t Hzi,j,k t

i+1,j,k i,j,k i,j+1,k i,j,k
Ey E y Ex
Ex
i,j,k
t+ t 2
t t
t t
= zz 2
,
x y c0 t


Hzi,j,k Hzi,j1,k Hyi,j,k Hyi,j,k1

i,j,k i,j,k
t+ t t+ t t+ t t+ t i,j,k E x t+t
Ex t
2 2
2 2
= xx ,
y z c0 t

Hxi,j,k Hxi,j,k1 Hzi,j,k Hzi1,j,k

t+ t t+ t t+ t t+ t i,j,k
yy
Eyi,j,k t+t Eyi,j,k t
2 2
2 2
= , and
z x c0 t

Hyi,j,k Hyi1,j,k Hxi,j,k Hxi,j1,k

t+ t t+ t t+ t t+ t i,j,k
zz
Ezi,j,k t+t Ezi,j,k t
2 2
2 2
= .
x y c0 t

At this point, one could solve for the E and H elds at future steps in terms of those values

in previous steps (i.e. all of the H|t+t/2 and E|t+t on the right hand sides of the equations above).

However, another simplifying case is when the system can be represented in one dimension. For example, a

layered stack of dielectric slabs where the layers are very large compared to their thicknesses. Then, in the

1D case with propagation along the z direction, all the derivatives with respect to x and y are zero (since

the layers are in the xy plane and considered innite in extent). Then,


Hxi,j,k Hxi,j,k

Eyi,j,k+1 t Eyi,j,k t i,j,k
xx t+ t t t
= 2 2
(3.6a)
z c0 t

Hyi,j,k t Hyi,j,k t

i,j,k+1 i,j,k i,j,k
Ex t
E x t
yy t+ t 2
= 2
(3.6b)
z c0 t

i,j,k
i,j,k Hz t Hzi,j,k t

zz t+ 2 t 2
0= (3.6c)
c0 t

i,j,k i,j,k1
Hy t Hy
Exi,j,k t+t Exi,j,k t

i,j,k
t
t+ 2 t+ 2 xx
= (3.6d)
z c0 t

i,j,k i,j,k1
Hx t Hx
Eyi,j,k t+t Eyi,j,k t

i,j,k
t
t+ 2 t+ 2 yy
= (3.6e)
z c0 t

i,j,k E i,j,k Ezi,j,k t
zz z t+t
0= (3.6f )
c0 t

26
Notice how Eqs. (3.6a) and (3.6e) both only contain Ey and Hx and how (3.6b) and (3.6d) only

contain Ex and Hy . So, the Maxwell equations decouple into two independent modes. If there is no

anisotropy, then the two modes will give the same physics. Looking at the Ey mode, the update equations

for the 1D case are,


Eyk+1 t Eyk t
 
c0 t
Hxk = Hxk + ,

t+ t
2 t t
2
kxx z

! H k Hxk1

x
c0 t t+ t t+ t
Eyi,j,k t+t = Eyi,j,k t +
2 2
.
i,j,k
yy z

Although these equations look complicated, they can be implemented on a computer with just a few

lines of code.

3.5 Boundaries
There are various ways to treat the boundaries of the computational lattice. One would be to put a

Perfect Electric Conductor (PEC) surrounding your cell in which case the E and H elds would simply be

zero. However, sometimes it is necessary to have your computational cell extend to innity. In this case, an

Absorbing Boundary Condition (ABC) is used. When the electromagnetic wave reaches this boundary, it is

simply absorbed. There are various techniques to create an ABC but, by far, the most used is the Perfectly

Matched Layer (PML) [7]. It creates a ctitious material around the computational cell where impedance

matching is used to determine the material parameters. This technique is independent of the angle and

frequencies of the radiation incident on the boundary [8].

27
CHAPTER 4

MIT ELECTROMAGNETIC EQUATION PROPAGATION (MEEP)

Now that the basic electromagnetic theory has been covered and the nite dierence approximations

have been applied to the governing equations, I will describe an implementation of FDTD called Meep. After

giving an overview of Meep, I will go over some of the installation steps to get Meep working on a personal

computer and on a supercomputer. Then, I will go over the programming language that is used to run

Meep using a program that was used in this work as an example. Finally, I will present the results from the

simulations that I ran and compare those to other results.

Meep is a free and open FDTD simulation software package developed at the Massachusetts Institute

of Technology (MIT) and licensed under the GNU General Public License (GNU GPL). It has many features

including: simulation in 1D, 2D, 3D, and cylindrical coordinates, support for the Message Passing Interface

(MPI) standard for parallel computation, Perfectly Matched Layer (PML) boundary conditions, eld analysis

for ux spectra, among many others. All of the FDTD simulations in this work were done using Meep [9].

4.1 Installation
Meep was developed in a Linux environment, particularly Debian Linux, and it is in a Linux environ-

ment that Meep is probably the easiest to install. Most Linux distributions come with a package manager

that makes it easy to install software from the command line. For example, in Debian (and Ubuntu), it is

simply the following one-line command to install everything required.

apt - get install meep h5utils

In other distributions, you may have to download and install the requirements separately, and there

are a quite a few. However, there are instructions on the Meep webpage and I have found the Meep discussion

email list to be helpful. Of course, you can also download the sources and compile them yourself. This may

be useful, for instance, if you plan to run the software on a supercomputer.

Mac OSX is a Unix system. In fact, the terminal runs a Bourne Again SHell (bash) and Meep can

also be relatively easily installed from the command line. However, there is no built-in package manager as

in Linux, but, you can download and use a package manger called Homebrew, as mentioned in the Meep

installation guide. You will still need to install some prerequisites separately and some packages will need to

be compiled, but the process is well documented. You will need to have XCode, Apple's integrated develop-

28
ment environment (available for free from the Apple store), installed and have administrator privileges. As

always, you can download the sources and compile them yourself, if you are so inclined.

Now, while Meep can be installed to run natively in a Windows environment, you will need a Linux

terminal emulator such as Cygwin and the process is somewhat involved, although it is documented on

the interwebs. Perhaps the better way to go is make your machine dual boot, or, run a virtual machine

with Windows as the host. Later versions of Windows come with Microsoft's Hyper V virtual machine

software and it is easy to setup a Linux distribution of your choice. There are other virtual machine software

packages available, notably the open-source VirtualBox provided by Oracle. Beware, running two operating

systems at the same time means all resources are being shared. While the CPU load may be minimal with

today's advanced processors, it is recommended to have at least 8GB of ram (4GB for Windows and 4GB

for the Linux virtual machine) if you are to run any simulations of typical complexity. For instance, the rib

waveguides simulated in this work could easily consume 2 GB of ram and sometimes as much as 18 GB.

Finally, the simulations whose results are presented in this thesis were all run on the Tandy Super-

computer (http://www.tandysupercomputing.org). An installation script which outlines the steps I took to

get Meep running on the supercomputer is presented in appendix (A.2.1).

4.2 The .ctl File


There are a few ways in which to interface with Meep. Perhaps the preferred way is to write a C++

program that links to the Meep library. After all, Meep was written in C/C++ and this was originally how

the package was used. Also, this method gives the greatest level of exibility in creating FDTD simulations.

Another method is to use a control le, usually abbreviated ctl with a name such as foo.ctl.
The control le is based on libctl (one of the prerequisites installed when Meep was installed) which itself is

built on top of the GNU Guile interpreter (also an installed prerequisite) in order to communicate between

Scheme, yet another programming language developed at MIT, and other scientic computation software.

Although it may seem complicated, the details are not necessary to write a simple .ctl le and the Meep

website provides some easy to follow tutorials. Once the basic syntax is understood, it is possible to write

fairly complex programs.

The .ctl le can be edited with a text editor of your choosing however, I found emacs and gedit

to be most useful. Emacs, especially, because you can edit the les directly on the server and it has syntax

highlighting for scheme built-in. It is possible to integrate the supercomputer's le system with the native

lesystem on OSX (and, probably, Windows explorer) which allows you to edit the les natively using gedit.

Gedit also comes with scheme syntax highlighting natively and can be readily customized for libctl.

The rst thing to note about libctl (and scheme) is that it is uses syntax similar to Polish Notation

(PN) where the operator precedes the operands. So, for instance, the syntax for adding the numbers 2 and

29
3 would be the following:

(+ 2 3)

Now, every programmer has his or her own style of coding. In this case, I have broken the program

up into code blocks and, for the remainder of this section, I will go through each code block in rib.ctl A.3.4
in the order they appear. Also, when dening an object's dimensions and location, libctl uses the center of

the object and its size. Thus, objects will be given by their center location (x, y, z) and their size (sx, sy ,

sz ) where the s indicates that the variable refers to the object's size in that particular direction. Also, the

origin is at the center of the computational lattice.

The rst code block in rib.ctl denes the materials used to make up the rib waveguide.

; materials
( define SiN ( make dielectric ( index 1.9827)))
( define SiO2 ( make dielectric ( index 1.4440)))
( define Si ( make dielectric ( index 3.4401)))
( define glass ( make dielectric ( index 1.5)))

The rst thing to notice is that in libctl, comments are started with the semicolon, ;, and everything after

the semicolon is ignored until a newline is reached. Next, the define operator denes variable names such

as SiN and SiO2. These variables are then given values which are themselves objects created by the make
operator. The make operator creates a dielectric (in this case) with the given index of refraction. Naming

materials this way makes it easier to reference them later and to easily make changes, if necessary (e.g.

dierent frequencies are used).

The next code block contains the waveguide parameters:

; waveguide parameters
( define - param h 0.3)
( define hmax 2)
( define L 10)
( define w 2)
( define t (* 0.3 h ))
( define d ( - h t ))
( define spml 0.4)

30
PML

w
x t
y h sx = 5hmax
O d SiN

SiO2

sy =

Figure 4.1: A z=0 cross-section of the computational lattice. The propagation direction is into the page.
The shaded region is the perfectly matched layer (PML).

Again, some variables are being dened and their default values set. One dierence is the use of

define-param. Any variable dened this way can be changed from the command line. This makes it very

convenient to write a script that will run the simulation for many dierent values of a parameter, in this

case the overall height, h, of the core of the waveguide (Fig. (4.1)). The next parameter is hmax . This is the

maximum height that the simulation will run to. Any larger than this, and there will not be enough space

between the waveguide and the pml. Of course, the larger hmax is, the larger the computational lattice will

be and the longer and larger the simulation will be. The variable L is the length of the waveguide in the z

direction (Fig. 4.2). Since I am measuring the guided mode reectivity, L needs to be long enough so that

any excited radiation modes have time to radiate away from the waveguide. Of course, making L longer

also increases the size of the computational lattice and so there is a balance to be made. The variable w

is the width of the rib, t is the height of the rib, and d is the thickness of the slab part of the core. The

overall height of the core is h = d+t and the height of the rib is t = 0.3h. Thus, the height of the rib was

always 30% of the overall height of the core and the slab height made up the rest (e.g. if h = 300 nm, then

t = 90 nm and d = 210 nm).

31
PML

transmission ux plane

reection ux plane

x
z SiN h sx
O

source

SiO2

L
sz

Figure 4.2: A y=0 cross-section of the computational lattice. The dashed lines represent the reection and
transmission ux planes and the dot represents the source (not necessary a point source).

The last item to discuss is spml. As mentioned above, anytime there is an s in front of a variable

name, it stands for size. Thus, spml is the size, or thickness, of the pml layer. In this case, it is 0.4 m all

around. Note that the pml reaches into the lattice and is not in addition to it.

The next section sets up the computational lattice.

; lattice
( define res 32)
( define sx (* 5 hmax ))
( define sy (* 5 w ))
( define sz (+ L 1))
( set ! geometry - lattice ( make lattice ( size sx sy sz )))
( set ! pml - layers ( list ( make pml ( thickness spml ))))
( set - param ! resolution res )

Again, there are some define statements. Starting at the top, res is the resolution of the simulation. If

the computational lattice is a grid, then resolution is how many pieces the grid is broken up into. This is

important because the elds are only computed at each grid point. If a boundary or a ux plane, etc. lies

between two grid points, then the elds must be interpolated. Thus, a higher resolution will allow for a ner

computation of these in between points but, it will also require more memory and a longer computational

time. Note that running a simulation with a 10 10 10 lattice size at resolution res = 3 is dierent from

running the same simulation as a 30 30 30 lattice size and resolution res = 1.

Moving on, sx, sy , and sz are the size of the computational lattice in the x, y , and z directions,

respectively. In the x direction, up through the layers, the size of the lattice is 5hmax to allow enough

32
space for any radiation modes to propagate away from the waveguide and into the pml. Although I did not

use a specic algorithm to come up with the number 5, it is large enough to account for the height of the

fundamental mode (i.e. the size of the mode prole in the x direction). Furthermore, the space between the

waveguide and the the pml should be at least one wavelength. Since the wavelength used in this simulation

was 1.5 m, and hmax = 2 m, sx = 10 m was large enough to account for the height of the waveguide and

the 0.4 m thick pml.

Next, set! is used to set pre-dened parameters or objects in Meep. One of the key objects is the

computational lattice. The lattice is made with the make operator and has one property, size. Next, the

pml is made. The list operator allows you to create a pml layer for each of the three directions x, y , and

z. In this case, I set the the pml to be the same size in all directions. Finally, much like the define-param
that was used to dene custom variables from the command line, set-param! allows you to change that

particular pre-dened object from the command line. This was useful when creating the code. For testing

purposes, res could be set equal to 1 which greatly reduces overhead and computational time.

The next section creates the waveguide.

; waveguide
( define - param facet ? false ) ; no facet for normalization
( define szwvg ( if facet ? L infinity ))
( define zwvg ( if facet ? (/ ( - sz L ) -2) 0))
( set ! geometry ( list
( make block ; lower cladding
( size (/ sz 2) infinity szwvg )
( center (/ sz -4) 0 zwvg )
( material SiO2 )
)
( make block ; rib
( size t w szwvg )
( center (/ d 2) 0 zwvg )
( material SiN )
)
( make block ; slab
( size d infinity szwvg )
( center (/ t -2) 0 zwvg )
( material SiN )
)
))

Firstly, a Boolean variable, facet?, is dened with default value of false. Boolean variables in

Meep are always followed by a ?. The reason for dening this Boolean variable is that in order to compute

the facet reectivity, a ux plane is created which computes the total power ux through that plane. So, if

the mode is propagating to the right, goes through the ux plane, is reected o the facet and propagates

to the left, back through the ux plane, then an accounting must be made of how much ux was incident

and how much was reected. This is done by running the simulation twice. In the rst run, which is called

the normalization run, there is no facet (facet?=false), and the total ux through the plane is computed.

During the next run, the facet run, there is a facet (facet?=true). During this run, the mode propagates to

33
the right, through the ux plane, part of it is reected o the facet and propagates to the left, back through

the ux plane. Meep computes the total ux through this plane for both passes. Thus, the negative of the

original, normalization run, is added to the ux through the plane during the facet run. This way, only the

reected ux is given in the nal output. All of this is to say that a Boolean variable, facet, is dened

using define-param so that it can be changed at the command line.

Next, szwvg is the size of the waveguide in the z direction. During the normalization run, it is

simply the full z direction of the lattice (actually it is innity but the computational lattice cuts it o. In

Meep, infinity is just some huge number, 1 1020 ). During the facet run, it is set to length L which was

dened in the waveguide parameters section and, in this case, L = 10 m.

Another thing to note is the if-then structure used. It goes as follows:

(if predicate? if-true if-false )

So, if predicate? is true, then if-true is executed, otherwise, if-false is executed. So, in this case, if

facet?=true then szwvg = L, otherwise szwvg = .

Similarly, the z coordinate of the waveguide, zwvg , is dened with an if-statement. If there is no

facet, then the center is simply the center of the computational lattice (i.e. zero). If there is a facet, then

szwvg = L and the z coordinate of the waveguide is

1
zwvg = (sz L)
2

Next is setting the geometry of the waveguide. In this case it consists of a series of blocks (i.e.

parallelpipeds). Meep supports other geometrical objects such as cylinders, cones, spheres, and ellipsoids.

Note that only the intersection of the computational cell and the object is considered in the simulation. The

waveguide is comprised of three parts: the lower cladding, the rib, and the slab.

Starting with the lower cladding, it lls the lower half-space of the computational lattice. Thus, its

size in the x direction is sx/2, in the y direction it is simply (or, again, some large number). In the z

direction, it is the same as szwvg . Furthermore, it is centered at (sx/4, 0, zwvg) and the material is SiO2 .

Since this is the rst geometrical object to be dened, any objects which come after (i.e. the rib and slab),

will take precedence.

The core of the waveguide is made up of a rib and a slab. Both are made of the same material, SiN.

The rib height, t, and the slab height, d, add up to the total height of the core, h. This core is centered at

x = 0. Thus, the rib center is at (d/2, 0, zwvg) and the slab center is at (t/2, 0, zwvg). The size of the rib

is (t, w, szwvg). The size of the slab is (d, , szwvg). The in the y size is, again, some large number and

only the part which is inside the computational lattice is considered during the simulation.

34
Next comes dening the source.

; source
( define wvlen 1.55)
( define srccomp Ey )
( define zsrc (+ (/ sz -2) spml 0.1))
( set ! sources ( list ( make eigenmode - source
( src ( make gaussian - src
( wavelength wvlen )
( width 0.5)
))
( component srccomp )
( size sx ( - sy 2) 0)
( center 0 0 zsrc )
( direction Z )
)))

This section is straightforward in implementation if not in understanding. Indeed, much of my eort

went into understanding this particular section of code. The rst few items are easy enough, wvlen is the

vacuum wavelength, in this case = 1.55 m. Then, the mode component, srccomp, is the y component,

i.e. the TE mode. Then, zsrc is the z coordinate of the source. In this case it is

 sz 
zsrc = + spml + 0.1
2

In other words, it is 0.1 m to the right of the pml on the left (negative) side of the lattice. The next part I

spent months working on.

Firstly, when the simulation starts, a current source is turned on which creates an electromagnetic

wave. After a specied amount of time, the source is turned o and the wave is allowed to propagate through

the simulation region. It is this propagating wave that is being analyzed. In Meep, the source is again created

with a make statement. In this case, I create an eigenmode-source. What this does is make a call to another

program created at MIT called MIT Photonic Bands (MPB). MPB uses a plane wave expansion method to

compute the modes of propagation for a particular waveguide geometry then returns to Meep the current

source necessary to excite these modes. So, instead of specifying a generic source, such as a point or line

source, and waiting for the simulation to decay into these fundamental modes, MPB speeds up the process

by exciting the eigenmode(s) specied.

As can be referred to on the Meep online reference, an eigenmode-source has several properties, ve

of which are used here. The rst is the type of source, specied with the src command. In this case, I am

using a Gaussian source that has a peak wavelength, wvlen, and a width of 0.5 m. The next property of

the eigenmode source is the source component which was dened with the variable srccomp corresponding

to the TE mode, i.e. the Ey component. The size of the source is specied in the usual 3 dimensions. For

some simulations, I would use a point source, in others I would use a line source. However, when using an

eigenmode source, the size of the source is also the computational region sent to MPB. So, this size must

35
be large enough to incorporate all of the features of the waveguide. It should be larger than the width and

height of the mode prole. In this case, I used a plane that was the full height of the computational lattice,

sx, but not quite the full width, sy (2 m less actually). For reasons unknown to me, but perhaps related

to the pml, MPB did not seem to return the correct fundamental modes for the waveguide if the pml was

included in the size of the source. In the x direction, it was not an issue since the guided modes do not exist

in the pml there. Finally, there was no z dimension, i.e. the source was a plane.

The size of the source being determined, the location of the center of the source was straightforward.

It was centered on the core of the waveguide and put 0.1 m from the pml as noted above. Finally, a

propagation direction was specied which in this case is the z direction.

There are many other options for the eigenmode source (which are detailed on the Meep reference

page) which I experimented with. For example, replacing the Gaussian source with a plane wave source

worked equally as well, but you must specify a start and end time (instead of the width). The computation

times hardly changed and the results were imperceptibly dierent.

The next section is dening the ux planes. Much time and eort went into getting these just right,

but, it turns out, for computing the guided mode reectivity all you need to do is dene the ux plane as a

cross-section of the waveguide and then place them appropriately along the length.

; flux planes ( must be done after geometry , sources , resolution , etc .)


( define zfacet ( - L (/ sz 2)))
( define fcen (/ 1 wvlen ))
( define df 0)
( define nfreq 1)
( define flux11 ( add - flux fcen df nfreq
( make flux - region ; rib
( size t w 0)
( center (/ d 2) 0 (+ zsrc 0.1))
)
( make flux - region ; slab
( size d sy 0)
( center (/ t -2) 0 (+ zsrc 0.1))
)
))
( define fluxT1 ( add - flux fcen df nfreq
( make flux - region ; rib
( size t w 0)
( center (/ d 2) 0 (+ zfacet 0.1))
)
( make flux - region ; slab
( size d sy 0)
( center (/ t -2) 0 (+ zfacet 0.1))
)
))

First, I dened zf acet = L sz/2 to be the z coordinate of the facet. This way, a ux plane plane

could be easily placed 0.1 m away from it. Next, f cen is the central, or peak, frequency. In this case (and

in Meep units) it is simply 1/, where is the vacuum wavelength (i.e. = 1.55 m). Next again is df

which is the width of frequencies that Meep will consider when computing the uxes. After that, nf req is

36
the number of frequencies within the band df that Meep will compute the uxes for. So, if df = 10 and

nf req = 10, then Meep would compute the uxes for 10 frequencies separated by 1 unit within the band

df . One of the advantages of the FDTD method over other methods is that you can compute the uxes for

a band of frequencies in a single simulation. In this work, however, I was only interested in one frequency,

f cen and thus df = 0 and nf req = 1.

There are two ux planes. One for computing the reected ux and one for computing the transmit-

ted ux. The reected ux plane is designated f lux11 and the transmission ux plane is f luxT 1. In both

cases, the total plane is composed of two smaller planes: one is the cross-section of the rib and the other

is the cross-section of the slab. The rib has a size (t, w, 0) and the slab (d, sy, 0). Unlike when dening the

source plane, the ux planes did not change values when the pml was included or not. The only dierence

between the reection ux plane and the transmission ux plane is their longitudinal, z, coordinate. The

reection ux plane was placed 0.1 m to the right of the source (when looking at the y=0 cross-section

in Fig. 4.2) and the transmission ux plane was located 0.1 m to the right of the facet. The x and y

coordinates of the centers correspond to the x and y coordinates of the rib and slab (only the z coordinates

change).

Finally, the commands to run the simulation.

; ===== RUN THE SIMULATION =====================================================


( use - output - directory ( string - append " wvg - out " ( number - > string h )))
( define decayplus 50)
( define decayval 1e -2)
( define decaypoint ( vector3 0 0 (+ zfacet 0.1)))
( if facet ? ( begin
( load - minus - flux " flux11 - flux " flux11 )
))
( run - sources +
( stop - when - fields - decayed decayplus srccomp decaypoint decayval )
( at - beginning output - epsilon )
( at - every 1 ( output - png srccomp " -0 y 0 - Zc dkbluered -T - S3 -A $EPS -a lines "))
)
( if ( not facet ?) ( begin
( save - flux " flux11 - flux " flux11 )
))
( display - fluxes flux11 fluxT1 )

The rst command, use-output-directory does just what it says, it creates an output directory

that will be used to store various les output by the simulation. Since I ran the simulations with many values

of h, I created an output directory for each. Since h is a number, I used the command (number->string
h) to convert it to a string. This was then appended to wvg-out using the string-append command.

The next three lines dene variables that are used to run the simulation which will be explained below

when run-sources+ is described. As explained above, the simulation is actually run twice. A normalization

run is executed rst and the computed uxes are then loaded during the facet run and subtracted from the

ux plane. Thus, if facet?=true, then the flux11 uxes are loaded (negatively).

37
Meep provides various run functions. The one used here is run-sources+. It runs the simulation un-

til a stop condition is reached plus a specied number of additional steps. The stop condition is provided by

stop-when-fields-decayed. That command takes four arguments: decayplus dened with a default value
of 50, srccomp which was dened in the sources section, decaypoint which is a point in the computational lat-
tice, and decayval which was dened with default value 1102 . At each step, stop-when-fields-decayed
compares the absolute value squared of the eld component specied by srccomp at the point decaypoint
with its value at the beginning of the simulation. If the eld has decreased by a factor of decayval, then

the simulation runs for an additional decayplus time steps and stops. So, in this example, when |Ey |
2
at a

point 0.1 m to the right of the facet is 1 hundredth of its initial value, the simulation will run an additional

50 time steps and stop. All of this is necessary because it is usually not known beforehand how many time

steps will be required for the simulation to run.

I tried values of devayval equal to 1/100th and 1/1000th and values of decayplus equal to 50 and

100. In any combination of those values, the reectivities were all within 3 signicant gures of each other.

Thus, I mostly used the default values set above since they resulted in ever so slightly shorter simulation run

times. The next bit of code tells Meep to store the uxes from the normalization run so they can be loaded

during the facet run. Finally, display-fluxes outputs the uxes to stdout.

4.3 Results
In this section, I will present the results from simulating three types of waveguides: the symmetric

planar waveguide, the asymmetric planar waveguide, and the rib waveguide. The symmetric waveguide was

rst simulated in two dimensions so that the results could be compared with the published results created

by Yijing Chen using Lumerical [10, Fig. 7(a)]. This was done in order to verify that the Meep setup was

working correctly. Then, the simulation was run again in three dimensions in anticipation of simulating the

rib waveguide, a 3D structure. Once it was determined that the 2D and 3D simulations were consistent, it

was an easy matter to change the indices for each layer and simulate the asymmetric waveguide, again, in

anticipation of simulating the rib waveguide. The asymmetric waveguide was also simulated in 2D and 3D

and the results were shown to be consistent. Finally, a rib structure was added to the asymmetric waveguide

to simulate the rib waveguide. In all cases, the wavelength of the source was = 1.55 m and the lengths

of the waveguides were L = 10 m. Also, in each case, the reectivity curves were created for the guided

TE mode. Progressing in this way allowed for minimal change to the code in going from a symmetric slab

waveguide, compared with published results, to the rib waveguide studied in this work.

Lastly, Dr. Holmstrom's group has created a semi-analytical approach to determine the reectivities

of the rib waveguides. These results are compared to the FDTD simulations at the end of this section.

38
4.3.1 Symmetric Waveguide

0.5

guided mode reectivity


0.4

0.3

0.2
Meep
Lumerical

0 0.2 0.4 0.6 0.8 1


core thickness, h (m)

Figure 4.3: A plot showing reectivity curves for a symmetric waveguide using Meep (2D) and Lumerical
(Chen).

The symmetric waveguide consisted of a silicon (Si) core with index of refraction n1 = 3.44 and an

upper and lower cladding of silicon dioxide (SiO2 ) having index of refraction n2 = n3 = 1.44. The thickness,

or height, of the core was simulated for 0.05 m h 1 m. The total guided mode reectivity is plotted

versus h in Fig. (4.3). Chen's results are also plotted for comparison. As can be seen, there is good agreement

between Meep and Lumerical with both showing the characteristic increase in reectivity as the number of

supported modes increases from 1 to 2.

0.5
guided mode reectivity

0.4

0.3

0.2
Meep (2D)
Meep (3D)
0.1
0 0.2 0.4 0.6 0.8 1
core thickness, h (m)

Figure 4.4: A plot showing reectivity curves for a symmetric waveguide using Meep in 2D and 3D.

The next step was to run the simulation in 3 dimensions. Those results are shown in Fig. (4.4)

along with the 2D results for comparison. As can been seen, there is good agreement between the 2D and

39
3D simulations although the 3D results are slightly lower than the 2D ones. Since the reectivity is the ratio

of reected ux to the incident ux, then for the reectivity to be smaller, either the incident ux must be

larger, the reected ux must be smaller, or a combination of the two. The incident ux is obviously larger

in the 3D case simply because it has a larger area (in the 2D case, the ux plane is a line). However,

the reected ux is computed through a same larger area and thus should be larger by the same amount.

However, perhaps there is slightly more loss in the 3D case since now radiation can escape given the extra

dimension.

4.3.2 Asymmetric Waveguide

0.16

0.14
guided mode reectivity

0.12

0.1

0.08

0.06 Asymmetric (2D)


Asymmetric (3D)
0.04
0 0.2 0.4 0.6 0.8 1
core thickness, h (m)

Figure 4.5: A plot showing reectivity curves for an asymmetric waveguide using Meep in 2D and 3D.

Next, the indices were changed in order to simulate the asymmetric waveguide. In this case, the core

is composed of silicon nitride (SiN) having index n1 = 1.9827. The lower cladding is made of SiO2 and has

index n2 = 1.4440. The upper cladding is air with index n3 = 1. There is a silicon substrate in the actual

rib waveguide, but it is far outside the simulation area. The results are shown in Fig. (4.5). Again, there is

good agreement between the 2D and 3D cases with the 3D case being slightly lower than the 2D one.

There is no sudden increase as in the symmetric case because the waveguide is single mode for all

thicknesses simulated. However, the reectivity does increase as h decreases below about 0.2. It seems

unlikely that the reectivity would increase as the core thickness decreases, however, when I tried increasing

the resolution of the simulation, this feature remained.

40
4.3.3 Rib Waveguide

0.14

guided mode reectivity


0.12

0.1

0.08

0.06
Asymmetric (3D)
Rib waveguide
0.04
0 0.2 0.4 0.6 0.8 1
core thickness, h (m)

Figure 4.6: A plot showing reectivity curves for an asymmetric waveguide and a 2 m wide rib waveguide.

Finally, a 2 m wide rib structure with height t = 0.3h was added to the asymmetric waveguide thus

creating the rib waveguide. The rib waveguide is inherently a 3D structure so the 3D asymmetric reectivities

are shown for comparison in Fig. (4.6). As can be seen, the reectivity curve of the rib waveguide is slightly

below the curve for the asymmetric waveguide. This makes sense since the core thickness of the rib waveguide

is h = d + t, whereas for the asymmetric waveguide it is just h. So, the slab part of the rib waveguide core

has thickness d which is smaller than h (Fig. 4.1) so it is expected that its reectivity would be smaller.

0.14
guided mode reectivity

0.12

0.1

0.08
FDTD
0.06 R4
Rmeas

0 0.2 0.4 0.6 0.8 1


core thickness, h (m)

Figure 4.7: A plot showing eectivity curves for a rib waveguide from Meep and the semi-analytical approach,
R4 . Also, Rmeas is the value obtained from experiment.

Next, the FDTD (Meep) simulation of the rib waveguide is compared to the semi-analytical approach,

R4 , created by Dr. Holmstrom's group, in Fig. 4.7. Also shown in that gure is Rmeas , the experimental

41
reectivity obtained using the Fabry-Perot interference method (also obtained by Dr. Holmstrom's group).

As can be seen, there is good agreement between all three methods, at least for thickness of about 0.2 h

0.5. For h 0.5, R4 and FDTD begin to deviate signicantly.

0.14

0.12

Reectivity
0.1

0.08
2m
0.06 1m
0.5m
0.04
0 0.2 0.4 0.6 0.8 1
thickness, h (m)

Figure 4.8: A plot showing reectivity curves for three dierent rib widths: w = 0.5 m, 1 m, and 2 m.

The rib waveguide was also simulated for rib widths of w = 1 m and w = 0.5 m. Those reectivity

curves are shown in Fig. 4.8 along with the 2 m rib waveguide. As can be seen, the reectivity generally

decreases as the rib width decreases. Again, this makes sense because the slab part of the rib waveguide has

thickness d so as the rib width becomes smaller and smaller, the waveguide approaches that of an asymmetric

waveguide with thickness d instead of h.

0.12

0.1
guided mode reectivity

0.08

0.06

0.04

0.02
Meep (TM)
R4 (TM)
0
0 0.2 0.4 0.6 0.8 1
core thickness, h (m)

Figure 4.9: A plot showing reectivity curves for the guided TM mode for a 2 m rib waveguide created with
Meep and the semi-analytical approach, R4 .

So far, all of the results were for the guided TE mode. The simulation was also run for the guided

42
TM mode and those results are compared with the semi-analytical approach in Fig. 4.9. In this case, there is

quite a discrepancy between FDTD and R4 . I am not sure about the cause of this discrepancy, but to change

from the TE mode to the TM mode requires only one change in the .ctl le where the source component,

srccomp, variable is changed from Ey to Ex. Everything else remains the same, including the ux regions.

43
CHAPTER 5

CONCLUSION

Arguably, one of the major stumbling blocks in the pursuit of a degree in physics is electrodynamics.

However, the plunge into the Maxwell equations provides the student not only with a new perspective of

the world, but an insight into the mathematics that appears elsewhere in physics. Understanding exactly

what approximations are made, and how these approximations aect the governing equations, was probably

the hardest part of this work. Hopefully, it is now clear what the dierence is between the microscopic

and macroscopic Maxwell equations and what is meant by a linear, isotropic, non-magnetic, and source-free

material (i.e. most dielectrics). Even when these approximations are made, only the simplest of geometries

have analytical solutions and so approximate methods must be used. The FDTD method is proving to be a

valuable tool to analyze such intractable problems. The simplicity of the nite dierence and the elegance

of the Yee cell make the method easy to implement on a computer and even though it is computationally

intensive, the advent of ever more powerful computers make it more and more accessible. The open source

implementation of FDTD in the form of Meep is able to tackle these problems and it lends itself to running on

a supercomputer (a major advantage when it comes to FDTD). Once the hurdle of running a software package

from the command line is overcome, Meep is as capable, if not more, than the commercial software currently

available. The reectivity curves of various planar and planar-like (i.e. rib) waveguides were simulated and

compared to previous results and good agreement was found. Firstly, the guided mode reectivity curves

for a symmetric planar waveguide created with Meep had excellent agreement with published results using

Lumerical. Furthermore, Meep showed good agreement with the semi-analytical R4 for the TE mode within

a certain range of thicknesses. However, beyond a thickness of about h = 500 nm, the two approximations

began to diverge. There was almost no agreement between Meep and R4 for the TM mode reectivity

curves. The discrepancies between R4 and Meep could be the subject of further investigation. Finally, the

fundamental guided mode proles were shown to be consistent between Meep and the eective index method.

44
BIBLIOGRAPHY

[1] David J. Griths. Introduction to Electrodynamics. Prentice Hall, 3rd edition, 1999.

[2] Andrew Zangwill. Modern Electrodynamics. Cambridge University Press, 2013.

[3] J. Liu. Photonic Devices. Cambridge University Press, 2009.

[4] John D. Joannopoulos, Steven G. Johnson, Joshua N. Winn, and Robert D. Meade. Photonic Crystals.
Princeton University Press, 2011.

[5] Kane Yee. Numerical solution of initial boundary value problems involving maxwell's equations in

isotropic media. IEEE Transactions on Antennas and Propagation, 14(3):302307, May 1966.

[6] A. Taove and S.C. Hagness. Computational Electrodynamics: The Finite-dierence Time-domain
Method. Artech House antennas and propagation library. Artech House, 2005.

[7] Jean-Pierre Berenger. A perfectly matched layer for the absorption of electromagnetic waves. Journal
of Computational Physics, 114(2):185200, Oct 1994.

[8] Atef Z. Elsherbeni and Veysel Demir. The Finite Dierence Time Domain Method for Electromagnetics:
With MATLAB Simulations. SciTech Publishing, 2009.

[9] Ardavan F. Oskooi, David Roundy, Mihai Ibanescu, Peter Bermel, J. D. Joannopoulos, and Steven G.

Johnson. MEEP: A exible free-software package for electromagnetic simulations by the FDTD method.

Computer Physics Communications, 181:687702, January 2010.

[10] Yijing Chen, Yicheng Lai, Tow Chong Chong, and Seng-Tiong Ho. Exact solution of facet reections

for guided modes in high-refractive-index-contrast sub-wavelength waveguide via a Fourier analysis

and perturbative series summation: Derivation and applications. Journal of Lightwave Technology,
30(15):24552471, Aug 2012.

45
APPENDIX A

PROGRAM LISTINGS

A.1 Eective Index Method Mathematica Notebook

46
Define waveguide parameters
= 1.55;
d = .2;
t = .11;
w = 2;
n1 = 1.9827;
n2 = 1.444;
n3 = 1;
c = 2.99 1014 ;
0 = 4 10-13 ;
0 = 8.854 10-18 ;
n1
k1 = 2 ;

n2
k2 = 2 ;

n3
k3 = 2 ;

Asymmetric waveguides
Find the TE0 mode profile and effective index for region I

Define normalized mode parameters


2
V= (d + t) n21 - n22

1.70735

n22 - n23
aE =
n21 - n22
0.587843

Printed by Wolfram Mathematica Student Edition


2 Effective Index Method Our Rib.nb

Solve TE eigenvalue equation for h1


1/2 1/2
V2 - 2 + (1 + aE ) V2 - 2
PlotTan[], , {, 0, }
1/2 1/2
2 - V2 - 2 (1 + aE ) V2 - 2

0.5 1.0 1.5 2.0 2.5 3.0

-2

-4

-6

1/2 1/2
V2 - 2 + (1 + aE ) V2 - 2
= /. FindRootTan[] , {, 1.5}
1/2 1/2
2 - V2 - 2 (1 + aE ) V2 - 2
1.42693

h1 = / (d + t)
4.60299

Get TE0 propagation constant

0 = k21 - h1 2
6.58856

Find remaining wave numbers

2 = 20 - k22
3.02419

3 = 20 - k23
5.19393

Printed by Wolfram Mathematica Student Edition


Effective Index Method Our Rib.nb 3

Get phase, effective thickness, and normalization coefficient


h1 (2 - 3 )
PlotTan[2 ], , {, - / 4, / 4}
h1 2 + 2 3

-0.5 0.5

-1

-2

h1 (2 - 3 )
= /. FindRootTan[2 ] , {, 0}
h1 2 + 2 3
- 0.13218

1 1
dE = (d + t) + +
2 3
0.833199

2 c 0
CTE =
0 dE

16.6569

Printed by Wolfram Mathematica Student Edition


4 Effective Index Method Our Rib.nb

Get the x-dependence of the y-component of the TE 0 mode profile


Eyx[x_] := Piecewise
h1 (d + t) d+t d+t
CTE Cos - Exp3 - x , x >
2 2 2
,

d+t d+t
CTE Cos[h1 x - ], - <x<
2 2
,

h1 (d + t) d+t d+t
CTE Cos + Exp2 + x , x < -
2 2 2

Plot[Eyx[x], {x, - (d + t), d + t}]

16

14

12

10

-0.3 -0.2 -0.1 0.1 0.2 0.3

Find the effective index of region I


0
nI =
2
1.62533

Find the effective index of region II


2
VII = d n21 - n22

1.10151

Printed by Wolfram Mathematica Student Edition


Effective Index Method Our Rib.nb 5

1/2 1/2
VII2 - 2 + (1 + aE ) VII2 - 2
PlotTan[], , {, 0, }
1/2 1/2
2 - VII2 - 2 (1 + aE ) VII2 - 2

0.5 1.0 1.5 2.0 2.5 3.0

-2

-4

-6

1/2 1/2
VII2 - 2 + (1 + aE ) VII2 - 2
= /. FindRootTan[] , {, 1}
1/2 1/2
2 - VII2 - 2 (1 + aE ) VII2 - 2
1.04401

hII1 = / d
5.22004

II = k21 - hII1 2
6.11129

nII =
II
2
1.50759

Effective symmetric waveguide


nI
kI = 2

nII
kII = 2

6.58856

6.11129

2
Veff = w nI2 - nII2

4.92395

Printed by Wolfram Mathematica Student Edition


6 Effective Index Method Our Rib.nb

j = 0;

hI w j nI2 V2eff - hI2 w2


PlotTan , {hI, 0, }
2 2 hI w
- ,
nII2

10

0.5 1.0 1.5 2.0 2.5 3.0

-5

hI w j nI2 V2eff - hI2 w2


hI = hI /. FindRootTan , {hI, 1}
2 2 hI w
- ==
nII2
1.14591

00 = kI2 - hI2
6.48815

II = 200 - kII2
2.17904

200 200
q2 = + -1
kI2 kII2
1.09689

2
dM = w +
II q2
2.83677

2 c 0 nI2
CTM =
00 dM
0.00238743

j = 0;
j
eff =
2
0

Printed by Wolfram Mathematica Student Edition


Effective Index Method Our Rib.nb 7

Hx[y_] := Piecewise
hI w w w
CTM Cos - eff ExpII - y, y >
2 2 2
,

w w
CTM Cos[hI y - eff ], - <y<
2 2
,

hI w w w
CTM Cos + eff ExpII + y, y < -
2 2 2
00
Eyy[y_] := Hx[y]
2 c nI2 0

Plot[Eyy[y], {y, - w, w}]

0.5

0.4

0.3

0.2

0.1

-2 -1 1 2

Ey[x_, y_] := Eyx[x] Eyy[y]

ContourPlot[Ey[y, x], {x, - 3, 3}, {y, - 3, 3}, ClippingStyle Automatic]

Printed by Wolfram Mathematica Student Edition


A.2 Tandy Supercomputer

A.2.1 Meep Install Script


# Here is what worked for me to get Meep and MPB working on the
# Tandy supercomputer ( http : www . tandysupercomputing . org )
# Phillip Forkner
# March 8 , 2016
# phillip . forkner@gmail . com

# the next few lines are probably best put into . bash_profile so that they ' re
# loaded everytime you login

# load modules
ml gcc blas lapack openmpi libtool libunistring bdwgc guile ffmpeg x264

# check versions of loaded modules


ml
# output for me is :
# 1) gcc /4.4.7 -3
# 2) blas /1
# 3) lapack /3.5.0
# 4) openmpi /1.6.5
# 5) libtool /2.4.6
# 6) libunistring /0.9.5
# 7) bdwgc /7.4.2
# 8) guile /2.0.11
# 9) ffmpeg /2.1.4
# 10) x264 /2409

# set some environment variables


export PATH = $PATH :/ home / pforkner / bin
export LDFLAGS =" - L / home / pforkner / lib -L/ home / pforkner / share "
export CPPFLAGS = - I / home / pforkner / include
export LD_LIBRARY_PATH = $LD_LIBRARY_PATH :/ home / pforkner / lib :/ home / pforkner / share

# suppress some guile warnings


export GUILE_WARN_DEPRECATED = no

# Now , install the following from source in $HOME ( or whichever path you ' re
# using ):

mkdir downloads
cd downloads

# harminv
wget http :// ab - initio . mit . edu / harminv / harminv -1.4. tar . gz
tar - xvzf harminv -1.4. tar . gz
cd harminv -1.4
./ configure -- prefix = $HOME
make && make install
cd ..

# libctl
wget http :// ab - initio . mit . edu / libctl / libctl -3.2.2. tar . gz
tar - xvzf libctl -3.2.2. tar . gz
cd libctl -3.2.2
./ configure -- prefix = $HOME
make && make install
cd ..

# hdf5
wget http :// www . hdfgroup . org / ftp / HDF5 / current / src / hdf5 -1.8.16. tar . gz
tar - xvzf hdf5 -1.8.16. tar . gz
cd hdf5 -1.8.16

54
./ configure -- prefix = $HOME -- enable - parallel
make && make install
cd ..

# h5utils
wget http :// ab - initio . mit . edu / h5utils / h5utils -1.12.1. tar . gz
tar - xvzf h5utils -1.12.1. tar . gz
cd h5utils -1.12.1
./ configure -- prefix = $HOME
make && make install
cd ..

# fftw
wget http :// www . fftw . org / fftw -3.3.4. tar . gz
tar - xvzf fftw -3.3.4. tar . gz
cd fftw -3.3.4
./ configure -- prefix = $HOME -- enable - mpi
make && make install
cd ..

# NOTE BELOW that for some reason I could not use the " $HOME "
# variable in " - - with - libctl =" when configuring MPB and Meep .
# So , replace " username " with your username ( or whichever path
# you ' re using ) in the three places below .

# MPB ( without and with mpi )


wget http :// ab - initio . mit . edu / mpb / mpb -1.5. tar . gz
tar - xvzf mpb -1.5. tar . gz
cd mpb -1.5
./ configure -- prefix = $HOME -- with - libctl = home / username / share / libctl
make && make install
make distclean
./ configure -- prefix = $HOME -- with - mpi -- with - libctl = home / username / share / libctl
make && make install
cd ..

# Meep
wget http :// ab - initio . mit . edu / meep / meep -1.3. tar . gz
tar - xvzf meep -1.3. tar . gz
cd meep -1.3
./ configure -- prefix = $HOME -- with - mpi -- with - libctl = home / username / share / libctl
make && make install
cd ~

55
A.2.2 Sample .bsub Script
#!/ usr / bin / env bash

# BSUB -q long
# BSUB -n 48
# BSUB -R " span [ ptile =16]"
# BSUB -o % J_stdout . txt
# BSUB -e % J_stderr . txt
# BSUB -J "3 drib2 "

# BSUB -W 10:00

ml gcc blas lapack openmpi libtool libunistring bdwgc guile

for h in {0.35 ,0.45 ,0.55 ,0.6 ,0.8} ; do


mkdir wvg - out$h
mpirun meep - mpi h= $h wvg . ctl >> wvg - out$h / wvg . out
mpirun meep - mpi h= $h facet ?= true wvg . ctl >> wvg - out$h / wvg . out
printf " $h ," >> fluxes . csv
grep " flux1 :" wvg - out$h / wvg . out | tr "\ n " " ," >> fluxes . csv
grep " Elapsed " wvg - out$h / wvg . out | tr "\ n " " ," >> fluxes . csv
printf "\ n " >> fluxes . csv
done

56
A.3 Meep .ctl Files

A.3.1 Symmetric Waveguide in Two Dimensions


; Planar waveguide : Si in glass
; 2 dimensions
; Phillip Forkner
; units are microns

; ___________________________________________
; | PML |
; | ___________________________________ |
; | | | |
; | | | |
; | | upper x | |
; | | ^ | |
; | | _________________ | _________________ | |
; | | | | |
; sx | | core ---> y | h |
; | | | |
; | | ___________________________________ | |
; | | | |
; | | lower | |
; | | | |
; | | ___________________________________ | |
; | |
; | ___________________________________________ |
; sy

; materials
( define SiN ( make dielectric ( index 1.9827)))
( define SiO2 ( make dielectric ( index 1.4440)))
( define Si ( make dielectric ( index 3.4401)))
( define glass ( make dielectric ( index 1.5)))

; waveguide parameters
( define - param h 0.3)
( define hmax 2)
( define L 10)
( define w 2)
( define spml 0.4)

; lattice
( define res 32)
( define sx (* 5 hmax ))
( define sy no - size )
( define sz (+ L 1))
( set ! geometry - lattice ( make lattice ( size sx sy sz )))
( set ! pml - layers ( list ( make pml ( thickness spml ))))
( set - param ! resolution res )

; waveguide
( define - param facet ? false ) ; no facet for normalization
( define szwvg ( if facet ? L infinity ))
( define zwvg ( if facet ? (/ ( - sz L ) -2) 0))
( set ! geometry ( list
( make block ; upper cladding
( size (/ sz 2) infinity szwvg )
( center (/ sz 4) 0 zwvg )
( material glass )
)
( make block ; lower cladding
( size (/ sz 2) infinity szwvg )
( center (/ sz -4) 0 zwvg )
( material glass )

57
)
( make block ; core
( size h infinity szwvg )
( center 0 0 zwvg )
( material Si )
)
))

; source
( define wvlen 1.55)
( define srccomp Ey )
( define zsrc (+ (/ sz -2) spml 0.1))
( set ! sources ( list ( make eigenmode - source
( src ( make gaussian - src
( wavelength wvlen )
( width 0.5)
))
( component srccomp )
( size sx 0 0)
( center 0 0 zsrc )
( direction Z )
)))

; flux planes ( must be done after geometry , sources , resolution , etc .)


( define zfacet ( - L (/ sz 2)))
( define fcen (/ 1 wvlen ))
( define df 0)
( define nfreq 1)
( define flux11 ( add - flux fcen df nfreq
( make flux - region
( size h 0 0)
( center 0 0 (+ zsrc 0.1))
)
))
( define fluxT1 ( add - flux fcen df nfreq
( make flux - region
( size h 0 0)
( center 0 0 (+ zfacet 0.1))
)
))

; ===== RUN THE SIMULATION =====================================================


( use - output - directory ( string - append " wvg - out " ( number - > string h )))
( define decayplus 100)
( define decayval 1e -2)
( define decaypoint ( vector3 0 0 (+ zfacet 0.1)))
( if facet ? ( begin
( load - minus - flux " flux11 - flux " flux11 )
))
( run - sources +
( stop - when - fields - decayed decayplus srccomp decaypoint decayval )
)
( if ( not facet ?) ( begin
( save - flux " flux11 - flux " flux11 )
))
( display - fluxes flux11 fluxT1 )

58
A.3.2 Symmetric Waveguide in Three Dimensions
; Planar waveguide
; 3 dimensions
; Phillip Forkner
; units are microns

; ___________________________________________
; | PML |
; | ___________________________________ |
; | | | |
; | | | |
; | | upper x | |
; | | ^ | |
; | | _________________ | _________________ | |
; | | | | |
; sx | | core ---> y | h |
; | | | |
; | | ___________________________________ | |
; | | | |
; | | lower | |
; | | | |
; | | ___________________________________ | |
; | |
; | ___________________________________________ |
; sy

; materials
( define SiN ( make dielectric ( index 1.9827)))
( define SiO2 ( make dielectric ( index 1.4440)))
( define Si ( make dielectric ( index 3.4401)))
( define glass ( make dielectric ( index 1.5)))

; waveguide parameters
( define - param h 0.3)
( define hmax 2)
( define L 10)
( define w 2)
( define spml 0.4)

; lattice
( define res 32)
( define sx (* 5 hmax ))
( define sy (* 5 w ))
( define sz (+ L 1))
( set ! geometry - lattice ( make lattice ( size sx sy sz )))
( set ! pml - layers ( list ( make pml ( thickness spml ))))
( set - param ! resolution res )

; waveguide
( define - param facet ? false ) ; no facet for normalization
( define szwvg ( if facet ? L infinity ))
( define zwvg ( if facet ? (/ ( - sz L ) -2) 0))
( set ! geometry ( list
( make block ; upper cladding
( size (/ sz 2) infinity szwvg )
( center (/ sz 4) 0 zwvg )
( material glass )
)
( make block ; lower cladding
( size (/ sz 2) infinity szwvg )
( center (/ sz -4) 0 zwvg )
( material glass )
)
( make block ; core
( size h infinity szwvg )

59
( center 0 0 zwvg )
( material Si )
)
))

; source
( define wvlen 1.55)
( define srccomp Ey )
( define zsrc (+ (/ sz -2) spml 0.1))
( set ! sources ( list ( make eigenmode - source
( src ( make gaussian - src
( wavelength wvlen )
( width 0.5)
))
( component srccomp )
( size sx ( - sy 2) 0)
( center 0 0 zsrc )
( direction Z )
)))

; flux planes ( must be done after geometry , sources , resolution , etc .)


( define zfacet ( - L (/ sz 2)))
( define fcen (/ 1 wvlen ))
( define df 0)
( define nfreq 1)
( define flux11 ( add - flux fcen df nfreq
( make flux - region
( size h sy 0)
( center 0 0 (+ zsrc 0.1))
)
))
( define fluxT1 ( add - flux fcen df nfreq
( make flux - region
( size h sy 0)
( center 0 0 (+ zfacet 0.1))
)
))

; ===== RUN THE SIMULATION =====================================================


( use - output - directory ( string - append " wvg - out " ( number - > string h )))
( define decayplus 50)
( define decayval 1e -2)
( define decaypoint ( vector3 0 0 (+ zfacet 0.1)))
( if facet ? ( begin
( load - minus - flux " flux11 - flux " flux11 )
))
( run - sources +
( stop - when - fields - decayed decayplus srccomp decaypoint decayval )
)
( if ( not facet ?) ( begin
( save - flux " flux11 - flux " flux11 )
))
( display - fluxes flux11 fluxT1 )

60
A.3.3 Asymmetric Waveguide in Three Dimensions
; Planar waveguide
; 3 dimensions
; Phillip Forkner
; units are microns

; ___________________________________________
; | PML |
; | ___________________________________ |
; | | | |
; | | | |
; | | upper x | |
; | | ^ | |
; | | _________________ | _________________ | |
; | | | | |
; sx | | core ---> y | h |
; | | | |
; | | ___________________________________ | |
; | | | |
; | | lower | |
; | | | |
; | | ___________________________________ | |
; | |
; | ___________________________________________ |
; sy

; materials
( define SiN ( make dielectric ( index 1.9827)))
( define SiO2 ( make dielectric ( index 1.4440)))
( define Si ( make dielectric ( index 3.4401)))
( define glass ( make dielectric ( index 1.5)))

; waveguide parameters
( define - param h 0.3)
( define hmax 2)
( define L 10)
( define w 2)
( define spml 0.4)

; lattice
( define res 32)
( define sx (* 5 hmax ))
( define sy (* 5 w ))
( define sz (+ L 1))
( set ! geometry - lattice ( make lattice ( size sx sy sz )))
( set ! pml - layers ( list ( make pml ( thickness spml ))))
( set - param ! resolution res )

; waveguide
( define - param facet ? false ) ; no facet for normalization
( define szwvg ( if facet ? L infinity ))
( define zwvg ( if facet ? (/ ( - sz L ) -2) 0))
( set ! geometry ( list
( make block ; lower cladding
( size (/ sz 2) infinity szwvg )
( center (/ sz -4) 0 zwvg )
( material SiO2 )
)
( make block ; core
( size h infinity szwvg )
( center 0 0 zwvg )
( material SiN )
)
))

61
; source
( define wvlen 1.55)
( define srccomp Ey )
( define zsrc (+ (/ sz -2) spml 0.1))
( set ! sources ( list ( make eigenmode - source
( src ( make gaussian - src
( wavelength wvlen )
( width 0.5)
))
( component srccomp )
( size sx ( - sy 2) 0)
( center 0 0 zsrc )
( direction Z )
)))

; flux planes ( must be done after geometry , sources , resolution , etc .)


( define zfacet ( - L (/ sz 2)))
( define fcen (/ 1 wvlen ))
( define df 0)
( define nfreq 1)
( define flux11 ( add - flux fcen df nfreq
( make flux - region
( size h sy 0)
( center 0 0 (+ zsrc 0.1))
)
))
( define fluxT1 ( add - flux fcen df nfreq
( make flux - region
( size h sy 0)
( center 0 0 (+ zfacet 0.1))
)
))

; ===== RUN THE SIMULATION =====================================================


( use - output - directory ( string - append " wvg - out " ( number - > string h )))
( define decayplus 50)
( define decayval 1e -2)
( define decaypoint ( vector3 0 0 (+ zfacet 0.1)))
( if facet ? ( begin
( load - minus - flux " flux11 - flux " flux11 )
))
( run - sources +
( stop - when - fields - decayed decayplus srccomp decaypoint decayval )
)
( if ( not facet ?) ( begin
( save - flux " flux11 - flux " flux11 )
))
( display - fluxes flux11 fluxT1 )

62
A.3.4 Rib Waveguide
; Rib waveguide
; 3 dimensions
; Phillip Forkner
; units are microns

; ___________________________________________
; | PML |
; | ___________________________________ |
; | | w | |
; | | _______ | | _
; | | air | | | | |
; | | | | t | | |
; | | _____________ | | _____________ | | |
; | | | | | h
; sx | | core | d | |
; | | | | |
; | | ___________________________________ | | _
; | | | |
; | | lower | |
; | | | |
; | | ___________________________________ | |
; | |
; | ___________________________________________ |
; sy

; materials
( define SiN ( make dielectric ( index 1.9827)))
( define SiO2 ( make dielectric ( index 1.4440)))
( define Si ( make dielectric ( index 3.4401)))
( define glass ( make dielectric ( index 1.5)))

; waveguide parameters
( define - param h 0.3)
( define hmax 2)
( define L 10)
( define w 2)
( define t (* 0.3 h ))
( define d ( - h t ))
( define spml 0.4)

; lattice
( define res 32)
( define sx (* 5 hmax ))
( define sy (* 5 w ))
( define sz (+ L 1))
( set ! geometry - lattice ( make lattice ( size sx sy sz )))
( set ! pml - layers ( list ( make pml ( thickness spml ))))
( set - param ! resolution res )

; waveguide
( define - param facet ? false ) ; no facet for normalization
( define szwvg ( if facet ? L infinity ))
( define zwvg ( if facet ? (/ ( - sz L ) -2) 0))
( set ! geometry ( list
( make block ; lower cladding
( size (/ sz 2) infinity szwvg )
( center (/ sz -4) 0 zwvg )
( material SiO2 )
)
( make block ; rib
( size t w szwvg )
( center (/ d 2) 0 zwvg )
( material SiN )
)

63
( make block ; slab
( size d infinity szwvg )
( center (/ t -2) 0 zwvg )
( material SiN )
)
))

; source
( define wvlen 1.55)
( define srccomp Ey )
( define zsrc (+ (/ sz -2) spml 0.1))
( set ! sources ( list ( make eigenmode - source
( src ( make gaussian - src
( wavelength wvlen )
( width 0.5)
))
( component srccomp )
( size sx ( - sy 2) 0)
( center 0 0 zsrc )
( direction Z )
)))

; flux planes ( must be done after geometry , sources , resolution , etc .)


( define zfacet ( - L (/ sz 2)))
( define fcen (/ 1 wvlen ))
( define df 0)
( define nfreq 1)
( define flux11 ( add - flux fcen df nfreq
( make flux - region ; rib
( size t w 0)
( center (/ d 2) 0 (+ zsrc 0.1))
)
( make flux - region ; slab
( size d sy 0)
( center (/ t -2) 0 (+ zsrc 0.1))
)
))
( define fluxT1 ( add - flux fcen df nfreq
( make flux - region ; rib
( size t w 0)
( center (/ d 2) 0 (+ zfacet 0.1))
)
( make flux - region ; slab
( size d sy 0)
( center (/ t -2) 0 (+ zfacet 0.1))
)
))

; ===== RUN THE SIMULATION =====================================================


( use - output - directory ( string - append " wvg - out " ( number - > string h )))
( define decayplus 50)
( define decayval 1e -2)
( define decaypoint ( vector3 0 0 (+ zfacet 0.1)))
( if facet ? ( begin
( load - minus - flux " flux11 - flux " flux11 )
))
( run - sources +
( stop - when - fields - decayed decayplus srccomp decaypoint decayval )
)
( if ( not facet ?) ( begin
( save - flux " flux11 - flux " flux11 )
))
( display - fluxes flux11 fluxT1 )

64

Vous aimerez peut-être aussi