kp_8band{ }#

Calling sequence

quantum{ region{ kp_8band{ } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • items: maximum 1

Functionality

Triggers solver of 8-band \(\mathbf{k} \cdot \mathbf{p}\) Schrödinger equation for the Gamma conduction band and the heavy, light and split-off hole valence bands.

Nested keywords


num_electrons#

Calling sequence

quantum{ region{ kp_8band{ num_electrons } } }

Properties

  • usage: \(\mathrm{\textcolor{Dandelion}{conditional}}\)

  • type: integer

  • values: \(z \geq 0\)

  • default: \(z=0\)

Functionality

number of electron eigenvalues


num_holes#

Calling sequence

quantum{ region{ kp_8band{ num_holes } } }

Properties

  • usage: \(\mathrm{\textcolor{Dandelion}{conditional}}\)

  • type: integer

  • values: \(z \geq 0\)

  • default: \(z=0\)

Functionality

number of hole eigenvalues


lapack{ }#

Calling sequence

quantum{ region{ kp_8band{ lapack{ } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • items: maximum 1

Functionality

Triggers use of LAPACK eigensolver, if not already chosen by default, and organizes its parameters.

Note

This is the default eigensolver when 8-band \(\mathbf{k} \cdot \mathbf{p}\) method is used in 1D and 2D simulations.


lapack{ accuracy }#

Calling sequence

quantum{ region{ kp_8band{ lapack{ accuracy } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: real number

  • values: \(0.0 \leq r \leq 10^{-6}\)

  • default: \(r=0.0\)

  • unit: \(\mathrm{eV}\)

Functionality

Requested absolute accuracy of found eigenvalues to be lower than or equal to the value set here. The default value 0.0 means that the routine will try to achieve the best possible accuracy.


lapack{ shift_window }#

Calling sequence

quantum{ region{ kp_8band{ lapack{ shift_window } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: integer

  • values: no constraints

  • default: \(z=0\)

Functionality

Shifts the window of computed states up (for positive integers) or down (for negative integers) by the specified number.


arpack_inv{ }#

Calling sequence

quantum{ region{ kp_8band{ arpack_inv{ } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • items: maximum 1

Functionality

Triggers use of ARPACK shift invert eigensolver, if not already chosen by default, and organizes its parameters.

Note

This is the default eigensolver when 8-band \(\mathbf{k} \cdot \mathbf{p}\) method is used in 3D simulations.

Hint

It is faster than LAPACK if the size of solved matrix is much larger than the number of states to be computed, e.g., if one is searching for 5-30 states in the quantum region with about 150 grid points. There the matrix size is 1200.

Attention

It is less stable than LAPACK. It may fail in the presence of degenerate eigenvalue, e.g., Pauli or \(\mathbf{k} \cdot \mathbf{p}\) without magnetic field.


arpack_inv{ accuracy }#

Calling sequence

quantum{ region{ kp_8band{ arpack_inv{ accuracy = ... } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: real number

  • values: \(0.0 \leq r \leq 10^{-6}\)

  • default: \(r=1e-7\)

  • unit: \(\mathrm{-}\)

Functionality

Relative accuracy of the Ritz values which are approximating eigenvalues. See Rayleigh-Ritz method for reference.


arpack_inv{ iterations }#

Calling sequence

quantum{ region{ kp_8band{ arpack_inv{ iterations = ... } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: integer

  • values: \(z \geq 1\)

  • default: \(z=100000\)

Functionality

Sets the maximum number of iterations allowed in this solver.


arpack_inv{ energy_cutoff_electrons }#

Calling sequence

quantum{ region{ kp_8band{ arpack_inv{ energy_cutoff_electrons } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: real number

  • values: no constraints

  • default: \(r=0.1\)

  • unit: \(\mathrm{eV}\)

Functionality

Sets the minimum eigenenergy of the conduction-band states (\(E_{n,min} = E_{cb} - \Delta E\)) to be found by the solver, where \(E_{cb}\) is the minimum of the conduction band and \(\Delta E = r\) is defined by this keyword.


arpack_inv{ energy_cutoff_holes }#

Calling sequence

quantum{ region{ kp_8band{ arpack_inv{ energy_cutoff_holes } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: real number

  • values: no constraints

  • default: \(r=0.1\)

  • unit: \(\mathrm{eV}\)

Functionality

Sets the maximum eigenenergy of the valence-band states (\(E_{n,max} = VBO + \Delta E\)) to be found by the solver, where \(VBO\) is the top-valence-band energy and \(\Delta E = r\) is defined by this keyword.


arpack_inv{ linear_solver{ } }#

Calling sequence

quantum{ region{ kp_8band{ arpack_inv{ linear_solver{ } } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • items: maximum 1

Functionality

Provides control over the linear equation solver for the preconditioner of the ARPACK shift invert eigensolver.

Warning

This is the unstable part of the ARPACK with the inverse preconditioning.


arpack_inv{ linear_solver{ iterations } }#

Calling sequence

quantum{ region{ kp_8band{ arpack_inv{ linear_solver{ iterations } } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: integer

  • values: \(z \geq 1\)

  • default: \(z=10000\)

Functionality

Sets the maximum number of iterations allowed in this solver.

Hint

Occasionally, using even larger values than 10000 may be necessary to avoid diagonalization failure.


arpack_inv{ linear_solver{ abs_accuracy } }#

Calling sequence

quantum{ region{ kp_8band{ arpack_inv{ linear_solver{ abs_accuracy } } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: real number

  • values: [0.0, ...)

  • default: \(r=1e-9\)

  • —

Functionality

Requests the absolute accuracy of the solver.


arpack_inv{ linear_solver{ rel_accuracy } }#

Calling sequence

quantum{ region{ kp_8band{ arpack_inv{ linear_solver{ rel_accuracy } } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: real number

  • values: \(0.0 \leq r \leq 10^{-8}\)

  • default: \(r=1e-9\)

  • unit: \(\mathrm{-}\)

Functionality

Requests the relative accuracy of the solver.


arpack_inv{ linear_solver{ method } }#

Added in version 3.0.0.

Calling sequence

quantum{ region{ kp_8band{ arpack_inv{ linear_solver{ method = "..." } } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: choice

  • values: cg or cscg or bicgstab

  • default: cg

Functionality

Selects linear solver to be used:

cg: Conjugate Gradient
csgs: Composite Step Conjugate Gradient
bicgstab: Biconjugate Gradient Stabilized Method

arpack_inv{ linear_solver{ force_diagonal_preconditioner } }#

Calling sequence

quantum{ region{ kp_8band{ arpack_inv{ linear_solver{ force_diagonal_preconditioner } } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: choice

  • values: yes or no

  • default: yes

Functionality

Forces the use of a slower but more robust diagonal preconditioner for the linear solver. As a result, the total runtime and stability of the ARPACK shift invert eigensolver may become much better and the diagonalization failure may be avoided.


davidson{ }#

Calling sequence

quantum{ region{ kp_8band{ davidson{ } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • items: maximum 1

Functionality

Triggers Davidson solver and organizes its parameters. It offers both better speed as well as increased stability compared to the ARPACK eigensolver in 2D and 3D.

Warning

The implementation of the Davidson solver is still under development, therefore, should be considered as an experimental feature.

For example, it has the tendency to fail in the presence of degenerate eigenvalue, e.g., Pauli or \(\mathbf{k} \cdot \mathbf{p}\) without magnetic field. In this case, breaking the degeneracies by slightly changing the geometry of the system or adding a weak magnetic field can be tried. Alternatively, switching back to ARPACK inverse or, in 1D or smaller 2D systems, to LAPACK may be considered.


davidson{ accuracy }#

Calling sequence

quantum{ region{ kp_8band{ davidson{ accuracy = ... } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: real number

  • values: \(10^{-16} \leq r \leq 10^{-6}\)

  • default: \(r=1e-7\)

  • unit: \(\mathrm{-}\)

Functionality

Relative accuracy of the Ritz values which are approximating eigenvalues. See Rayleigh-Ritz method for reference.


davidson{ iterations }#

Calling sequence

quantum{ region{ kp_8band{ davidson{ iterations = ... } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: integer

  • values: \(z \geq 1\)

  • default: \(z=100000\)

Functionality

Sets the maximum number of iterations allowed in this solver.


davidson{ energy_cutoff_electrons }#

Calling sequence

quantum{ region{ kp_8band{ davidson{ energy_cutoff_electrons } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: real number

  • values: no constraints

  • default: \(r=0.0\)

  • unit: \(\mathrm{eV}\)

Functionality

Sets the expected eigenenergy of the conduction-band states ($E_{n,exp} = E_{cb} - Delta E$) around which the solutions are to be found by the solver, where $E_{cb}$ is the minimum of the conduction band and $Delta E = r$ is defined by this keyword.


davidson{ energy_cutoff_holes }#

Calling sequence

quantum{ region{ kp_8band{ davidson{ energy_cutoff_holes } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: real number

  • values: no constraints

  • default: \(r=0.0\)

  • unit: \(\mathrm{eV}\)

Functionality

Sets the expected eigenenergy of the valence-band states ($E_{n,exp} = VBO + Delta E$) around which the solutions are to be found by the solver, where $VBO$ is the top-valence-band energy and $Delta E = r$ is defined by this keyword.


forward_differences#

Calling sequence

quantum{ region{ kp_8band{ forward_differences = "..." } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: choice

  • values: yes or no

  • default: no

Functionality

If set to yes then forward and backward differences are used for the first derivative discretization of the Kane parameter \(P\) in the the 8-band k.p Hamiltonian. By default, set to no, centered differences are used. This parameter might affect spurious solutions of the wave functions. See eq. (1.50) and eq. (1.51) of PhD thesis T. Andlauer for more details.


electron_far_band#

Calling sequence

quantum{ region{ kp_8band{ electron_far_band = ... } } }

Properties

  • usage: \(\mathrm{\textcolor{Dandelion}{conditional}}\)

  • type: real number

  • values: no constraints

  • default: \(r=0.0\)

  • unit: \(\mathrm{-}\)

Dependencies

—

Functionality

Far-band contribution to electrons \(S = 1.0 + r\). The default results in rescaling such that \(S = 1.0\).

Note

It can be useful to set this value to r = -1.0 which then corresponds to setting \(S = 0.0\).


correct_electron_gfactor#

Calling sequence

quantum{ region{ kp_8band{ correct_electron_gfactor = ... } } }

Properties

  • usage: \(\mathrm{\textcolor{Dandelion}{conditional}}\)

  • type: real number

  • values: [0.0, ...)

  • default: \(r=-1.0\)

Dependencies

—

Functionality

When \(r<0\) then the g-factor is set to 2.
When \(r=0\) then the g-factor is computed.
When \(r>0\) then the g-factor is computed assuming energy gap equal \(r\).
See more details in Zeeman Term.

rescale_kp_everywhere#

Calling sequence

quantum{ region{ kp_8band{ rescale_kp_everywhere } } }

Properties

  • usage: \(\mathrm{\textcolor{Dandelion}{conditional}}\)

  • type: choice

  • values: yes or no

  • default: yes

Dependencies

—

Functionality

If set to yes then \(N, M\), and \(P\) parameters are rescaled. See more details in Zeeman Term.


avoid_spurious#

Calling sequence

quantum{ region{ kp_8band{ avoid_spurious } } }

Properties

  • usage: \(\mathrm{\textcolor{Dandelion}{conditional}}\)

  • type: choice

  • values: yes or no

  • default: no

Dependencies

—

Functionality

If set to yes then algorithm avoiding spurious solutions is used.


kp_parameters{ }#

Calling sequence

quantum{ region{ kp_8band{ kp_parameters{ } } } }

Properties

—

Functionality

Provides options for advanced manipulation of k.p parameters from database.

Attention

The groups use_Luttinger_parameters and approximate_kappa are available only for simulations with zincblende crystal symmetry.


kp_parameters{ use_Luttinger_parameters }#

Calling sequence

quantum{ region{ kp_8band{ kp_parameters{ use_Luttinger_parameters } } } }

Properties

—

Functionality

By default the solver uses the DKK (Dresselhaus-Kip-Kittel) parameters (L, M, N). If enabled then it uses Luttinger parameters (\(\gamma_1\), \(\gamma_2\), \(\gamma_3\)) instead.

value:

yes or no

default:

no


kp_parameters{ from_6band_parameters }#

Calling sequence

quantum{ region{ kp_8band{ kp_parameters{ from_6band_parameters } } } }

Properties

—

Functionality

By default the 8-band \(\mathbf{k} \cdot \mathbf{p}\) parameters are taken from database or input file. If enabled then it evaluates the 8-band \(\mathbf{k} \cdot \mathbf{p}\) parameters from 6-band \(\mathbf{k} \cdot \mathbf{p}\) parameters, Kane parameter

\(E_P\) and temperature dependent band gap \(E_g\). :value: yes or no :default: no


kp_parameters{ approximate_kappa }#

Calling sequence

quantum{ region{ kp_8band{ kp_parameters{ approximate_kappa } } } }

Properties

—

Functionality

By default the \(\kappa\) for zinc blende crystal structure is taken from the database or input file. If this is enabled then the solver is forced to approximate kappa through others 8-band \(\mathbf{k} \cdot \mathbf{p}\) parameters, even though kappa is given in database or input file.

value:

yes or no

default:

no


kp_parameters{ evaluate_S }#

Calling sequence

quantum{ region{ kp_8band{ kp_parameters{ evaluate_S } } } }

Properties

—

Functionality

By default \(S\) (\(S_1\), \(S_2\) for wurtzite) \(\mathbf{k} \cdot \mathbf{p}\) parameter(s) is (are) taken from database or input file. If enabled it evaluates \(S\) (\(S_1\), \(S_2\) for wurtzite) \(\mathbf{k} \cdot \mathbf{p}\) parameter(s) from effective mass \(m_e\) (\(m_{e,par}\), \(m_{e,perp}\) for wurtzite), Kane parameter(s), spin-orbit coupling(s) and temperature dependent band gap.

value:

yes or no

default:

no


kp_parameters{ rescale_S_to }#

Calling sequence

quantum{ region{ kp_8band{ kp_parameters{ rescale_S_to } } } }

Properties

—

Functionality

set \(S\) for zinc blende crystal structure to specified value and rescale \(E_P\), \(L'\), \(N^{+}\) in order to preserve electron’s effective mass.

set \(S_1\), \(S_2\) for wurtzite crystal structure to specified values respectively and rescale \(E_{P1}\), \(E_{P2}\), \(L_{1}'\), \(L_{2}'\), \(N^+_1\), \(N^+_2\) in order to preserve electron’s effective masses.

value:

float for zinc blende crystal structure

2D float vector for wurtzite crystal structure


k_integration_disabled{ }#

Added in version 3.0.0.

Calling sequence

quantum{ region{ kp_8band{ k_integration_disabled{ } } } }

Properties

—

Dependencies

Functionality

Disables numerical calculation of density of states, hence the density of states for the relevant region is set to zero. Together with the default setting no_density to no, it the provides self-consistent routine with the region having no carriers.

Hint

Use it when no self-consostent routines are used or if the relevant quantum region is not meant to be used for such routines, e.g., when another quatum region is already providing the density of states.


k_integration{ }#

Changed in version 3.0.0.

Calling sequence

quantum{ region{ kp_8band{ k_integration{ } } } }

Properties

—

Dependencies

Functionality

Triggers numerical calculation of density of states based on solutions of the Schrödinger equation and provides it to self-consistent routine with the default setting no_density to no. Organizes options for integration over \(\mathbf{k_{||}}\) space for \(\mathbf{k} \cdot \mathbf{p}\) density calculations.


k_integration{ relative_size }#

Calling sequence

quantum{ region{ kp_8band{ k_integration{ relative_size } } } }

Properties

—

Functionality

—


k_integration{ symmetry }#

Calling sequence

quantum{ region{ kp_8band{ k_integration{ symmetry } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: choice

  • values: none; C2; C4; C6

  • default: none

Functionality

If symmetry = none then the solver does not reduce number of \(\mathbf{k_{||}}\) points. If symmetry = C2 then the solver assumes \(C_2\) symmetry of Brillouin zone to reduce number of \(\mathbf{k_{||}}\) points. Analogously for the other choices.


k_integration{ num_points }#

Calling sequence

quantum{ region{ kp_8band{ k_integration{ num_points } } } }

Properties

—

Functionality

—


k_integration{ num_subpoints }#

Calling sequence

quantum{ region{ kp_8band{ k_integration{ num_subpoints } } } }

Properties

—

Functionality

—


k_integration{ force_k0_subspace }#

Calling sequence

quantum{ region{ kp_8band{ k_integration{ force_k0_subspace } } } }

Properties

—

Functionality

—


interface{ }#

Calling sequence

quantum{ region{ kp_8band{ interface{ } } } }

Properties

—

Functionality

Note

Better description will be available soon.

Optional group to add interface effects to the Hamiltonian [LivnehPRB2012], [LivnehPRB2014]. It can be used multiple times.


interface{ position }#

Calling sequence

quantum{ region{ kp_8band{ interface{ position } } } }

Properties

—

Functionality

A real number defining position of the interface.


interface{ array_x{ } }#

Calling sequence

quantum{ region{ kp_8band{ interface{ array_x{ } } } } }

Properties

—

Functionality

The group that copies the interface object along the simulation axis.


interface{ array_x{ shift } }#

Calling sequence

quantum{ region{ kp_8band{ interface{ array_x{ shift } } } } }

Properties

—

Functionality

value:

a real number


interface{ array_x{ min } }#

Calling sequence

quantum{ region{ kp_8band{ interface{ array_x{ min } } } } }

Properties

—

Functionality

value:

{..., -3, -2, -1 , 0}

default:

0


interface{ array_x{ max } }#

Calling sequence

quantum{ region{ kp_8band{ interface{ array_x{ max } } } } }

Properties

—

Functionality

value:

{0, 1, 2, 3, ...}


interface{ kp_parameters{ } }#

Calling sequence

quantum{ region{ kp_8band{ interface{ kp_parameters{ } } } } }

Properties

—

Functionality

The group storing all parameters for the interface Hamiltonian.


interface{ kp_parameters{ D_s, D_x, D_z } }#

Calling sequence

quantum{ region{ kp_8band{ interface{ kp_parameters{ D_s } } } } }
quantum{ region{ kp_8band{ interface{ kp_parameters{ D_x } } } } }
quantum{ region{ kp_8band{ interface{ kp_parameters{ D_z } } } } }

Properties

—

Functionality

a real number


interface{ kp_parameters{ alpha, beta } }#

Calling sequence

quantum{ region{ kp_8band{ interface{ kp_parameters{ alpha } } } } }
quantum{ region{ kp_8band{ interface{ kp_parameters{ beta } } } } }

Properties

—

Functionality

a real number


interface{ kp_parameters{ reverse } }#

Calling sequence

quantum{ region{ kp_8band{ interface{ kp_parameters{ reverse } } } } }

Properties

—

Functionality

— choice (yes/no)


dispersion{ }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ } } } }

Properties

—

Functionality

These groups provide keywords to define a path for computation of \(\mathbf{k_{||}}\) and \(\mathbf{k_{\tiny{superlattice}}}\) (if applicable) dispersions. The energy dispersion E(k) along the specified paths and for the specified k space resolutions are completely independent from the k space resolution that was used within the self-consistent cycle where the k.p density has been calculated. The latter is specified in k_integration{ }.


dispersion{ full{ } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ full{ } } } } }

Properties

—

Functionality

Calculates dispersion in 1D/2D/3D k-space depending on simulation dimensionality and pereodic boundary conditions.


dispersion{ full{ name } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ full{ name } } } } }

Properties

—

Functionality

value:

string

Is a name of the dispersion which also defines the name of the output file.


dispersion{ full{ kxgrid{ }, … } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ full{ kxgrid{ } } } } } }
quantum{ region{ kp_8band{ dispersion{ full{ kygrid{ } } } } } }
quantum{ region{ kp_8band{ dispersion{ full{ kzgrid{ } } } } } }

Properties

—

Functionality

Specifies a grid{...} in k-space for a 1D/2D/3D plot of the energy dispersion E(kx, ky, kz). Allowed only, if simulation is periodic along x-direction and current quantum region extends over the whole x-domain. The options are same as grid{ }


dispersion{ full{ kxgrid{ line{ } }, … } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ full{ kxgrid{ line{ } } } } } } }
quantum{ region{ kp_8band{ dispersion{ full{ kygrid{ line{ } } } } } } }
quantum{ region{ kp_8band{ dispersion{ full{ kzgrid{ line{ } } } } } } }

Properties

—

Functionality

—


dispersion{ full{ kxgrid{ line{ pos } }, … } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ full{ kxgrid{ line{ pos } } } } } } }
quantum{ region{ kp_8band{ dispersion{ full{ kygrid{ line{ pos } } } } } } }
quantum{ region{ kp_8band{ dispersion{ full{ kzgrid{ line{ pos } } } } } } }

Properties

—

Functionality

—


dispersion{ full{ kxgrid{ line{ spacing } }, … } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ full{ kxgrid{ line{ spacing } } } } } } }
quantum{ region{ kp_8band{ dispersion{ full{ kygrid{ line{ spacing } } } } } } }
quantum{ region{ kp_8band{ dispersion{ full{ kzgrid{ line{ spacing } } } } } } }

Properties

—

Functionality

—


dispersion{ path{ } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ path{ } } } } }

Properties

—

Functionality

Calculates dispersion along custom path in k-space. Multiple instances are allowed.


dispersion{ path{ name } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ path{ name } } } } }

Properties

—

Functionality

Is a name of the dispersions which also defines the names of the output files.

value:

string


dispersion{ path{ point{ } } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ path{ point{ } } } } } }

Properties

—

Functionality

Specifies points in the path through k-space. At least two k points have to be defined. Line between two such points is called segment.


dispersion{ path{ point{ k } } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ path{ point{ k } } } } } }

Properties

—

Functionality

value:

3D float vector

Is a k-point represented by vector \([k_x, k_y, k_z]\). The units are \(nm^{-1}\).

For 1D simulation the \(\mathbf{k_{||}}\) space is a \(k_y-k_z\) plane so \(k_y\), \(k_z\) can be freely choosed. \(k_x\) can only be different from zero, if a periodic boundary condition along the x-direction is defined and the quantum region extends over the whole x-domain.

for 2D simulation the \(\mathbf{k_{||}}\) space is a \(k_z\) axis so \(k_z\) can be freely choosed. \(kx\) can only be different from zero if a periodic boundary condition along the x-direction is defined and the quantum region extends over the whole x-domain. \(k_y\) can only be different from zero if a periodic boundary condition along the y-direction is defined and the quantum region extends over the whole y-domain.

for 3D simulation the \(\mathbf{k_{||}}\) space is empty. \(k_x\) can only be different from zero if a periodic boundary condition along the x-direction is defined and the quantum region extends over the whole x-domain. \(k_y\) can only be different from zero if a periodic boundary condition along the y-direction is defined and the quantum region extends over the whole y-domain. \(k_z\) can only be different from zero if a periodic boundary condition along the z-direction is defined and the quantum region extends over the whole z-domain.


dispersion{ path{ spacing } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ path{ spacing } } } } }

Properties

—

Functionality

value:

float

Specifies approximate spacing for intermediate points in the path segments in \(nm^{-1}\). Excludes num_points.


dispersion{ path{ num_points } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ path{ num_points } } } } }

Properties

—

Functionality

value:

integer > 1

Specifies number of points (intermediate + two corner points) for each single path segment. Excludes spacing.


dispersion{ lines{ } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ lines{ } } } } }

Properties

—

Functionality

Calculates dispersions along some predefined paths of high symmetry in k-space, e.g. [100], [110], [111] and their equivalents (in total maximally 13).


dispersion{ lines{ name } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ lines{ name } } } } }

Properties

—

Functionality

value:

string

Is a name of the dispersions which also defines the names of the output files.


dispersion{ lines{ k_max } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ lines{ k_max } } } } }

Properties

—

Functionality

value:

float

Specifies a maximum absolute value (radius) for the k-vector in \(nm^{-1}\).


dispersion{ lines{ spacing } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ lines{ spacing } } } } }

Properties

—

Functionality

value:

float

Specifies approximate spacing for intermediate points in the path segments in \(nm^{-1}\).


dispersion{ superlattice{ } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ superlattice{ } } } } }

Properties

—

Functionality

Is a convenience group to calculate superlattice dispersion \(E(k_{SL})\) along periodic directions. The intervals are set automatically to \([-\pi/L_i, \pi/L_i]\), where \(L_i\) is the simulation domain range along periodic directions with \(i = x,y,z\).


dispersion{ superlattice{ name } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ superlattice{ name } } } } }

Properties

—

Functionality

value:

string

Is a name of the dispersion which also defines the name of the output file.


dispersion{ superlattice{ num_points } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ superlattice{ num_points } } } } }

Properties

—

Functionality

Is a convenience keyword to specifies number of points along all appropriate directions in k space.

value:

any integer > 1


dispersion{ superlattice{ num_points_x, … } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ superlattice{ num_points_x } } } } }
quantum{ region{ kp_8band{ dispersion{ superlattice{ num_points_y } } } } }
quantum{ region{ kp_8band{ dispersion{ superlattice{ num_points_z } } } } }

Properties

—

Functionality

value:

any integer > 1

Specifies number of points along x direction in k space where dispersion is calculated. The simulation must be periodic along the x direction in direct space. Specifies number of points along y direction in k space where dispersion is calculated. The simulation must be periodic along the y direction in direct space. Specifies number of points along z direction in k space where dispersion is calculated. The simulation must be periodic along the z direction in direct space.


dispersion{ output_k_vectors{ } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ output_k_vectors{ } } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • items: maximum 1

Functionality

—


dispersion{ output_dispersions{ } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ output_dispersions{ } } } } }

Properties

—

Functionality

Outputs all defined dispersions.


dispersion{ output_dispersions{ max_num } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ output_dispersions{ max_num } } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: integer

  • values: \(1 \leq z \leq 9999\)

  • default: not defined

Functionality

It is a maximum number of bands to print out.


dispersion{ output_masses{ } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ output_masses{ } } } } }

Properties

—

Functionality

Outputs effective masses \(m^*\) calculated from the dispersions, expressed in masses of a free electron \(m_0\), following the formula:

\[m^* = \left(\frac{m_0}{\hbar^2}\cdot\frac{\partial^2}{\partial k^2} E\left(k\right)\right)^{-1},\]

where \(k\) is a “distance” along the path onto which the related band structure is computed.


dispersion{ output_masses{ max_num } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ output_masses{ max_num } } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: integer

  • values: \(1 \leq z \leq 9999\)

  • default: not defined

Functionality

It is a maximum number of bands to print out.


dispersion{ output_inverse_masses{ } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ output_inverse_masses{ } } } } }

Properties

—

Functionality

Outputs inverse effective masses \(1/m^*\) calculated from the dispersions, expressed in inverse masses of a free electron \(1/m_0\), following the formula:

\[\frac{1}{m^*} = \frac{m_0}{\hbar^2}\cdot\frac{\partial^2}{\partial k^2} E\left(k\right),\]

where \(k\) is a “distance” along the path onto which the related band structure is computed.


dispersion{ output_inverse_masses{ max_num } }#

Calling sequence

quantum{ region{ kp_8band{ dispersion{ output_inverse_masses{ max_num } } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: integer

  • values: \(1 \leq z \leq 9999\)

  • default: not defined

Functionality

It is a maximum number of bands to print out.


classify_none{ }#

Calling sequence

quantum{ region{ kp_8band{ classify_none{ } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • items: maximum 1

Functionality

When defined, the entire bands are classified as conduction or valence bands based on the indices of the states found at the \(\Gamma\) point. The Hamiltonian has \(8\times N\) eigenvalues ordered ascendingly, where \(N\) is the number of grid points included in the discretized Schrödinger equation. When LAPACK is used, then all eigenvalues are easily identified by the indices. The \((6\times N)\)-th state is consitered to be the highest hole state, while the \((6\times N-1)\)-th state to be the lowest electron state.

Note

It is a stable method of classifying states when using LAPACK solver. However, it may lead to misclassification in some cases when using ARPACK for devices without a global band gap.


classify_by_energy{ }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_energy{ } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • items: maximum 1

Functionality

When defined, the entire bands are classified as conduction or valence bands based on the eigenenergies of the states found at the \(\Gamma\) point \(E_\text{n}\left(\WaveK=\mathbf{0}\right)\) following procedures controlled by the attribute classify_by_energy{ method }.

In all available cases, this classification is based on four numbers. The first pair consists the global minimum of the conduction band energy edge \(E_\text{c,min}\) and the global maximum of the valence band edge \(E_\text{v,max}\), both considered in the region where the related Schrödinger equation is solved. The second pair comprises two shift parameters \(\delta E_\text{e}\) for electrons and \(\delta E_\text{h}\) for holes which can be set by classify_by_energy{ shift_electrons } and classify_by_energy{ shift_holes }, respectively.


classify_by_energy{ method }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_energy{ method } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: integer

  • values: \(0 \leq z \leq 2\)

  • default: \(z=1\)

Functionality

Selects formulas used to evaluate the cutoff energies \(E_\text{e,cut}\) and \(E_\text{e,cut}\).

If method = 0 then

\[\begin{split}\begin{aligned} E_\text{e,cut} &= min\left( E_\text{c,min}, E_\text{v,max} \right) + \delta E_\text{e}, \\ E_\text{h,cut} &= max\left( E_\text{c,min}, E_\text{v,max} \right) + \delta E_\text{h}. \\ \end{aligned}\end{split}\]

If method = 1 then

\[\begin{split}\begin{aligned} E_\text{e,cut} &= 0.5\, \left( E_\text{c,min} + E_\text{v,max} \right) + \delta E_\text{e}, \\ E_\text{h,cut} &= 0.5\, \left( E_\text{c,min} + E_\text{v,max} \right) + \delta E_\text{h}. \\ \end{aligned}\end{split}\]

If method = 2 then

\[\begin{split}\begin{aligned} E_\text{e,cut} &= max\left( E_\text{c,min}, E_\text{v,max} \right) + \delta E_\text{e}, \\ E_\text{h,cut} &= min\left( E_\text{c,min}, E_\text{v,max} \right) + \delta E_\text{h}. \\ \end{aligned}\end{split}\]

Generally, all the bands with energies \(E_\text{n}\left(\WaveK=\mathbf{0}\right) \geq E_\text{e,cut}\) are considered as conduction bands that can be occupied with electrons and all the bands with energies \(E_\text{n}\left(\WaveK=\mathbf{0}\right) \leq E_\text{h,cut}\) are considered as valence bands that can be occupied with holes. Exceptionally for the method = 1, condition for the valence bands is given by \(E_\text{n}\left(\WaveK=\mathbf{0}\right) < E_\text{h,cut}\).

Each of the methods promotes qualitatively different classification approaches which is easiest to see having \(\delta E_\text{e} = \delta E_\text{h} = 0\). The method = 0 allows for \(E_\text{e,cut} < E_\text{h,cut}\), so certain bands can be classified as both electrons and holes. Such bands can then be occupied by electrons and holes simultaneously, according to proper quasi-Fermi levels. The method = 1 allows for \(E_\text{e,cut} - E_\text{h,cut} = 0\), so all states are always classified as either electrons or holes. The method = 2 allows for \(E_\text{e,cut} - E_\text{h,cut} > 0\) forming a gap that can contain states not being classified neither as electrons nor as holes. Such bands are then excluded from electrostatic calculations.

Note

Exactly the same classification can always be obtained regardless of the value assigned to the method by properly manipulating with \(\delta E_\text{e}\) and \(\delta E_\text{h}\).


classify_by_energy{ shift_electrons }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_energy{ shift_electrons } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: real number

  • values: no constraints

  • default: \(r=0.0\)

  • unit: \(\mathrm{eV}\)

Functionality

Sets the value of \(\delta E_\text{e}\).


classify_by_energy{ shift_holes }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_energy{ shift_holes } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: real number

  • values: no constraints

  • default: \(r=0.0\)

  • unit: \(\mathrm{eV}\)

Functionality

Sets the value of \(\delta E_\text{h}\).


classify_by_energy{ cutoff }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_energy{ cutoff } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: integer

  • values: \(0 \leq z \leq 4\)

  • default: \(z=0\)

Functionality

This attribute defines a special energy cutoffs for electrons \(E_\text{e,k-cut}\) and holes \(E_\text{h,k-cut}\) with a purpose of discarding unwanted states form calculations of charge densities. Only states classified as electrons with energies \(E > E_\text{e,k-cut}\) and states classified as holes with energies \(E < E_\text{h,k-cut}\) contribute to the charge densities. This selection is defined at each position grid \(\Pos\) separately.

If cutoff = 0, then there is no limitation.

If cutoff = 1, then

\[\begin{split}\begin{aligned} E_\text{e,k-cut}\left(\Pos\right) &= min\left( E_\text{c,min}, E_\text{v}\left(\Pos\right) \right), \\ E_\text{h,k-cut}\left(\Pos\right) &= max\left( E_\text{c}\left(\Pos\right), E_\text{v,max} \right). \\ \end{aligned}\end{split}\]

If cutoff = 2, then

\[\begin{split}\begin{aligned} E_\text{e,k-cut}\left(\Pos\right) &= min\left( E_\text{c}\left(\Pos\right), E_\text{v}\left(\Pos\right) \right), \\ E_\text{h,k-cut}\left(\Pos\right) &= max\left( E_\text{c}\left(\Pos\right), E_\text{v}\left(\Pos\right) \right). \\ \end{aligned}\end{split}\]

If cutoff = 3, then

\[\begin{split}\begin{aligned} E_\text{e,k-cut}\left(\Pos\right) &= 0.5\,\left( E_\text{c}\left(\Pos\right) + E_\text{v}\left(\Pos\right) \right), \\ E_\text{h,k-cut}\left(\Pos\right) &= 0.5\,\left( E_\text{c}\left(\Pos\right) + E_\text{v}\left(\Pos\right) \right). \\ \end{aligned}\end{split}\]

If cutoff = 4, then

\[\begin{split}\begin{aligned} E_\text{e,k-cut}\left(\Pos\right) &= E_\text{c}\left(\Pos\right), \\ E_\text{h,k-cut}\left(\Pos\right) &= E_\text{v}\left(\Pos\right). \\ \end{aligned}\end{split}\]

As one can see, the higher value of the cutoff the more restrictive conditions are applied.


classify_by_all_energies{ }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_all_energies{ } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • items: maximum 1

Functionality

Classifies states in analogously to classify_by_energy{ }, however, the classification is performed separately for each wave vector. Hence, a given band can be partially classified as a conduction band and partially as a valence band.

Attention

The values of \(E_\text{c,min}\) and \(E_\text{v,max}\) keeps corresponding to the band edges, hence, the energies at the \(\Gamma\) point.


classify_by_all_energies{ method }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_all_energies{ method } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: integer

  • values: \(0 \leq z \leq 2\)

  • default: \(z=1\)

Functionality

Selects formulas used to evaluate the cutoff energies \(E_\text{e,cut}\) and \(E_\text{e,cut}\) as described for classify_by_energy{ method }.


classify_by_all_energies{ shift_electrons }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_all_energies{ shift_electrons } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: real number

  • values: no constraints

  • default: \(r=0.0\)

  • unit: \(\mathrm{eV}\)

Functionality

Sets the value of \(\delta E_\text{e}\).


classify_by_all_energies{ shift_holes }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_all_energies{ shift_holes } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: real number

  • values: no constraints

  • default: \(r=0.0\)

  • unit: \(\mathrm{eV}\)

Functionality

Sets the value of \(\delta E_\text{h}\).


classify_by_all_energies{ permissive }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_all_energies{ permissive } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: integer

  • values: \(0 \leq z \leq 2\)

  • default: \(z=0\)

Functionality

Controlls charge integration over k-space in situations where neighbouring points of the same band are classified as different carrier species. Integration of charge densities in the k-space for DOS is done for each band separately within k-squares or k-lines with solutions calculated or interpolated at their corners. This requires handling situations where some corners of such single volume elements are classified as electrons while other as holes. Three approaches are available for this case.

When permissive = 0, then integration over such elements is skipped. They to not contribute to any densities.

When permissive = 1, then integration of the electron density assumes zero density distributions on the k-nodes classified as holes, and vice versa, integration of the hole density distributions assumes zero density on the k-nodes classified as electrons.

When permissive = 2, then if at least one node of the integrated element is classified as the type of carriers related to the charge density of interest, electrons or holes, then all remaining nodes are interpreted as classified likewise, electrons or holes, respectively.

Note

This setting is irrelevant if valence, and conduction bands of the entire device do not cross.

Hint

The finer the k-grid the smaller the importance of this setting is, however, at a price of integration time.


classify_by_all_energies{ cutoff }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_all_energies{ cutoff } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: integer

  • values: \(0 \leq z \leq 4\)

  • default: \(z=0\)

Functionality

Functionality is the same as of classify_by_energy{ cutoff }.


classify_by_spinor{ }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_spinor{ } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • items: maximum 1

Functionality

When defined, the entire bands are classified as conduction or valence bands based on the spinor composition of the states found at the \(\Gamma\) point. It is done by evaluating a sum of integrals of component envelopes corresponding to the periodic factors with spherical symmetry, which are typically associated with conduction bands

\[I_\text{S} = \braket{\EnvelopeFunction_{S\uparrow}}{\EnvelopeFunction_{S\uparrow}}+\braket{\EnvelopeFunction_{S\downarrow}}{\EnvelopeFunction_{S\downarrow}}\]

and comparing it with the threshold values for electrons \(I_\text{e,th}\) and holes \(I_\text{h,th}\) defined by classify_by_spinor{ threshold_electron } and classify_by_spinor{ threshold_hole }, respectively.

If one gets \(I_\text{S} \geq I_\text{e,th}\), then the corresponding band is considered as a conduction band, and can be populated with electrons. On the other hand, when \(I_\text{S} < 1-I_\text{e,th}\), then the corresponding band is considered as a valence band, and can be populated with holes.

Note

One can exclude states from being classified or classify then as bot electrons and holes by manipulating with the threshold values \(I_\text{e,th}\) and holes \(I_\text{h,th}\), to achieve similar effects as by using classify_by_energy{ }.

Attention

This is the default state classification method with \(I_\text{e,th}=I_\text{h,th}=0.5\).


classify_by_spinor{ threshold_electron }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_spinor{ threshold_electron } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: real number

  • values: \(10^{-2} \leq r \leq 0.99\)

  • default: \(r=0.5\)

  • unit: \(\mathrm{-}\)

Functionality

Sets the value of \(I_\text{e,th}\).


classify_by_spinor{ threshold_hole }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_spinor{ threshold_hole } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: real number

  • values: \(10^{-2} \leq r \leq 0.99\)

  • default: \(r=0.5\)

  • unit: \(\mathrm{-}\)

Functionality

Sets the value of \(I_\text{h,th}\).


classify_by_spinor{ cutoff }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_spinor{ cutoff } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: integer

  • values: \(0 \leq z \leq 4\)

  • default: \(z=0\)

Functionality

Functionality is the same as of classify_by_energy{ cutoff }.


classify_by_all_spinors{ }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_all_spinors{ } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • items: maximum 1

Functionality

Classifies states in the same way as classify_by_spinor{ }, but for each wave vector separately. Hence, a given band can be partially classified as a conduction band and partially as a valence band.


classify_by_all_spinors{ threshold_electron }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_all_spinors{ threshold_electron } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: real number

  • values: \(10^{-2} \leq r \leq 0.99\)

  • default: \(r=0.5\)

  • unit: \(\mathrm{-}\)

Functionality

Sets the value of \(I_\text{e,th}\).


classify_by_all_spinors{ threshold_hole }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_all_spinors{ threshold_hole } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: real number

  • values: \(10^{-2} \leq r \leq 0.99\)

  • default: \(r=0.5\)

  • unit: \(\mathrm{-}\)

Functionality

Sets the value of \(I_\text{h,th}\).


classify_by_all_spinors{ permissive }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_all_spinors{ permissive } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: integer

  • values: \(0 \leq z \leq 2\)

  • default: \(z=0\)

Functionality

Functionality is the same as of classify_by_all_energies{ permissive }.


classify_by_all_spinors{ cutoff }#

Calling sequence

quantum{ region{ kp_8band{ classify_by_all_spinors{ cutoff } } } }

Properties

  • usage: \(\mathrm{\textcolor{ForestGreen}{optional}}\)

  • type: integer

  • values: \(0 \leq z \leq 4\)

  • default: \(z=0\)

Functionality

Functionality is the same as of classify_by_energy{ cutoff }.