refellips.dispersion
- class refellips.dispersion.Cauchy(A, B=0, C=0, wavelength=658, name='')
Bases:
ScattererSECauchy model for wavelength-dependent refractive index.
Optical parameters are supplied in units of micrometers (‘cause thats what seems to be used in refractive index repos and cauchy models), the wavelength of the incident radiation is supplied in nanometers (that’s typical) and the fitting is done in angstroms.
The refractive index is calculated as:
A + (B * 1000**2) / (wav**2) + (C * 1000**4) / (wav**4)where the factors of 1000 convert from microns to nm.
- Parameters:
A (float or parameter) – Cauchy parameter A.
B (float or parameter) – Cauchy parameter B in um^2. Default 0.
C (float or parameter) – Cauchy parameter C in um^4. Default 0.
wavelength (float) – default wavelength for calculation (nm)
name (str, optional) – Name of material.
- complex(wavelength)
Calculate a complex RI
- Parameters:
wavelength (float) – wavelength of light in nm
- Returns:
RI – refractive index and extinction coefficient
- Return type:
complex
- property parameters
- class refellips.dispersion.Gauss(Am, Br, En, Einf=1, wavelength=658, name='')
Bases:
ScattererSEDispersion curves for Gaussian oscillators.
- Parameters:
Am ({float, Parameter, sequence}) – Amplitude of Gaussian
Br ({float, Parameter, sequence}) – Broadening of oscillator
En ({float, Parameter, sequence}) – Centre energy of oscillator (eV)
Einf ({float, Parameter}) – Offset term
wavelength (float) – default wavelength for calculation (nm)
name (str, optional) – Name of material.
Notes
Calculates dispersion curves for k Gaussian oscillators. The model is Kramers-Kronig consistent. The parameters for constructing this object should have len(Am) == len(Br) == len(En) == k, or be single float/Parameter.
- epsilon(energy)
The complex dielectric function for the oscillator
- property parameters
- class refellips.dispersion.Lorentz(Am, Br, En, Einf=1, wavelength=658, name='')
Bases:
ScattererSEDispersion curves for Lorentz oscillators.
- Parameters:
Am ({float, Parameter, sequence}) – Amplitude of Lorentzian
Br ({float, Parameter, sequence}) – Broadening of oscillator
En ({float, Parameter, sequence}) – Centre energy of oscillator (eV)
Einf ({float, Parameter}) – Offset term
wavelength (float) – default wavelength for calculation (nm)
name (str, optional) – Name of material.
Notes
Calculates dispersion curves for k oscillators, as implemented in WVASE. The model is Kramers-Kronig consistent. The parameters for constructing this object should have len(Am) == len(Br) == len(En) == k, or be single float/Parameter.
..math:
\tilde{\varepsilon}(h\nu)=\varepsilon_{1\infty }+\sum_{k}\frac{A_{k}}{E_{k}^2 - (h\nu)^2-iB_kh\nu}
Examples
>>> # Create a single Lorentz oscillator >>> Lorentz(5, 0.25, 2, Einf=1) >>> # Create a 2 oscillator dispersion curve >>> lo = Lorentz([5, 10], [0.25, 0.5], [2, 4], Einf=2) >>> lo.complex(658) # calculates the refractive index at 658 nm.
- epsilon(energy)
The complex dielectric function for the oscillator
- property parameters
- class refellips.dispersion.RI(dispersion=None, wavelength=658, name='')
Bases:
ScattererSEObject representing a materials wavelength-dependent refractive index.
An issue is that optical parameters are supplied in units of micrometers (‘cause thats what seems to be used in refractive index repos and cauchy models), the wavelength of the incident radiation is supplied in nanometers (thats typical) and the fitting is done in angstroms. Very unpleasant.
- Parameters:
dispersion ({str, Path, tuple, np.ndarray)) –
If a string then a dispersion curve will be loaded from a file that the string points to. The file is assumed to be of CSV format, with the first column holding the wavelength (in microns), with the second column specifying the refractive index. An optional third column can be present that should hold the extinction coefficient.
If dispersion has length 2 (float, float), then dispersion[0] points to the refractive index of the material and dispersion[1] points to the extinction coefficient. This refractive index is assumed to be wavelength independent.
If dispersion has length 3, then dispersion[0], dispersion[1], dispersion[2] are assumed to hold arrays specifying the wavelength (in microns), refractive index, and extinction coefficient.
wavelength (float) – default wavelength for calculation (nm)
name (str, optional) – Name of material.
Notes
An RI object can be used to create a Slab
- complex(wavelength)
Calculate a complex RI
- Parameters:
wavelength (float) – wavelength of light in nm
- Returns:
RI – refractive index and extinction coefficient
- Return type:
complex
- property parameters
- class refellips.dispersion.Sellmeier(Am, En, P, Einf=1, wavelength=658, name='')
Bases:
ScattererSEDispersion curves for Sellmeier oscillators.
- Parameters:
Am ({float, Parameter}) – Amplitude of Sellmeier in μm.
En ({float, Parameter}) – Center energy of oscillator in μm.
P ({float, Parameter}) – Position of a pole in μm.
Einf ({float, Parameter}) – Offset term
wavelength (float) – default wavelength for calculation (nm)
name (str, optional) – Name of material.
Notes
Calculates dispersion curves of a Sellmeier oscillator as implemented in CompleteEase. CompleteEase Manual, Chapter 9, pg 9-306, J.A. Woollam Co., 2014.
\[\]n = sqrt{ varepsilon (infty) + frac{Am lambda^2}{lambda^2 - En^2} - Plambda^2}
Examples
>>> # Create a Sellmeier oscillator >>> sell = Sellmeier(2, 0.1, 0.11, Einf=1) >>> sell.complex(658) # calculates the refractive index at 658 nm.
- complex(wavelength)
Calculate a complex RI for the given Sellmeier oscillator
- Parameters:
wavelength (float) – wavelength of light in nm
- Returns:
RI – refractive index and extinction coefficient
- Return type:
complex
- epsilon(wavelength)
The complex dielectric function for the oscillator
- property parameters
- class refellips.dispersion.TaucLorentz(Am, C, En, Eg, Einf=1, wavelength=658, name='')
Bases:
ScattererSEDispersion curves for Tauc-Lorentz oscillators. The model works well for amorphous materials in the visible range.
- Parameters:
Am ({float, Parameter, sequence}) – Amplitude of absorption. Typically in [10, 200]
C ({float, Parameter, sequence}) – Lorentz broadening of oscillator (eV). Typically in [0, 10].
Cshould be less than2 * EnEn ({float, Parameter, sequence}) – Lorentz resonance energy (eV).
Enshould be greater thanEg.Eg ({float, Parameter}) – Common bandgap energy (eV) for all oscillators
Einf ({float, Parameter}) – Offset term
wavelength (float) – default wavelength for calculation (nm)
name (str, optional) – Name of material
Notes
Calculates dispersion curves for k Tauc-Lorentz oscillators. The model is Kramers-Kronig consistent. The parameters for constructing this object should have len(Am) == len(C) == len(En) == k, or be single float/Parameter.
Implemented using the equations from Horiba technical note and also the WVASE manual and https://en.wikipedia.org/wiki/Tauc%E2%80%93Lorentz_model.
The Horiba technical note gives parameters for many materials.
G.E. Jellision and F.A. Modine, Appl. Phys. Lett. 69 (3), 371-374 (1996)
Erratum, G.E. Jellison and F.A. Modine, Appl. Phys. Lett 69 (14), 2137 (1996)
Chen, W.Z. Shen, Eur. Phys. J. B. 43, 503-507 (2005)
- epsilon(energy)
The complex dielectric function for the oscillator
- property parameters
- refellips.dispersion.load_material(material)
Loads a dispersion curve from a file distributed with refellips.
- Parameters:
material (str) – One of the materials in
refellips.materials- Returns:
ri
- Return type:
refellips.RI
Notes
To get a list of the dispersion curves distributed with refellips examine the entries in
refellips.materials.