transfer#

optika.materials.matrices.transfer(wavelength, direction, polarized_s, thickness, n, normal)[source]#

Compute the transfer matrix for a homogenous slab of material using refraction() and propagation().

Parameters:
Return type:

Cartesian2dMatrixArray

Examples

Compute the transfer matrix of a 10-nm-thick slab of silicon dioxide for normally-incident \(s\)-polarized light.

import astropy.units as u
import named_arrays as na
import optika

# Define the wavelength of the incident light
wavelength = 100 * u.AA

# Initialize a representation of silicon dioxide
sio2 = optika.chemicals.Chemical("SiO2")

# Compute the transfer matrix
optika.materials.matrices.transfer(
    wavelength=wavelength,
    direction=na.Cartesian3dVectorArray(0, 0, 1),
    polarized_s=True,
    thickness=10 * u.nm,
    n=sio2.n(wavelength),
    normal=na.Cartesian3dVectorArray(0, 0, -1),
)
Cartesian2dMatrixArray(
    x=Cartesian2dVectorArray(
        x=ScalarArray(
            ndarray=1.09467745+0.10594609j ,
            axes=(),
        ),
        y=ScalarArray(
            ndarray=-0.00294397-2.92892363e-05j ,
            axes=(),
        ),
    ),
    y=Cartesian2dVectorArray(
        x=ScalarArray(
            ndarray=0.00294397+2.92892363e-05j ,
            axes=(),
        ),
        y=ScalarArray(
            ndarray=0.90502585-0.08759121j ,
            axes=(),
        ),
    ),
)

Notes

If \(W_{kij}\) is the refractive matrix for the interface on the left side of the slab (computed using refraction()), \(U_{kj}\) is the propagation matrix for the slab (computed using propagation()), and \(W_{kji}\) is the refractive matrix for the right side of the slab, then the transfer matrix for the slab can be computed using the product of these three matrices:

(1)#\[T_{kj} = W_{kij} U_{kj} W_{kji}\]