Internals

These functions are not exported by the TransferMatrix.jl module and can be called using the TransferMatrix. qualifier. Use these methods if you wish to construct a transfer matrix method manually step by step or modify intermediate steps.

Index

General Transfer Matrix Method

TransferMatrix.evaluate_birefringenceMethod
evaluate_birefringence(Ψ, S, t_modes, r_modes)

For the four modes (two transmitting and two reflecting), the ratio

\[\begin{aligned} C &= |E_x|^2 / (|E_x|^2 + |E_y|^2) \\&= |Ψ_1|^2 / (|Ψ_1|^2 + |Ψ_3|^2) \end{aligned}\]

is evaluated. Recall that the values for the electric field are contained in the eigenvector matrix, Ψ.

If the layer material is birefringent, there will be anisotropy in the dielectric tensor. If this is the case, the x and y components of the Poynting vector needs to be analyzed (eqn 15 in Passler et al., 2017):

\[C = |S_x|^2 / (|S_x|^2 + |S_y|^2)\]

If there is no birefringence, then the electric field is analyzed. This analysis follows

Li et al., 1988, https://doi.org/10.1364/AO.27.001334

and the use of the Poynting vector is from

Passler et al., 2017, https://doi.org/10.1364/JOSAB.34.002128 Passler et al., 2019, https://doi.org/10.1364/JOSAB.36.003246

source
TransferMatrix.poyntingMethod
poynting(ξ, q_in, q_out, γ_in, γ_out, t_coefs, r_coefs)

Calculate the Poynting vector from wavevectors $q$, componments of the electric field γ, and transmission and reflection coefficients.

source
TransferMatrix.poyntingMethod
poynting(Ψ, a)

Calculates the Poynting vector for the structure from Ψ and matrix $a$.

From Berreman, 1972, Ψ is the column matrix:

\[\Psi = \begin{pmatrix} Ex \\Hy \\Ey \\-Hx \end{pmatrix}\]

for a right-handed Cartesian coordinate system with the z-axis along the normal to the multilayer structure.

Berreman, 1972, https://doi.org/10.1364/JOSA.62.000502

source
TransferMatrix.propagateMethod
propagate(λ, layers, θ, μ)

Calculate the transfer matrix for the entire structure, as well as the Poynting vector for the structure.

source
TransferMatrix.calculate_qMethod
calculate_q(Δ, a)

The four eigenvalues of $q$ may be obtained from the 4x4 matrix Δ and then eigenvectors may be found for each eigenvalue. Here the eigenvalues must be sorted appropriately to avoid potentially discontinuous solutions. This extends from the work in

Li et al, 1988, https://doi.org/10.1364/AO.27.001334

source
TransferMatrix.calculate_γMethod
calculate_γ(ξ, q, ε, μ)

The 4 x 3 matrix γ contains vector components that belong to the electric field calculated such that singularities are identified and removed.

q[1] and q[2] are forward-traveling modes and q[3] and q[4] are backward-traveling modes.

This is based on the work in Xu, et al., 2000, https://doi.org/10.1103/PhysRevB.61.1740

source
TransferMatrix.construct_aMethod
construct_a(ξ, M)

Construct the elements of the intermediate 6x6 matrix $a$ in terms of the elements of matrix $M$ (the 6x6 matrix holding the material dielectric and permeability tensors) and propagation vector ξ. This is implemented as described in

Berreman, 1972, https://doi.org/10.1364/JOSA.62.000502

source
TransferMatrix.construct_ΔMethod
construct_Δ(ξ, M, a)

Construct the reordered matrix Δ in terms of the elements of the two matrices, M and a, and the in-plane reduced wavevector ξ = $k_x / k_0$. The matrix Δ is involved in the relation

\[ \frac{\delta}{\delta z}\Psi = \frac{i \omega}{c}\Delta \Psi\]

and Δ is the reordered S matrix in Berreman's formulation.

Berreman, 1972, https://doi.org/10.1364/JOSA.62.000502

source
TransferMatrix.dynamical_matrixMethod
dynamical_matrix(ξ, q, γ, μ)

The dynamical matrix relating two layers at the interface where matrix $A_i$ for layer $i$ relates the field $E_i$ to the field in the previous layer $i - 1$ via

\[ A_{i-1}E_{i-1} = A_{i}E_{i}\]

Xu, et al., 2000, https://doi.org/10.1103/PhysRevB.61.1740

source
TransferMatrix.layer_matricesMethod
layer_matrices(ω, ξ, layer, μ)

Calculate all parameters for a single layer, particularly the propagation matrix and dynamical matrix so that the overall transfer matrix can be calculated.

source
TransferMatrix.permeability_tensorMethod
permeability_tensor(μ1, μ2, μ3)

This produces the diagonal permeability tensor, which is identical to the way we build the dielectric_tensor, and we include this function simply for completeness.

source
TransferMatrix.propagation_matrixMethod
propagation_matrix(ω, q)

Returns a function that propagates the electromagnetic field a distance z through a material for a frequency ω and wavevector $q$.

source