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
- Transfer Matrix Method
- (PDF) (Video) Lecture 2a – One-Dimensional 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 Semi-Analytical Methods
- (PDF) (Video) – Lecture 2f – Advanced Networking Concepts
- (PDF) (Video) Lecture 2g – Transfer Matrix Method Using Scattering Matrices
- (PDF) (Video) Lecture 2h – Parameter Sweeps
- Supplemental Information
- (PDF) Lecture 2i – Transfer Matrix Method Extras
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
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
Internet Resources
- Brillouin Zones – interactive summary of Brillouin zones
Topic 4 — Finite-Difference Frequency-Domain (FDFD)
Lectures & Notes
- The Finite-Difference Method
- Maxwell’s Equations on a Yee Grid
- Eigen-Mode Analysis Using the Finite-Difference Method
- Scattering Simulations Using the Finite-Difference Method
- Supplemental Information
Implementation in MATLAB
- Electromagnetic and Photonic Simulation for the Beginner: Finite-Difference Frequency-Domain in MATLAB
Perfect book to get started in computational electromagnetics. Includes theory, derivations, and all MATLAB codes for simulating waveguides, transmission liens, diffraction gratings, guided-mode resonance filters, frequency selective surfaces, metamaterials, metasurfaces, invisibility cloaks, surface waves and others. - ($) Implementation of Basic 2D FDFD in MATLAB
See every line of MATLAB code typed and explained. By the end, you will have developed a fully functional 2D FDFD algorithm that simulates scattering from a cylinder. It will be easy to customize the code to simulate scattering from any object. The course includes line-by-line explanation of CALCPML2D(), YEEDER2D() and the FDFD2D program. - ($) Implementation of Finite-Difference Analysis of Waveguides in MATLAB
See every line of MATLAB code typed and explained to perform rigorous analysis of waveguides. By the end, you will have developed a fully functional program that calculates hybrid modes in waveguides. It will be easy to customize the code to analyze any waveguide. The course includes line-by-line explanation of YEEDER2D() and the finite-difference analysis program for both rigorous analysis and quasi-vectorial analysis.
Topic 5 — Other Methods Based on Finite Differences
Lectures & Notes
- (PDF) (Video) Lecture 5a – Finite-Difference Time-Domain (FDTD)
- (PDF) (Video) Lecture 5b – Beam Propagation Method
Implementation in MATLAB
- ($) One-Dimensional FDTD with MATLAB
Having trouble getting started? 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. - ($) Two-Dimensional FDTD with MATLAB
Having trouble getting started? This is a follow-on to the prerequisite course 1D-FDTD that is intended for the complete beginner. The course covers every detail of FDTD in simple terms and with high quality visualizations. In addition, all of the code is presented and explained to implement the FDTD method 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. - ($) Implementation of Basic 2D FDTD with UPML
This course types and explains every line of code in MATLAB to implement a 2D FDTD algorithm that incorporates a UPML. The code is developed in six steps and includes graphical visualization of the fields being simulated. - ($) Simulating Periodic Structures Using 2D FDTD in MATLAB
This course builds on the previous course to simulate periodic structures. A diffraction grating is used as the device example and the course describes how to calculate steady-state fields, calculate diffraction efficiencies, and reflectance and transmittance. The course ends by showing how to post-process the data and display the results in a professional plot. - ($) Implementation of Simple Finite-Difference Analysis of Transmission Lines in MATLAB
See every line of MATLAB code typed and explained to analyze transmission lines. By the end, you will have developed a fully functional program that that can analyze both balanced and unbalanced transmission lines. The course includes programming TLDER() and develops to different codes to analyze a microstrip transmission line (unbalanced line) and a differential pair (balanced line).
Topic 6 — Plane Wave Expansion Method (PWEM)
Lectures & Notes
- Maxwell’s Equations in Fourier Space
- Plane Wave Expansion Method
- Supplemental Information
- (PDF) Lecture 6e – Plane Wave Expansion Method Extras
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.
Internet Resources
- Brillouin Zones – interactive summary of Brillouin zones
Topic 7 — Rigorous Coupled-Wave Analysis (RCWA)
Lectures & Notes
- Rigorous Coupled-Wave Analysis (RCWA)
- Supplemental Information
Implementation in MATLAB
- ($) Implementation of 3D RCWA in MATLAB
This course contains lectures and coding sessions to implement a fully three-dimensional rigorous coupled-wave analysis in MATLAB. The code can handle any number of layers and oblique symmetry such as hexagonal. See every line of code typed and explained.
Topic 8 — Other Slicing and Semi-Analytical Methods
Lectures & Notes
MATLAB Implementation
- ($) Implementation of 3D Method of Lines in MATLAB
See every line of code typed and explained to implement a fully functional 3D method of lines in MATLAB.
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.