Materials & EMA
The Materials submodule provides the classes to build complex materials from dispersion models.
The simplest provided material is the
IsotropicMaterial.
It takes only one Dispersion which is used for all three axis of the material.
It can also be created by calling dispersion.get_mat().
For Crystals with two or three different dispersions, there are the
UniaxialMaterial and
UniaxialMaterial respectively.
The respective materials can be rotated to achieve different crystal orientations. A good visualization for these rotations can be found in Figure 6.10 of Fujiwara’s book ‘Spectroscopic Ellipsometry’ 1.
Additionally two materials can be combined via various :ref:’Effective medium approximations’, to create mixtures or account for interface roughness.
References
- 1
H. Fujiwara, Spectroscopic Ellipsometry, Principles and Applications, Chichester, UK, John Wiley & Sons, Ltd (2007). https://doi.org/10.1002/9780470060193
Abstract base classes
- class elli.materials.Material[source]
Base class for materials (abstract class).
- class elli.materials.MixtureMaterial(host_material, guest_material, fraction)[source]
Abstract Class for mixed materials.
Creates a material mixture from two materials.
- Parameters
- get_tensor(lbda)[source]
Gets the permittivity tensor of the material for wavelength ‘lbda’.
- Parameters
lbda (npt.ArrayLike) – Single value or array of wavelengths (in nm).
- Returns
Permittivity tensor.
- Return type
npt.NDArray
- abstract get_tensor_fraction(lbda, fraction)[source]
Gets the permittivity tensor of the material for wavelength ‘lbda’, while overwriting the set fraction. Used in VaryingMixtureLayers.
- Parameters
lbda (npt.ArrayLike) – Single value or array of wavelengths (in nm).
fraction (float) – Fraction of the guest material used for evaluation. (Range 0 - 1).
- Returns
Permittivity tensor.
- Return type
npt.NDArray
- class elli.materials.SingleMaterial[source]
Base class for non-mixed materials (abstract class).
- get_tensor(lbda)[source]
Gets the permittivity tensor of the material for wavelength ‘lbda’.
- Parameters
lbda (npt.ArrayLike) – Single value or array of wavelengths (in nm).
- Returns
Permittivity tensor.
- Return type
npt.NDArray
- set_rotation(r)[source]
Sets rotation of the Material.
- Parameters
r (npt.NDArray) – rotation matrix (from
rotation_euleror others)
Isotropic and non-isotropic materials
- class elli.materials.IsotropicMaterial(dispersion)[source]
Isotropic material.
Creates isotropic material with a dispersion.
- Parameters
dispersion (Dispersion) – Dispersion relation of all three crystal directions.
- set_dispersion(dispersion)[source]
Sets dispersion relation of the isotropic material.
- Parameters
dispersion (Dispersion) – Dispersion relation of all three crystal directions.
- class elli.materials.UniaxialMaterial(dispersion_o, dispersion_e)[source]
Uniaxial material.
Creates a uniaxial material with two dispersions.
- Parameters
dispersion_o (Dispersion) – Dispersion relation for ordinary crystal axes (x and y direction).
dispersion_e (Dispersion) – Dispersion relation for extraordinary crystal axis (z direction).
- set_dispersion(dispersion_o, dispersion_e)[source]
Sets dispersion relations of the uniaxial material.
- Parameters
dispersion_o (Dispersion) – Dispersion relation for ordinary crystal axes (x and y direction).
dispersion_e (Dispersion) – Dispersion relation for extraordinary crystal axis (z direction).
- class elli.materials.BiaxialMaterial(dispersion_x, dispersion_y, dispersion_z)[source]
Biaxial material.
Creates a biaxial material with three dispersions.
- Parameters
dispersion_x (Dispersion) – Dispersion relation for x crystal axes.
dispersion_y (Dispersion) – Dispersion relation for y crystal axes.
dispersion_z (Dispersion) – Dispersion relation for z crystal axes.
- set_dispersion(dispersion_x, dispersion_y, dispersion_z)[source]
Sets dispersion relations of the biaxial material.
- Parameters
dispersion_x (Dispersion) – Dispersion relation for x crystal axes.
dispersion_y (Dispersion) – Dispersion relation for y crystal axes.
dispersion_z (Dispersion) – Dispersion relation for z crystal axes.
Effective medium approximations
- class elli.materials.VCAMaterial(host_material, guest_material, fraction)[source]
Mixture Material approximated with a simple virtual crystal like average.
\[\varepsilon_\text{eff} = (1 - f) \varepsilon_h + f \varepsilon_g\]where:
\(\varepsilon_\text{eff}\) is the effective permittivity of host/mixture material,
\(\varepsilon_h\) is the permittivity of the host mixture material,
\(\varepsilon_g\) is the permittivity of the guest mixture material and
\(f\) is the volume fraction of material a in the guest material.
Creates a material mixture from two materials.
- Parameters
- get_tensor_fraction(lbda, fraction)[source]
Gets the permittivity tensor of the marterial for wavelength ‘lbda’, while overwriting the set fraction.
- Parameters
lbda (npt.ArrayLike) – Single value or array of wavelengths (in nm).
fraction (float) – Fraction of the guest material used for evaluation. (Range 0 - 1).
- Returns
Permittivity tensor.
- Return type
npt.NDArray
- class elli.materials.BruggemanEMA(host_material, guest_material, fraction)[source]
Mixture Material approximated with the Bruggeman formula for spherical inclusions.
Returns one of the two analytical solutions to this quadratic equation:
\[2 \varepsilon_\text{eff}^2 + \varepsilon_\text{eff} [(3f - 2) \varepsilon_a + (1 - 3f)\varepsilon_b] - \varepsilon_a \cdot \varepsilon_b = 0\]where \(\varepsilon_\text{eff}\) is the effective permittivity of host/mixture material, \(\varepsilon_a\) is the permittivity of the first mixture material, \(\varepsilon_b\) is the permittivity of the second mixture material and \(f\) is the volume fraction of material a in the material b.
References
Josef Humlicek in Ellipsometry at the Nanoscale, Springer-Verlag Berlin Heidelberg, 2013
Creates a material mixture from two materials.
- Parameters
- get_tensor_fraction(lbda, fraction)[source]
Gets the permittivity tensor of the material for wavelength ‘lbda’, while overwriting the set fraction.
- Parameters
lbda (npt.ArrayLike) – Single value or array of wavelengths (in nm).
fraction (float) – Fraction of the guest material used for evaluation. (Range 0 - 1).
- Returns
Permittivity tensor.
- Return type
npt.NDArray
- static jansson_algorithm(e_h, e_g, root1, root2)[source]
Use the algorithm proposed by Jansson and Arwin to find the correct root of the solution to the Bruggeman formula.
References
Jansson R. , Arwin H. (1994) Optics Communications, 106, 4-6, 133-138, https://doi.org/10.1016/0030-4018(94)90309-3.
- Parameters
e_h (npt.ArrayLike) – Dielectric tensor of host material.
e_g (npt.ArrayLike) – Dielectric tensor of host material.
root1 (npt.ArrayLike) – Solution 1 for dielectric tensor of mixture.
root2 (npt.ArrayLike) – Solution 2 for dielectric tensor of mixture.
- Returns
Physically correct permittivity tensor for the mixture.
- Return type
npt.NDArray
- class elli.materials.MaxwellGarnettEMA(host_material, guest_material, fraction)[source]
Mixture Material approximated with the Maxwell Garnett formula. It is valid for spherical inclusions with small volume fraction.
\[\varepsilon_\text{eff} = \varepsilon_h \frac{2f(\varepsilon_g - \varepsilon_h) + \varepsilon_g + 2\varepsilon_h} {2\varepsilon_h + \varepsilon_g - f(\varepsilon_g - \varepsilon_h)}\]where:
\(\varepsilon_\text{eff}\) is the effective permittivity of host/mixture material,
\(\varepsilon_h\) is the permittivity of the host mixture material,
\(\varepsilon_g\) is the permittivity of the guest mixture material and
\(f\) is the volume fraction of material a in the guest material.
Creates a material mixture from two materials.
- Parameters
- get_tensor_fraction(lbda, fraction)[source]
Gets the permittivity tensor of the material for wavelength ‘lbda’, while overwriting the set fraction.
- Parameters
lbda (npt.ArrayLike) – Single value or array of wavelengths (in nm).
fraction (float) – Fraction of the guest material used for evaluation. (Range 0 - 1).
- Returns
Permittivity tensor.
- Return type
npt.NDArray
- class elli.materials.LooyengaEMA(host_material, guest_material, fraction)[source]
Mixture Material approximated with Looyenga’s formula. Valid for materials with small contrast.
\[\varepsilon_\text{eff} = ((1 - f) \varepsilon_h^{1/3} + f \varepsilon_g^{1/3})^3\]where:
\(\varepsilon_\text{eff}\) is the effective permittivity of host/mixture material,
\(\varepsilon_h\) is the permittivity of the host mixture material,
\(\varepsilon_g\) is the permittivity of the guest mixture material and
\(f\) is the volume fraction of material a in the guest material.
References
Looyenga, H. (1965). Physica, 31(3), 401–406.
Creates a material mixture from two materials.
- Parameters
- get_tensor_fraction(lbda, fraction)[source]
Gets the permittivity tensor of the material for wavelength ‘lbda’, while overwriting the set fraction.
- Parameters
lbda (npt.ArrayLike) – Single value or array of wavelengths (in nm).
fraction (float) – Fraction of the guest material used for evaluation. (Range 0 - 1).
- Returns
Permittivity tensor.
- Return type
npt.NDArray