wpspecdev.TmmDriver

class wpspecdev.TmmDriver(args)[source]
Collects methods for computing the reflectivity, absorptivity/emissivity, and transmissivity

of multilayer structures using the Transfer Matrix Method.

Variables
  • ~TmmDriver.number_of_layers (int) – the number of layers in the multilayer

  • ~TmmDriver.number_of_wavelengths (int) – the number of wavelengths in the wavelength_array

  • ~TmmDriver.thickness_array (1 x number_of_layers numpy array of floats) – the thickness of each layer

  • ~TmmDriver.material_array (1 x number_of_layers numpy array of str) – the materia of each layer

  • ~TmmDriver.wavelength_array (numpy array of floats) – the array of wavelengths in meters over which you will compute the spectra

  • ~TmmDriver.incident_angle (float) – the incident angle of light relative to the normal to the multilayer (0 = normal incidence!)

  • ~TmmDriver.polarization (str) – indicates if incident light is ‘s’ or ‘p’ polarized

  • ~TmmDriver.reflectivity_array (1 x number_of_wavelengths numpy array of floats) – the reflection spectrum

  • ~TmmDriver.transmissivity_array (1 x number_of_wavelengths numpy array of floats) – the transmission spectrum

  • ~TmmDriver.emissivity_array (1 x number_of_wavelengths numpy array of floats) – the absorptivity / emissivity spectrum

  • ~TmmDriver._refractive_index_array (number_of_layers x number_of_wavelengths numpy array of complex floats) – the array of refractive index values corresponding to wavelength_array

  • ~TmmDriver._tm (2 x 2 x number_of_wavelengths numpy array of complex floats) – the transfer matrix for each wavelength

  • ~TmmDriver._kz_array (1 x number_lf_layers x number_of_wavelengths numpy array of complex floats) – the z-component of the wavevector in each layer of the multilayer for each wavelength

  • ~TmmDriver._k0_array (1 x number_of_wavelengths numpy array of floats) – the wavevector magnitude in the incident layer for each wavelength

  • ~TmmDriver._kx_array (1 x number_of_wavelengths numpy array of floats) – the x-component of the wavevector for each wavelength (conserved throughout layers)

  • ~TmmDriver._pm (2 x 2 x (number_of_layers-2) x number_of_wavelengths numpy array of complex floats) – the P matrix for each of the finite-thickness layers for each wavelength

  • ~TmmDriver._dm (2 x 2 x number_of_layers x number_of_wavelengths numpy array of complex floats) – the D matrix for each of the layers for each wavelength

  • ~TmmDriver._dim (2 x 2 x number_of_layers x number_of_wavelengts numpy array of complex floats) – the inverse of the D matrix for each of the layers for each wavelength

Return type

None

__init__(args)[source]

constructor for the TmmDriver class Assign values for attributes thickness_array, material_array then call compute_spectrum to compute values for attributes reflectivity_array, transmissivity_array, and emissivity_array

Methods

__init__(args)

constructor for the TmmDriver class Assign values for attributes thickness_array, material_array then call compute_spectrum to compute values for attributes reflectivity_array, transmissivity_array, and emissivity_array

compute_cooling()

Method to compute the radiative cooling figures of merit

compute_cooling_gradient()

compute_explicit_angle_spectrum()

computes the following attributes: :ivar ~TmmDriver.compute_explicit_angle_spectrum.reflectivity_array_s: the reflectivity spectrum vs wavelength and angle with s-polarization :vartype ~TmmDriver.compute_explicit_angle_spectrum.reflectivity_array_s: N_deg x number_of_wavelengths numpy array of floats :ivar ~TmmDriver.compute_explicit_angle_spectrum.reflectivity_array_p: the reflectivity spectrum vs wavelength and angle with p-polarization

compute_explicit_angle_spectrum_gradient()

computes the following attributes: :ivar ~TmmDriver.compute_explicit_angle_spectrum_gradient.reflectivity_gradient_array_s: the gradient of the s-polarized reflectivity spectrum vs angle

compute_spectrum()

computes the following attributes: :ivar ~TmmDriver.compute_spectrum.reflectivity_array: the reflectivity spectrum :vartype ~TmmDriver.compute_spectrum.reflectivity_array: 1 x number_of_wavelengths numpy array of floats :ivar ~TmmDriver.compute_spectrum.transmissivity_array: the transmissivity spectrum :vartype ~TmmDriver.compute_spectrum.transmissivity_array: 1 x number_of_wavelengths numpy array of floats :ivar ~TmmDriver.compute_spectrum.emissivity_array: the absorptivity / emissivity spectrum :vartype ~TmmDriver.compute_spectrum.emissivity_array: 1 x number_of_wavelengths numpy array of floats

compute_spectrum_gradient()

computes the following attributes: :ivar ~TmmDriver.compute_spectrum_gradient.reflectivity_gradient_array: the reflectivity spectrum :vartype ~TmmDriver.compute_spectrum_gradient.reflectivity_gradient_array: number_of_wavelengths x len(gradient_list) numpy array of floats :ivar ~TmmDriver.compute_spectrum_gradient.transmissivity_gradient_array: the transmissivity spectrum :vartype ~TmmDriver.compute_spectrum_gradient.transmissivity_gradient_array: number_of_wavelengths x len(gradient_list) numpy array of floats :ivar ~TmmDriver.compute_spectrum_gradient.emissivity_gradient_array: the absorptivity / emissivity spectrum :vartype ~TmmDriver.compute_spectrum_gradient.emissivity_gradient_array: number_of_wavelengths x len(gradient_list) numpy array of floats

compute_stpv()

compute the figures of merit for STPV applications, including

compute_stpv_gradient()

insert_layer(layer_number, layer_thickness)

insert an air layer between layer_number-1 and layer_number e.g.

material_Ag(layer_number[, ...])

material_Air(layer_number)

defines the refractive index layer of layer_number to be air assuming static refractive index of n = 1.0 + 0j

material_Al(layer_number)

material_Al2O3(layer_number)

material_AlN(layer_number[, ...])

material_Au(layer_number[, ...])

material_H2O(layer_number)

defines the refractive index layer of layer_number to be water assuming static refractive index of n = 1.33 + 0j

material_HfO2(layer_number)

material_Pb(layer_number[, ...])

material_Pt(layer_number)

material_Re(layer_number[, ...])

material_Rh(layer_number)

material_Ru(layer_number)

material_Si(layer_number[, ...])

material_SiO2(layer_number)

material_Ta2O5(layer_number[, ...])

material_TiN(layer_number)

material_TiO2(layer_number)

material_W(layer_number[, wavelength_range, ...])

material_from_file(layer_number, file_name)

material_polystyrene(layer_number)

material_static_refractive_index(...)

parse_input(args)

method to parse the user inputs and define structures / simulation :rtype: None

remove_layer(layer_number)

remove layer number layer_number from your stack.

render_color(string[, colorblindness])

set_refractive_index_array()

once materials are specified, define the refractive_index_array values