ThinFilmFilter#
- class optika.materials.ThinFilmFilter(layer, layer_oxide, mesh)[source]#
Bases:
AbstractThinFilmFilterA model of a thin-film EUV filter, such as those manufactured by Luxel [Powell et al., 1990].
Examples
Plot the transmissivity of an aluminum thin-film filter, with a thickness of 100 nm and an oxide layer of 2 nm.
import matplotlib.pyplot as plt import astropy.units as u import named_arrays as na import optika # Define a model of the thin-film filter film = optika.materials.ThinFilmFilter( layer=optika.materials.Layer( chemical="Al", thickness=100 * u.nm, ), layer_oxide=optika.materials.Layer( chemical="Al2O3", thickness=2 * u.nm, ), mesh=optika.materials.meshes.Mesh( chemical="Ni", efficiency=0.8, pitch=70 / u.mm, ), ) # Define the wavelength of the incident light wavelength = na.linspace(100, 1000, axis="wavelength", num=1001) * u.AA # Define the rays incident on the filter rays = optika.rays.RayVectorArray( wavelength=wavelength, direction=na.Cartesian3dVectorArray(0, 0, 1), ) # Compute the transmissivity of the filter transmissivity = film.efficiency( rays=rays, normal=na.Cartesian3dVectorArray(0, 0, -1), ) # Plot the transmissivity as a function of wavelength fig, ax = plt.subplots() na.plt.plot( wavelength, transmissivity, ax=ax, axis="wavelength", ); ax.set_xlabel(f"wavelength ({wavelength.unit:latex_inline})"); ax.set_ylabel("transmissivity");
Attributes
flag controlling whether this material reflects or transmits light
The main layer of bulk material comprising this filter.
The oxide layer that lies on either side of the bulk layer.
A sequence of layers representing the multilayer stack.
The mesh backing supporting this thin-film filter.
The array shape of this object.
the coordinate transformation between the global coordinate system and this object's local coordinate system
Methods
__init__(layer, layer_oxide, mesh)attenuation(rays)the attenuation coefficient of the given rays
efficiency(rays, normal)Compute the efficiency of this multilayer film using
optika.materials.multilayer_efficiency().index_refraction(rays)the index of refraction of this material for the given input rays
plot_layers([width, ax])Plot the multilayer stack using
optika.materials.AbstractLayer.plot().to_string([prefix])Public-facing version of the
__repr__method that allows for defining a prefix string, which can be used to calculate how much whitespace to add to the beginning of each line of the result.Inheritance Diagram

- Parameters:
layer (AbstractLayer)
layer_oxide (AbstractLayer)
mesh (AbstractMesh)
- attenuation(rays)#
the attenuation coefficient of the given rays
- Parameters:
rays (RayVectorArray) – input rays to calculate the attenuation coefficient for
- Return type:
- efficiency(rays, normal)#
Compute the efficiency of this multilayer film using
optika.materials.multilayer_efficiency().- Parameters:
rays (RayVectorArray) – the input rays with which to compute the efficiency of the multilayer film
normal (AbstractCartesian3dVectorArray) – the vector normal to the interface between successive layers
- Return type:
- index_refraction(rays)#
the index of refraction of this material for the given input rays
- Parameters:
rays (RayVectorArray) – input rays used to evaluate the index of refraction
- Return type:
- plot_layers(width=<Quantity 100. nm>, ax=None, **kwargs)#
Plot the multilayer stack using
optika.materials.AbstractLayer.plot().- Parameters:
width (Quantity) – The width of the plotted multilayer stack in physical units.
ax (Axes) – The matplotlib axes on which to plot the multilayer stack.
kwargs – Additional keyword arguments to pass along to
optika.materials.AbstractLayer.plot().
- Return type:
- to_string(prefix=None)#
Public-facing version of the
__repr__method that allows for defining a prefix string, which can be used to calculate how much whitespace to add to the beginning of each line of the result.
- layer: AbstractLayer = <dataclasses._MISSING_TYPE object>#
The main layer of bulk material comprising this filter.
- layer_oxide: AbstractLayer = <dataclasses._MISSING_TYPE object>#
The oxide layer that lies on either side of the bulk layer.
- property layers: list[AbstractLayer]#
A sequence of layers representing the multilayer stack.
- mesh: AbstractMesh = <dataclasses._MISSING_TYPE object>#
The mesh backing supporting this thin-film filter.