optics{ quantum_spectra{ } }
usage:
items: no constraints
This group specifies numerical properties of the quantum model used for computations of optical spectra base on the Fermi’s Golden Rule.
Note
Our algorithms and models controlled by keywords in this group are intensively developed. For this reason, related syntax may substantially change with each next release. Users of this group are highly encouraged to update the tool regularly with the new releases and to use our support system to give us feedback on any related issues.
Note
In the current versions, this group should not be used for modeling optical spectra for transitions between two separate 1-band models (e.g., triggered by Gamma{ } and HH{ }) or between a 1-band model and 6-band model (e.g., Gamma{ } and kp_6band{ }). Computations within single models (e.g., only within kp_8band{ }, only within Gamma{ }, etc.) are supported.
Dependencies
The global group quantum{ } must be defined.
Up to one of interband_approximation and intraband_approximation can be defined.
Up to one of occupation_interpolate_invfermi and occupation_zero_fermilevel can be defined.
At least one of energy_broadening_gaussian and energy_broadening_lorentzian must be defined.
The k_integration{ } must be defined if any of simulate1D{ } or simulate2D{ } is defined.
The excitons{ } is not allowed to be defined if any of simulate2D{ } or simulate3D{ } is defined.
The k_integration{ } is not allowed to be defined if simulate3D{ } is defined.
None of occupation_zero_fermilevel and occupation_interpolate_invfermi are allowed to be defined if simulate3D{ } is defined.
The spin_align is not allowed to be defined if global{ magnetic_field{ } } is defined.
output_energies, output_occupations, output_transitions, and output_spinor_components are not allowed if simulate3D{ } is already specified in the global{ } group.
The groups output_energies, output_occupations, output_transitions, and output_spinor_components are not allowed if the group simulate3D{ } is defined.
Maintained Keywords
The keywords below are available in at least one of currently published releases and are planned to be included also in the next release.
name
usage:
type: character string
The name of already defined region in region{ } for which optical generation should be calculated. Multiple numerical parameters are inherited after the definitions in the region{ } referred to.
spin_align
usage:
type: choice
values:
yes
orno
default:
no
If set to yes
for Pauli equation solved with 6-band or 8-band
interband
usage:
type: choice
values:
yes
orno
default:
yes
Compute optical transitions dominating in interband transitions, typically conduction band to valence band transitions.
intraband
usage:
type: choice
values:
yes
orno
default:
yes
Compute optical transitions dominating in intraband transitions, typically conduction band to conduction band transitions.
interband_approximation
usage:
type: choice
values:
yes
orno
default:
no
Only terms of the type
intraband_approximation
usage:
type: choice
values:
yes
orno
default:
no
Only terms of the type
enable_hole_hole
usage:
type: choice
values:
yes
orno
default:
yes
If yes
then transitions within valence bands are included according to applied classification.
enable_electron_hole
usage:
type: choice
values:
yes
orno
default:
yes
If yes
then transitions between conduction and valence bands are included according to applied classification.
enable_electron_electron
usage:
type: choice
values:
yes
orno
default:
yes
If yes
then transitions within conduction bands are included according to applied classification.
use_kp8_EP
usage:
type: choice
values:
yes
orno
default:
yes
If yes
then uses the
k_integration{ }
usage:
items: maximum 1
Group defining numerical parameters of integration over the states in the space of the wave vector
k_integration{ relative_size }
usage:
type: real number
values:
unit:
default:
Size of the integrated volume of the
k_integration{ num_points }
usage:
type: integer
values:
unit:
default:
Number of points counted from
k_integration{ num_integrationpoints }
usage:
type: integer
values:
unit:
default:
Number of integration points in the
Spline interpolation at the grid defined with k_integration{ num_integrationpoints } of all quantities necessary for computation of the optical spectra is performed in the
Warning
Assigning too small value to k_integration{ num_integrationpoints } may result in artificial oscillatory results in the spectra.
k_integration{ force_k0_subspace }
usage:
type: choice
values:
yes
orno
default:
no
If set to yes
,
Attention
This approximation should be used carefully as it reduces accuracy of computed optical spectra.
energy_threshold
usage:
type: real number
values:
[0.0, ...)
unit:
default:
Only transitions between states with at least this energy difference are regarded when computing optical spectra.
transition_threshold
usage:
type: real number
values:
[0.0, ...)
unit:
default:
Only transitions between states with at least this optical intensity are regarded when computing optical spectra. Increasing the value can reduce computational time but may neglect weak optical transitions.
occupation_threshold
usage:
type: real number
values:
[0.0, ...)
unit:
default:
Only transitions between states with at least this occupation are regarded when computing optical spectra. Increasing the value can reduce computational time but may neglect weakly occupied states.
occupation_ignore
usage:
type: choice
values:
yes
orno
default:
no
Ignore the occupation of states when computing optical spectra: Valence bands and conduction bands are considered to be fully occupied and fully empty, respectively.
Warning
This feature is under development.
Attention
Occupation and classification of states are currently performed independently for carrier densities and for optical spectra.
occupation_zero_fermilevel
usage:
type: choice
values:
yes
orno
default:
no
This keyword is active when occupation_ignore is set to no
.
In semi-classical current calculations, the quasi-Fermi level may depend on position.
Optical spectra, on the other, hand are computed using a quantum mechanical model with where single states involved in the transitions exhibit non-locality (wave functions) resulting in their existence in areas with different quasi-Fermi levels assigned.
As the model for the spectra assumes a specific quasi-Fermi level for each state, the inconsistency arises.
Using this keyword set to yes
resolves this inconsistency by taking both quasi-Fermi levels equal zero.
Taking it no
, position dependent occupation number is computed.
Warning
This feature is under development.
occupation_interpolate_invfermi
usage:
type: choice
values:
yes
orno
default:
yes
This keyword is active when occupation_ignore and occupation_zero_fermilevel are set to no
.
If yes
then Fermi levels are interpolated between k-points before applying to the integrating algorithm which may increase accuracy of numerical
Warning
This feature is under development.
classify_none{ }
usage:
items: maximum 1
classify_by_energy{ }
usage:
items: maximum 1
classify_by_energy{ method }
Calling sequence
optics{ quantum_spectra{ classify_by_energy{ method } } }
Properties
usage:
type: integer
values:
default:
???
Functionality
—
classify_by_energy{ shift_electrons }
Calling sequence
optics{ quantum_spectra{ classify_by_energy{ shift_electrons } } }
Properties
usage:
type: real number
values: no constraints
unit:
Functionality
—
classify_by_energy{ shift_holes }
Calling sequence
optics{ quantum_spectra{ classify_by_energy{ shift_holes } } }
Properties
usage:
type: real number
values: no constraints
unit:
Functionality
—
classify_by_spinor{ }
usage:
items: maximum 1
classify_by_spinor{ threshold_electron }
Calling sequence
optics{ quantum_spectra{ classify_by_spinor{ threshold_electron } } }
Properties
usage:
type: real number
values:
unit:
Functionality
—
classify_by_spinor{ threshold_hole }
Calling sequence
optics{ quantum_spectra{ classify_by_spinor{ threshold_hole } } }
Properties
usage:
type: real number
values:
unit:
Functionality
—
classify_states
usage:
type: choice
values:
yes
orno
default:
yes
Classifies states as electrons if energy is higher than average value of minimum of the conduction band and maximum of the valence,
classification_threshold
usage:
type: real number
values: no constraints
unit:
default:
A parameter shifting the reference energy for the classification of the states.
excitons{ }
usage:
items: maximum 1
Include excitonic effects.
Attention
Excitons are implemented only for 1D simulations.
excitons{ num_exciton_levels }
usage:
type: integer
values:
unit:
default:
Number of exciton levels included in the model.
excitons{ coulomb_enhancement }
usage:
type: choice
values:
yes
orno
default:
yes
If set to yes
, then the Coulomb enhancement factor, also known as the Sommerfeld factor, is taken into account.
absorption
usage:
type: choice
values:
yes
orno
default:
yes
—
spontaneous_emission
usage:
type: choice
values:
yes
orno
default:
no
Calculate spontaneous emission rate using the momentum matrix element obtained by 8-band kp model. (This feature is not yet implemented in 3D simulation.)
local_absorption
usage:
type: choice
values:
yes
orno
default:
no
Absorption spectrum within local framework is computed and can be outputted using output_local_spectra{ }. Regions with boundary conditions imposed on the Poisson equation (electric potential) are treated as perfectly transparent, zero absorption coefficient is assigned.
Hint
See contacts{ } for further reference on boundary conditions.
Warning
The feature is experimental and may produce unphysical results.
local_spontaneous_emission
usage:
type: choice
values:
yes
orno
default:
no
Spontaneous emission spectrum within local framework is computed and can be outputted using output_local_spectra{ }. Regions with boundary conditions imposed on the Poisson equation (electric potential) are treated as perfectly transparent, zero absorption coefficient is assigned.
Hint
See contacts{ } for further reference on boundary conditions.
Warning
The feature is experimental and may produce unphysical results.
polarization{ }
usage:
items: no constraints
Define polarization of incoming light for which optical absorption spectrum should be calculated.
Important
At least one of the following must be specified within this group, polarization{ re }, polarization{ im }.
polarization{ name }
usage:
type: character string
name attached to output files with computed spectra for the defined polarization
polarization{ re }
usage:
type: vector of 3 real numbers:
values: no constraints
unit:
default:
, ,
real part of the polarization vector
polarization{ im }
usage:
type: vector of 3 real numbers:
values: no constraints
unit:
default:
, ,
imaginary part of the polarization vector
refractive_index
usage:
type: real number
values:
(0.0, ...)
unit:
default:
substrate
Specify constant refractive index for the simulation of the optical spectra.
normalization_volume
usage:
type: real number
values:
(0.0, ...)
unit:
default:
related quantum region
Specifies normalization volume for the optical spectra.
min_energy
usage:
type: real number
values:
[0.0, ...)
unit:
default:
lower energy bound for optical spectra
max_energy
usage:
type: real number
values:
[1e-3, ...)
unit:
default:
upper energy bound for optical spectra
energy_resolution
usage:
type: real number
values:
[1e-6, ...)
unit:
default:
Spacing between subsequent energy grid points.
energy_broadening_gaussian
usage:
type: real number
values:
[1e-6, ...)
unit:
Set the broadening to value greater than 0.0 to make the Gaussian broadening
included to the calculation of the optical spectrums. The specifed value is read as the FWHM
(In 1D and 2D, both Lorentzian and Gaussian can be used simultaneously. In 3D, either of these broadenings must be included.)
energy_broadening_lorentzian
usage:
type: real number
values:
[1e-6, ...)
unit:
Set the broadening to value greater than 0.0 to make the Lorentzian broadening
included to the calculation of the optical spectrums. The specifed value is read as the FWHM
kramers_kronig{ }
usage:
items: maximum 1
If specified, then Kramers-Kronig relations are used to evaluate real part of dielectric function and dispersion of complex refractive index based on previously computed imaginary part of dielectric function.
Attention
Available Hamiltonians, defined within 1-band, 6-band, or 8-band
To handle this problem, the missing background can be approximated analytically assuming additional contributions from
Note
Specific values of parameters: kramers_kronig{ im_epsilon_extension }, kramers_kronig{ im_epsilon_rescale }, kramers_kronig{ delta_static_epsilon }, and kramers_kronig{ delta_position } have to be fitted individually for every device. No tables for materials nor devices are available.
kramers_kronig{ im_epsilon_extension }
usage:
type: real number
values:
[0.0, ...)
unit:
default:
If kramers_kronig{ im_epsilon_extension } is set to non-zero value then
kramers_kronig{ im_epsilon_rescale }
usage:
type: real number
values:
(0.0, ...)
unit:
default:
This parameter is rescaling value used to approximate constant
kramers_kronig{ delta_static_epsilon }
usage:
type: real number
values:
[0.0, ...)
unit:
default:
If this attribute is set to non-zero value then Dirac delta-function is added to
kramers_kronig{ delta_position }
usage:
type: real number
values:
(0.0, ...)
unit:
This parameter is defining energy at which the Dirac delta function is added to
kramers_kronig{ delta2_static_epsilon }
usage:
type: real number
values:
[0.0, ...)
unit:
default:
If this attribute is set to non-zero value then second Dirac delta-function is added to
kramers_kronig{ delta2_position }
usage:
type: real number
values:
(0.0, ...)
unit:
This parameter is defining energy at which the second Dirac delta function is added to
kramers_kronig{ delta3_static_epsilon }
usage:
type: real number
values:
[0.0, ...)
unit:
default:
If this attribute is set to non-zero value then the third Dirac delta-function is added to
kramers_kronig{ delta3_position }
usage:
type: real number
values:
(0.0, ...)
unit:
This parameter is defining energy at which the third Dirac delta function is added to
kramers_kronig{ use_for_absorption }
usage:
type: choice
values:
yes
orno
default:
no
If set to yes
, then computed refractive index is used to calculate absorption.
Otherwise, constant value is used.
kramers_kronig{ use_for_emission }
usage:
type: choice
values:
yes
orno
default:
no
If set to yes
, then the computed refractive index is used to calculate emission.
Otherwise, constant value is used.
output_energies
usage:
type: choice
values:
yes
orno
default:
no
Output energy dispersion for every transition.
output_occupations
usage:
type: choice
values:
yes
orno
default:
no
Output occupation dispersion for every transition.
output_transitions
usage:
type: choice
values:
yes
orno
default:
no
Output transition strength for every transition.
output_spinor_components
usage:
type: choice
values:
yes
orno
default:
no
Output the spinor components for each state at each
Note
In 1-dimensional systems the axis of quantization for the angular momentum is x, in 3D z.
output_spectra{ }
usage:
items: exactly 1
Control of optical spectra output
output_spectra{ im_epsilon }
usage:
type: choice
values:
yes
orno
default:
yes
Imaginary part of dielectric function is outputted.
output_spectra{ absorption_coeff }
usage:
type: choice
values:
yes
orno
default:
yes
If set to yes
, then the optical absorption coefficient expressed in
output_spectra{ decadic_absorption_coeff }
usage:
type: choice
values:
yes
orno
default:
no
If set to yes
, then the optical absorption coefficient is expressed in
output_spectra{ gain }
usage:
type: choice
values:
yes
orno
default:
no
If set to yes
, then the optical gain coefficient expressed in
output_spectra{ decadic_gain }
usage:
type: choice
values:
yes
orno
default:
no
If set to yes
, then the optical gain coefficient expressed in
output_spectra{ re_epsilon }
usage:
type: choice
values:
yes
orno
default:
yes
If set to yes
, then the real part of dielectric function (relative dielectric permittivity) is outputted.
output_spectra{ refractive_index }
usage:
type: choice
values:
yes
orno
default:
yes
If set to yes
, then dispersion of refractive index is outputted.
output_spectra{ emission_photons }
usage:
type: choice
values:
yes
orno
default:
yes
If set to yes
, then spectrum of photon number is outputted with one of the following units
output_spectra{ emission_power }
usage:
type: choice
values:
yes
orno
default:
no
If set to yes
, then photon power spectrum is outputted with units
output_spectra{ spectra_over_energy }
usage:
type: choice
values:
yes
orno
default:
yes
Output spectra with respect to the energy.
output_spectra{ spectra_over_frequency }
usage:
type: choice
values:
yes
orno
default:
no
Output spectra with respect to the frequency.
output_spectra{ spectra_over_wavelength }
usage:
type: choice
values:
yes
orno
default:
no
Output spectra with respect to the wavelength.
output_spectra{ spectra_over_wavenumber }
usage:
type: choice
values:
yes
orno
default:
no
Output spectra with respect to the wave number.
output_component_spectra{ }
usage:
items: exactly 1
Control of output of components of spectra
If this group is defined then state-to-state spectral components are outputted.
output_component_spectra{ threshold_im_epsilon }
usage:
type: real number
values:
[0.0, ...)
unit:
default:
Only components of dielectric funtion for which transition strength is greater than this attribute are outputted.
output_component_spectra{ threshold_emission_photons }
usage:
type: real number
values:
[0.0, ...)
unit:
for 1D; for 2D; for 3Ddefault:
for 1D; for 2D; for 3D
Only components of emission spectra for which transition strength is greater than this attribute are outputted.
output_component_spectra{ im_epsilon }
usage:
type: choice
values:
yes
orno
default:
yes
Imaginary part of dielectric function is outputted.
output_component_spectra{ absorption_coeff }
usage:
type: choice
values:
yes
orno
default:
yes
If set to yes
, then the optical absorption coefficient expressed in
output_component_spectra{ decadic_absorption_coeff }
usage:
type: choice
values:
yes
orno
default:
no
If set to yes
, then the optical absorption coefficient is expressed in
output_component_spectra{ gain }
usage:
type: choice
values:
yes
orno
default:
no
If set to yes
, then the optical gain coefficient expressed in
output_component_spectra{ decadic_gain }
usage:
type: choice
values:
yes
orno
default:
no
If set to yes
, then the optical gain coefficient expressed in
output_component_spectra{ emission_photons }
usage:
type: choice
values:
yes
orno
default:
yes
If set to yes
, then spectrum of photon number is outputted with one of the following units
output_component_spectra{ emission_power }
usage:
type: choice
values:
yes
orno
default:
no
If set to yes
, then photon power spectrum is outputted with units
output_component_spectra{ spectra_over_energy }
usage:
type: choice
values:
yes
orno
default:
yes
Output spectra with respect to the energy.
output_component_spectra{ spectra_over_frequency }
usage:
type: choice
values:
yes
orno
default:
no
Output spectra with respect to the frequency.
output_component_spectra{ spectra_over_wavelength }
usage:
type: choice
values:
yes
orno
default:
no
Output spectra with respect to the wavelength.
output_component_spectra{ spectra_over_wavenumber }
usage:
type: choice
values:
yes
orno
default:
no
Output spectra with respect to the wave number.
output_local_spectra{ }
usage:
items: exactly 1
Control of output of local optical spectra
output_local_spectra{ im_epsilon }
usage:
type: choice
values:
yes
orno
default:
yes
Imaginary part of dielectric function is outputted.
output_local_spectra{ absorption_coeff }
usage:
type: choice
values:
yes
orno
default:
yes
If set to yes
, then the optical absorption coefficient expressed in
output_local_spectra{ decadic_absorption_coeff }
usage:
type: choice
values:
yes
orno
default:
no
If set to yes
, then the optical absorption coefficient is expressed in
output_local_spectra{ gain }
usage:
type: choice
values:
yes
orno
default:
no
If set to yes
, then the optical gain coefficient expressed in
output_local_spectra{ decadic_gain }
usage:
type: choice
values:
yes
orno
default:
no
If set to yes
, then the optical gain coefficient expressed in
output_local_spectra{ emission_photons }
usage:
type: choice
values:
yes
orno
default:
yes
If set to yes
, then spectrum of photon number is outputted with one of the following units
output_local_spectra{ emission_power }
usage:
type: choice
values:
yes
orno
default:
no
If set to yes
, then photon power spectrum is outputted with units
output_local_spectra{ spectra_over_energy }
usage:
type: choice
values:
yes
orno
default:
yes
Output spectra with respect to the energy.
output_local_spectra{ spectra_over_frequency }
usage:
type: choice
values:
yes
orno
default:
no
Output spectra with respect to the frequency.
output_local_spectra{ spectra_over_wavelength }
usage:
type: choice
values:
yes
orno
default:
no
Output spectra with respect to the wavelength.
output_local_spectra{ spectra_over_wavenumber }
usage:
type: choice
values:
yes
orno
default:
no
Output spectra with respect to the wave number.
Examples
We can generally write the electric field of a traveling wave propagating to
where
re=[ , , ]
and im = [ , , ]
correspond to the first and second column in the last line.
# linearly polarized light in x direction.
# name is used for the file names of the output.
polarization{ name = "x" re = [1,0,0] }
# linearly polarized light in y direction
polarization{ name = "y" re = [0,1,0] }
# linearly polarized light in z direction
polarization{ name = "z" re = [0,0,1] }
# TM mode.
# This naming might be useful when analyzing heterostructure
# grown in x direction.
polarization{ name = "TM" re = [1,0,0] }
# TE mode
polarization{ name = "TEy" re = [0,1,0] }
# TE mode
polarization{ name = "TEz" re = [0,0,1] }
# (sigma+) circularly polarized light around the x axis
polarization{ name = "y+iz" re = [0,1,0] im = [0,0, 1] }
# (sigma-) circularly polarized light around the x axis
polarization{ name = "y-iz" re = [0,1,0] im = [0,0,-1] }
# an example for an arbitrary polarization direction
polarization{ name = "x1y1z2" re = [1,1,2] }
Last update: 02/04/2025