Nanophotonics Transfer Matrix Solver
This script builds the transfer matrix for the light incident on a multi-material slab and plots the reflection and transmission as a function of wavelength and incident angle for both TE and TM polarizations.
Materials can be supplied to the sweep function in main.py
or are supplied through the file material_input.txt
,
where each line is of the form “[name],[thickness],[index]” where name
and thickness
are required, and index
is only
required for materials not listed in materials.INDICES
. You can always supply a value for the refractive index to use
a constant value (real or complex) across all wavelengths that will override the default for that material.
If a Material is either “gold” or “silver”, the first line of material_input.txt
must be of the form “model=[model]”
where model
is the name of the model to use for the optical properties of the material and must be one of the following:
- Drude
- Johnson
- Palik
The “Drude” model is a semi-analytical model for the permittivity, while the ”Johnson” and “Palik” models use complex refractive index values interpolated from the values in the books by (i) Johnson & Christy and (ii) Palik.
The images above are plots of transmittance (left) and reflectance (right) for a slab consisting of:
- 50nm of Ag
- 100nm of Si
- 50nm of Au
- 100nm of Ag
- 50nm of SiO2
These can be compared to results for the same stack generated by an online application from Filmetrics: