optics{ quantum_region{} }

This group specifies numerical properties of the quantum model used for computations of optical spectra base on the Fermi’s Golden Rule.

Attention

Our algorithms and models controlled by keywords in this group are intensively developed. For this reason, related syntax may change wit each next release. Users of this group are highly encouraged to update the software regularly with the new releases and to use our support system to give us feedback on any related issues.

Note

The group optics{} should not be currently used for modeling optical spectra for transitions between two separate 1-band models (e.g., 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.

name

The name of already defined region in quantum{ region{} } for which optical generation should be calculated. Multiple numerical parameters are inherited after the definitions in the quantum{ region{} } referred to.

type:

string

States and Transitions

energy_allowed_only (optional)
type:

choice

values:

yes or no

default:

no

make_spin_degenerate (optional)

Effect of the flag is throwing away every second state from the respective quantum solver, i.e. the states are made spin degenerate and are counted twice. Use only when all states are pairwise identical.

type:

choice

values:

yes or no

default:

yes

spin_align (optional)

If spin_aligned = yes is enabled for Pauli equation solved with 6-band or 8-band \(\mathbf{k} \cdot \mathbf{p}\) method, a spin-basis transformation is performed for each pair of quantum states (i, i+1), with i being an odd number, such that matrix representation of the Pauli operator \(\hat{\mathbf{\sigma}}\) multiplied by a selected versor (along the \(z\) direction in 3D, and the \(x\) direction in 1D and 2D) becomes diagonal in the subspace defined by these two states. With other words, spinor compositions of degenerate (due to lack of magnetic field) pairs of quantum states are chosen as if magnetic field was parallel to the \(z\) direction (3D) or \(x\) direction (1D, 2D). This procedure is triggered before running an algorithm computing optical spectra.

type:

choice

values:

yes or no

default:

no

Type of Transitions & Selection of Bands

interband (optional)

Compute optical transitions dominating in interband transitions, typically conduction band to valence band transitions.

type:

choice

values:

yes or no

default:

yes

intraband (optional)

Compute optical transitions dominating in intraband transitions, typically conduction band to conduction band transitions.

type:

choice

values:

yes or no

default:

yes

interband_approximation (optional)

Only terms of the type \(<c|p|v>\) and \(<v|p|c>\) are taken into account (\(c=s\) and \(v=x,y,z\))

type:

choice

values:

yes or no

default:

no

intraband_approximation (optional)

Only terms of the type \(<c|p|c>\) and \(<v|p|v>\) are taken into account (\(c=s\) and \(v=x,y,z\))

type:

choice

values:

yes or no

default:

no

enable_hole_hole (optional)

If yes then transitions within valence bands are included according to applied classification.

type:

choice

values:

yes or no

default:

yes

enable_electron_electron (optional)

If yes then transitions within conduction bands are included according to applied classification.

type:

choice

values:

yes or no

default:

yes

enable_electron_hole (optional)

If yes then transitions between conduction and valence bands are included according to applied classification.

type:

choice

values:

yes or no

default:

yes

use_kp8_EP (optional)

If yes then uses the \(P\) parameter from 8-band \(\mathbf{k} \cdot \mathbf{p}\) material data is used to compute the strength of optical transitions when computing the spectra between 2 states computed within 1-band model, and when computing the spectra with conduction band expressed within 1-band model and valence bands within 6-band \(\mathbf{k} \cdot \mathbf{p}\) model.

type:

choice

values:

yes or no

default:

yes

Thresholds

energy_threshold (optional)

Only transitions between states with at least this energy difference are regarded when computing optical spectra.

type:

real number

constrain:

energy_threshold >= 0

default:

1e-6

unit:

[eV]

transition_threshold (optional)

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.

type:

real number

constrain:

transition_threshold >= 0

default:

1e-6

unit:

[eV]

occupation_threshold (optional)

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.

type:

real number

constrain:

occupation_threshold >= 0

default:

0

unit:

[eV]

Occupation & States Classification

Attention

Occupation and classification of states are currently performed independently for carrier densities and for optical spectra.

occupation_ignore (optional)

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.

type:

choice

values:

yes or no

default:

no

occupation_zero_fermilevel (optional)

This keyword is active when occupation_ignore = 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 occupation_zero_fermilevel = yes resolves this inconsistency by taking both quasi-Fermi levels equal 0. Taking occupation_zero_fermilevel = no position dependent occupation number is computed.

Warning

This feature is under development.

type:

choice

values:

yes or no

default:

no

occupation_interpolate_invfermi (optional)

This keyword is active when occupation_ignore = no and occupation_zero_fermilevel = no. If yes then Fermi levels are interpolated between k-points before applying to the integrating algorithm which may increase accuracy of numerical \(k_\parallel\) space integration.

Warning

This feature is under development.

type:

choice

values:

yes or no

default:

yes

States Classification

classify_states (optional)

Classifies states as electrons if energy is higher than average value of minimum of the conduction band and maximum of the valence, \((EC_{min} + EV_{max})/2\), plus classification_threshold. :type: choice :values: yes or no :default: yes

classification_threshold (optional)

A parameter shifting the reference energy for the classification of the states. :type: real number :unit: eV :default: 0

Spectra Models

excitons{} (optional)

Include excitonic effects.

Attention

Excitons are implemented only for 1D simulations.

num_exciton_levels (optional)
type:

integer number

constrain:

0 < num_exciton_levels < 10

default:

1

coulomb_enhancement (optional)
type:

choice

values:

yes or no

default:

yes

spontaneous_emission (optional)

Calculate spontaneous emission rate using the momentum matrix element obtained by 8-band kp model. (This feature is not yet implemented in 3D simulation.)

type:

choice

values:

yes or no

default:

no

Output Settings

output_energies (optional)

Output energy dispersion for every transition.

type:

choice

values:

yes or no

default:

no

output_occupations (optional)

Output occupation dispersion for every transition.

type:

choice

values:

yes or no

default:

no

output_transitions (optional)

Output transition strength for every transition.

type:

choice

values:

yes or no

default:

no

output_spinor_components (optional)

Output the spinor components for each state at each \(k_\parallel\) point (only relevant in multi-band \(\mathbf{k} \cdot \mathbf{p}\) calculations).

Note

In 1-dimensional systems the axis of quantization for the angular momentum is x, in 3D z.

type:

choice

values:

yes or no

default:

no

output_spectra (optional)
output_components (optional)

If output_components is different than 0 this attribte generates an output of state-to-state spectral components of any type of spectra triggered by the keywords absorption, decadic_absorption, gain, decadic_gain, and emission. If output_components = 1 then components with vanishing or nearly vanishing values are ommited in the output. If output_components = 2 then all components are outputted.

Warning

output_components = 2 may lead to a big number of files being written.

type:

integer

values:

0, 1, 2

default:

0

absorption (optional)
type:

choice

values:

yes or no

default:

yes

decadic_absorption (optional)
type:

choice

values:

yes or no

default:

no

gain (optional)
type:

choice

values:

yes or no

default:

yes

decadic_gain (optional)
type:

choice

values:

yes or no

default:

no

emission (optional)
type:

choice

values:

yes or no

default:

yes

spectra_over_energy (optional)

Output spectra with respect to the energy.

type:

choice

values:

yes or no

default:

yes

spectra_over_wavelength (optional)

Output spectra with respect to the wavelength.

type:

choice

values:

yes or no

default:

no

spectra_over_frequency (optional)

Output spectra with respect to the frequency.

type:

choice

values:

yes or no

default:

no

spectra_over_wavenumber (optional)

Output spectra with respect to the wavenumber.

type:

choice

values:

yes or no

default:

no

photon_spectra (optional)
type:

choice

values:

yes or no

default:

yes

power_spectra (optional)
type:

choice

values:

yes or no

default:

no

Polarization

polarization{}

Define polarization of incoming light for which optical absorption spectrum should be calculated.

name

name attached to output files with computed spectra for the defined polarization

type:

string

re (optional)

real part of the polarization vector

type:

array of 3 real numbers

default:

0.0

im (optional)

imaginary part of the polarization vector

type:

array of 3 real numbers

default:

0.0

Examples:

# 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]                 }

We can generally write the electric field of a traveling wave propagating to \(\mathbf{k}\) direction as follows:

\[\begin{split}\begin{aligned} \mathbf{E}(\mathbf{r};t) = & [E_x\hat{\mathbf{x}}+E_y\hat{\mathbf{y}}+E_z\hat{\mathbf{z}}] e^{\imath[\mathbf{k}\mathbf{r}-\omega t]} \\ = & \begin{bmatrix} E_x \\ E_y \\ E_z \end{bmatrix} e^{\imath[\mathbf{k}\mathbf{r}-\omega t]} = \left( \begin{bmatrix} \mathrm{Re}(E_x) \\ \mathrm{Re}(E_y) \\ \mathrm{Re}(E_z) \end{bmatrix} + \imath \begin{bmatrix} \mathrm{Im}(E_x) \\ \mathrm{Im}(E_y) \\ \mathrm{Im}(E_z) \end{bmatrix} \right) e^{\imath[\mathbf{k}\mathbf{r}-\omega t]} \end{aligned}\end{split}\]

where \(E_{x/y/z}\) are complex numbers.

re=[ , , ] and im = [ , , ] correspond to the first and second column in the last line.

Refractive Index

refractive_index (optional)

Specify constant refractive index for the simulation of the optical spectra.

type:

real number

default:

refractive index of the substrate material

constraints:

0 < refractive_index

normalization_volume (optional)

Specifies normalization volume for the optical spectra. The default is the volume of the simulated device.

value:

real number

unit:

[nm^dimension]

default:

the volume of region in quantum{} to which the simulation refers to.

constraints:

0.0 < normalization_volume

Energy Grid and Broadening

energy_resolution (optional)

spectral resolution

type:

real number

unit:

[eV]

default:

1e-3

constraints:

1.0e-6 <= energy_resolution

energy_max (optional)

upper energy bound for optical spectra

type:

real number

unit:

[eV]

default:

2.0

constraints:

1.0e-3 <= energy_max

energy_min (optional)

lower energy bound for optical spectra

type:

real number

unit:

[eV]

default:

0.0

constraints:

0.0 <= energy_min

energy_broadening_lorentzian (optional)

Set the broadening to value greater than 0.0 to make the Lorentzian broadening

\[\mathcal{L}(E-E_0)=\frac{1}{\pi}\frac{\Gamma/2}{(E-E_0)+(\Gamma/2)^2}\]

included to the calculation of the optical spectrums. The specifed value is read as the FWHM \(\Gamma\).

type:

real number

unit:

[eV]

default:

0.0

constraints:

1.0e-6 <= energy_broadening_lorentzian

energy_broadening_gaussian (optional)

Set the broadening to value greater than 0.0 to make the Gaussian broadening

\[\mathcal{L}(E-E_0)=\frac{1}{\sqrt{2\pi}\sigma}\exp{\big(-\frac{(E-E_0)^2}{2\sigma^2}\big)}\]

included to the calculation of the optical spectrums. The specifed value is read as the FWHM \(\Gamma=2\sqrt{\ln 2}\cdot\sigma\).

(In 1D and 2D, both Lorentzian and Gaussian can be used simultaneously. In 3D, either of these broadenings must be included.)

type:

real number

unit:

[eV]

default:

0.0

constraints:

1.0e-6 <= energy_broadening_gaussian

Kramers-Kronig Relations

Attention

Available Hamiltonians, defined within 1-band, 6-band, or 8-band \(\mathbf{k} \cdot \mathbf{p}\) models, will contribute to the imaginary part of dielectric function \(\varepsilon_{i}\) only with transitions close to the \(\Gamma\) point, therefore, underestimating the spectrum at higher energies. As Kramers-Kronig relations are non-local, the transformation of such \(\varepsilon_{i}\) is reproducing real part of dielectric function \(\varepsilon_{r}\) accurately only up to slow-varying background. The missing background accounts for not-computed high-energy \(\varepsilon_{i}\). Therefore only local features of real part of dielectric function are accessible within the transformation.

To handle this problem, the missing background can be approximated analytically assuming additional contributions from \(\varepsilon_{i}\) at high energies with parameters: im_epsilon_extension, im_epsilon_rescale, delta_static_epsilon, and delta_position. These contributions are not shown in the \(\varepsilon_{i}\) output, but their effect is present in \(\varepsilon_{r}\) output.

Note

Specific values of parameters: im_epsilon_extension, im_epsilon_rescale, delta_static_epsilon, and delta_position have to be fitted individually for every device. No tables for materials nor devices are available.

kramers_kronig{} (optional)

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.

im_epsilon_extension (optional)

If im_epsilon_extension is set to non-zero value then \(\varepsilon_{i}\) computed at energy_max multiplied by im_epsilon_rescale is assumed for \(\varepsilon_{i}\) in an energy range from energy_max to energy_max + im_epsilon_extension. Effectively a rectangle is attached to the end of the spectra with width of im_epsilon_extension and height of the \(\varepsilon_{i}\) at energy_max multiplied by im_epsilon_rescale, to be used in Kramers-Kronig transformation.

type:

real number

unit:

[eV]

default:

0.0

constraints:

0.0 <= im_epsilon_extension

im_epsilon_rescale (optional)

This parameter is rescaling value used to approximate constant \(\varepsilon_{i}\) at high energies, from energy_max to energy_max + im_epsilon_extension. When im_epsilon_rescale = 1 then exactly \(\varepsilon_{i}\) at energy_max is used.

type:

real number

unit:

[eV]

default:

1.0

constraints:

0.0 < im_epsilon_rescale

delta_static_epsilon (optional)

If delta_static_epsilon is set to non-zero value then delta-function multiplied by delta_static_epsilon is added to \(\varepsilon_{i}\) at energy delta_position to be used in Kramers-Kronig transformation.

type:

real number

unit:

[eV]

default:

0.0

constraints:

0.0 <= delta_static_epsilon

delta_position (optional)

This parameter is defining position of the delta function added to \(\varepsilon_{i}\).

type:

real number

unit:

[eV]

default:

1.0e30

constraints:

energy_max < delta_position

use_for_absorption (optional)

If use_for_absorption = yes then computed refractive index is used to calculate absorption. Otherwise, constant value is used.

type:

choice

values:

yes or no

default:

no

use_for_emission (optional)

If use_for_emission = yes then the computed refractive index is used to calculate emission. Otherwise, constant value is used.

type:

choice

values:

yes or no

default:

no

Integration in the \(k_\parallel\) Space

k_integration{} (optional)

Group defining numerical parameters of integration over the states in the space of the wave vector \(k_\parallel\) space.

relative_size (optional)

Size of the integrated volume of the \(k_\parallel\) space expressed as relative value to the size of the First Brillouin Zone

type:

real number

constraints:

0.001 <= relative_size <= 1.0

default:

0.1

symmetry (optional)

Rotational symmetry of the band structure in the \(k_\parallel\) space assumed for the integration. Having symmetry = n assumes n-fold symmetry axis along the growth direction of the structure, hence the n-fold symmetry of the bandstructure computed, which is further utilized to reduce total time of integration by not computing the states which are equivalent due to the symmetry.

type:

integer number

constraints:

1 <= symmetry <= 4

default:

1

num_points

Number of points counted from \(k=0\) to the border of considered \(k_\parallel\) space along \(k_\parallel=k_y\) or \(k_z\) excluding the point at \(k=0\). The Schrödinger equation is solved for optical spectra at the grid with the “radius” as described above. The transition intensities are computed at these points and later used in the integration procedure.

type:

integer number

constraints:

1 <= num_points <= 100

default:

4

num_integrationpoints (optional)

number of integration points in the \(k_\parallel\) defining an independent grid analogously as the attribute num_points.

Spline interpolation at the grid defined with num_integrationpoints of all quantities necessary for computation of the optical spectra is performed in the \(k_\parallel\) space based on solution obtained at the grid defined with the attribute num_points. The transition intensities and energies resulting from this interpolation are integrated and included in the optical spectra.

Warning

Assigning too small value to num_integrationpoints may result in artificial oscillatory results in the spectra.

type:

integer number

constraints:

1 <= num_integrationpoints

default:

180

force_k0_subspace (optional)

If set to yes, \(k_\parallel\) integration is modified in a way that only states for point \(k=0\) are computed exactly, whereas for all other k points the wave functions are computed in the subspace of the solutions for the \(k=0\). Computational speed is notably improved as a result of this approximation. Therefore enlarging the number of eigenvalues included in the computation becomes more feasible.

Attention

This approximation should be used carefully as it reduces accuracy of computed optical spectra.

type:

choice

values:

yes or no

default:

no