## EMP-6305

### Computational Electromagnetics

Computational electromagnetics (CEM) is the procedure we must follow to model and simulate the behavior of electromagnetic fields in devices or around structures. CEM implies using numerical techniques to solve Maxwell’s equations instead of obtaining analytical solutions. In addition to the methods, the course teaches best practices and the philosophy of computation. With this course, the student will be able to identify the best method given the device and will be well-equipped to understand and learn new methods on their own.

## 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 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.*