The present package implements the generalized transfer matrix formalism as presented in [1-3]. The authors provide a Python implementation (pyGTM), as well as a Matlab implementation (First version (2019), Updated version (2020)).
The package can be installed with the Julia package manager.
From the Julia REPL, type ]
to enter the Pkg REPL mode and run:
pkg> add GeneralizedTransferMatrixMethod
Or, equivalently, via the Pkg
API:
julia> import Pkg; Pkg.add("GeneralizedTransferMatrixMethod")
This example of an glass–air interface is taken from the tutorial presented in the documentation
using GeneralizedTransferMatrixMethod
using LinearAlgebra
using Unitful: °, nm, μm, mm, m
# Define Materials
@permittivity "Glass" λ -> Diagonal(ones(3)) * 1.5
Air = Layer()
Interface = LayeredStructure(
superstrate = Glass(),
substrate = Air
)
# Calculate properties
λ = 1.55μm
α = 10°
ζ = sin(α) * sqrt(ϵ_Glass(λ)[1,1])
Properties = calculate_structure_properties(ζ, λ, Interface)
Rₚₚ, Rₛₛ, Rₚₛ, Rₛₚ = reflection(Properties)
Tₚ, Tₛ = transmission(ζ, Properties)
- Passler, N. C. & Paarmann, A. Generalized 4 × 4 matrix formalism for light propagation in anisotropic stratified media: study of surface phonon polaritons in polar dielectric heterostructures. J. Opt. Soc. Am. B 34, 2128 (2017).
- Passler, N. C. & Paarmann, A. Generalized 4 × 4 matrix formalism for light propagation in anisotropic stratified media: study of surface phonon polaritons in polar dielectric heterostructures: erratum. J. Opt. Soc. Am. B 36, 3246 (2019).
- Passler, N. C., Jeannin, M. & Paarmann, A. Layer-resolved absorption of light in arbitrarily anisotropic heterostructures. Phys. Rev. B 101, 165425 (2020).