This page provides an overview of methods available for working with spectral discretizations as used by the optical properties class and its descendents. Further details are available in the auto-generated documentation.

Optical properties are defined by their spectral dependence which is described during initialization.

The spectral dependence can be described via arrays: array band_lims_wvn with extents (2, number-of-bands) describes the number of bands beginning and ending wavenumber of each band (in MKS units i.e. inverse meters). Optional argument band_lims_gpt describes the beginning and ending g-point of each band; if this array isn’t provided it’s assumed values are available by band. An optional name may be useful in debugging.

Alternatively variables of type ty_optical_props can copy the spectral discretization from a previously-initialized variable e.g. err_msg = op2%init(op1).

Real-valued functions op%get_band_lims_wavenumber()`` and op%get_band_lims_wavelength()` return arrays of extent (2, number-of-bands) containing the spectral limits of each band expressed in wavelength or wavenumber = 1/wavelength (again in MKS units).

Procedure op%is_initialized() returns a logical value indicating if the spectral discretization has been provided. op%get_nband() and op%get_ngpt() return the (integer) number of band and g-points; if these numbers are the same the optical properties are defined by band.

Integer functions op%convert_band2gpt() and op%convert_gpt2band() provide a map between individual bands and g-points. Function op%get_gpoint_bands() returns an integer of length op%get_ngpt() with the band number to which each g-point belongs (i.e. it’s the vector version of op%convert_gpt2band()).

Comparison functions op1%bands_are_equal(op2) and op1%gpoints_are_equal(op2) return logical values indicating whether the tw sets of optical properties share the same band or g-point discretization.