Course Paperwork
Homework
Assignments
 Homework 1 — Dartboard
 Homework 2 — Derivations
 Homework 3 — Transfer Matrix Method
 Homework 4 — star() and cascn()
 Homework 5 — TMM Parameter Sweeps
 Homework 6 — calcpml2d() and yeeder()
 Homework 7 — Build Grating for 2D FDFD
 Homework 8 — Implement 2D FDFD
 Homework 9 — FDFD Parameter Sweeps
 Homework 10 — convmat() and PWEM
 Homework 11 — RCWA Implementation
Help
Final Project
Course Topics
Topic 0  Course Introduction
Topic 1  Preliminary Topics
Lectures & Notes
 (PDF) (Video) Lecture 1a – Maxwell’s Equations
 (PDF) (Video) Lecture 1b — Electromagnetic Waves
 (PDF) (Video) Lecture 1c — Wave Parameters
 (PDF) (Video) Lecture 1d — Dispersion Relation
 (PDF) (Video) Lecture 1d — EM Wave Polarization
 (PDF) (Video) Lecture 1e – Preliminary Topics in Computational Electromagnetics
Summaries
Supplemental Information
Topic 2  Transfer Matrix Method (TMM)
Lectures & Notes
 (PDF) (Video) Lecture 2a – OneDimensional Structures in Electromagnetics
 (PDF) (Video) Lecture 2b – Formulation of 4×4 Matrix Equation
 (PDF) (Video) Lecture 2c – Transfer Matrices
 (PDF) (Video) Lecture 2d – Formulation of 2×2 Matrix Wave Equation
 (PDF) (Video) – Lecture 2e – Scattering Matrices for SemiAnalytical Methods
 (PDF) (Video) – Lecture 2f – Advanced Networking Concepts
 (PDF) (Video) Lecture 2g – Transfer Matrix Method Using Scattering Matrices
 (PDF) (Video) Lecture 2h – Parameter Sweeps
MATLAB Implementation
 Implementation of TMM in MATLAB
This series of videos types and describes every line of code in MATLAB to implement the transfer matrix method (TMM) as described above.
Summaries
Supplemental Information
 (PDF) Lecture 2i – Transfer Matrix Method Extras
Topic 3  Concepts for 2D and 3D Simulations
Lectures & Notes
 (PDF) (Video) Lecture 3a – Solid State Electromagnetics
 (PDF) (Video) Lecture 3b – Calculation Examples Of Periodic Structures
 (PDF) (Video) Lecture 3c – Concept of Diffraction From Gratings
 (PDF) (Video) Lecture 3d – The Grating Equation
 (PDF) (Video) Lecture 3e – The Plane Wave Spectrum
 (PDF) (Video) Lecture 3f – Perfectly Matched Layer
Animations from the Notes
 Diffraction Orders from Ruled Gratings – Normal Incidence
 Diffraction Orders from Ruled Gratings – Oblique Incidence
 Diffraction Orders from Ruled Gratings – Angle Sweep
 Diffraction Orders from Crossed Gratings – Normal Incidence
 Diffraction Orders from Crossed Gratings – Oblique Incidence
 Diffraction Orders from Crossed Gratings – Angle Sweep
Topic 4  FiniteDifference FrequencyDomain (FDFD)
Lectures & Notes
 (PDF) (Video) Lecture 4a – Finite Difference Method
 (PDF) (Video) Lecture 4b – Maxwell’s Equations On A Yee Grid
 (PDF) (Video) Lecture 4c – Maxwell’s Equations in Matrix Form
 (PDF) (Video) Lecture 4d – Finite Difference Analysis of Waveguides
 (PDF) (Video) Lecture 4e – Finite Difference Frequency Domain (FDFD) Formulation
 (PDF) (Video) Lecture 4f – Finite Difference Frequency Domain (FDFD) Implementation
Supplemental Information
Topic 5  Other Methods Based on Finite Differences
Lectures & Notes
 (PDF) (Video) Lecture 5a – FiniteDifference TimeDomain (FDTD)
 (PDF) (Video) Lecture 5b – Beam Propagation Method
Implementation in MATLAB
 Implementation of 1D FDTD in MATLAB
See every line of MATLAB code typed and explained. By the end, you will have developed a fully functional 1D FDTD simulation that calculates and displays reflectance and transmittance from a device and animates the field interacting with the device. This course only contains the codes and does not explain or derive the FDTD method.
Supplemental Information
 OneDimensional FDTD with MATLAB
This is a complete online course intended for the complete beginner. It covers every detail of 1D FDTD in simple terms and with high quality visualizations. In addition, all of the code is presented and explained to implement the 1D FDTD method in MATLAB.  (Web) — EM Analysis Using FDTD
Topic 6  Plane Wave Expansion Method (PWEM)
Lectures & Notes
 (PDF) (Video) Lecture 6a – Maxwell’s Equations In Fourier Space
 (PDF) (Video) Lecture 6b – Matrix Form of Maxwell’s Equations in Fourier Space
 (PDF) (Video) Lecture 6c – Formulation of PWEM
 (PDF) (Video) Lecture 6d – Implementation of PWEM
Implementation in MATLAB
 Implementation of 2D PWEM for band calculation in MATLAB
This series of videos types and explains every line of code in MATLAB to implement the 2D plane wave expansion method as described above. The bands for a hexagonal lattice are calculated and then displayed in a professional plot from MATLAB.  Implementation of 3D PWEM for band calculation in MATLAB
This course contains lectures and coding sessions to implement a fully three dimensional plane wave expansion method in MATLAB. See every line of code in MATLAB typed and explained including calculation of the bands and displaying them in a professional plot.
Supplemental Information
 (PDF) Lecture 6e – Plane Wave Expansion Method Extras
Topic 7  Rigorous CoupledWave Analysis (RCWA)
Topic 8  Other Slicing and SemiAnalytical Methods
Topic 9  Variational Methods
Topic 10  Other Numerical Methods
Resources
Animations and Visualizations
 Animated Visualization of a Grating Vector
 Stereo image of a 3D Yee cell. Adjust the image size until it is just under 10 cm wide.
 Animation for justification of spacer regions before the PML
 Animation of construction of a band diagram for a 3D lattice
 Animation of construction of a band diagram for a 2D lattice
 Animation of construction of a full band diagram for a 2D lattice
MATLAB Resources
 See MATLAB section in Computational Methods in EE
 Download .zip file of MATLAB codes


 test_star.p — In Homework #5, you are required to write the function star() which combines two scattering matrices. The test_star.p file is a MATLAB program that tests and verifies your star() function to ensure that all features are working properly. See Homework #4 for details.
 test_cascn.p — In Homework #5, you are required to write the function cascn() which cascades an arbitary number of scattering matrices. The test_cascn.p file is a MATLAB program that tests and verifies your cascn() function to ensure that all features are working properly. See Homework #4 for details.
 test_yeeder.p — In Homework #6, you are required to write the function yeeder() which builds the derivative matrices. The test_yeeder.p file is a MATLAB program that tests and verifies your yeeder() function to ensure that all features are working properly. See Homework #5 for details.
 little_yeeder.p — This function works just like yeeder() from Homework #6 to construct derivative matrices, but limits the size of the matrices can be be constructed. It is intended only to help you troubleshoot your yeeder() function by providing the correct matrices. See Homework #6 for details on yeeder().
 test_calcpml2d.p — In Homework #6, you are required to write the function calcpml2d() which calculates the PML functions sx and sy. The test_calcpml2d.p file is a MATLAB program that tests and verifies your calcpml2d() function to ensure that all features are working properly. See Homework #6 for details.
 test_convmat.p — In Homework #8, you are required to write the function convmat() which constructs convolution matrices. The test_convmat.p file is a MATLAB program that tests and verifies your convmat() function to ensure that all features are working properly. See Homework #8 for details.


Note: The above items are protected function files and have a “.p” extension. They work just like “.m” files, but they cannot be opened to view the code inside them.