Skip to content
/ TMM Public

Transfer Matrix Method implemented in Python (netlist-based)

Notifications You must be signed in to change notification settings

edmundsj/TMM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Author: Jordan Edmunds
Affiliation: UC Irvine, UC Berkeley
Date Started: 2020/01/05
Title: Transfer Matrix Method Fullwave Rigorous Solver
License: BSD

SOFTWARE STATUS
This software currently works for single-wavelength calculation of composite scattering matrices, reflected/transmitted fields, and reflectance/transmittance. It has been validated against benchmarking code provided by Professor Raymond Rumpf at UTEP. In the (very near) future, I plan to implement some wrappers for plotting and multi-wavelength simulation. I am currently working on creating code for the Plane Wave Expansion Method and Rigorous Coupled Wave Analysis, and I will need to implement multi-wavelength simulation shortly after I finish those.

This is an implementation of the Transfer Matrix Method authored by Jordan Edmunds (currently doing my Ph.D. at UC Berkeley in the Electrical Engineering and Computer Science Department). I had previously written a simple single-polarization transfer matrix method solver in Mathematica, but am now dealing with inhomogenous, anisotropic, and nonlinear materials, and so decided to re-implement in in python under the guidance of Dr. Raymond Rumpf (no official affiliation, but I have heavily used his online lectures and available materials).

Whenever possible I have attempted to stay with the convention introduced in Dr. Rumpf's online class on computational electromagnetics.

This software currently works at an arbitrary angle of incidence, with arbitrary complex-valued permittivities and permeabilities for an arbitrary number of layers. 

GETTING STARTED --- 


NETLIST FORMAT ---
While I love mucking around in other people's code as much as the next guy, I actually hate doing that. I also hate mucking around in my own code months or years after I wrote the thing. For this reason, I have implemented a netlist-based interface to run the software. This is where all material parameters are specified, the simulation wavelength, polarization, etc. The simplest netlist is zero lines of code - that means you are sending a plane wave into free space. Pretty boring, but the software will work just fine. If incident and outgoing layers are not specified, these are assumed to be free space. If a layer is specified with no thickness, it is assumed to be the incident layer or the transmitted layer depending on where it is in the file. There are simple example netlists in the "netlist" folder you can run, and I would start there.

Hi.

About

Transfer Matrix Method implemented in Python (netlist-based)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages