kp_8band{ }

Calling sequence

quantum{ region{ kp_8band{ } } }

Properties

  • usage: optional

  • items: maximum 1

Functionality

Triggers solver of 8-band kp Schrödinger equation for the Gamma conduction band and the heavy, light and split-off hole valence bands.

Nested keywords


accuracy

Calling sequence

quantum{ region{ kp_8band{ accuracy } } }

Properties

Functionality

value:

any float > 0

default:

1e-7

accuracy of eigenvalue


iterations

Calling sequence

quantum{ region{ kp_8band{ iterations } } }

Properties

Functionality

value:

any integer > 1

default:

500

number of iterations for eigenvalue solver


num_electrons

Calling sequence

quantum{ region{ kp_8band{ num_electrons } } }

Properties

Functionality

value:

integer >= 0

default:

0

number of electron eigenvalues


num_holes

Calling sequence

quantum{ region{ kp_8band{ num_holes } } }

Properties

Functionality

value:

integer >= 0

default:

0

number of hole eigenvalues


shift

Calling sequence

quantum{ region{ kp_8band{ shift } } }

Properties

Functionality

value:

float >=0

default:

0.1 # (eV)

energy shift relative to band edges in arpack_inv.


abs_shift

Calling sequence

quantum{ region{ kp_8band{ abs_shift } } }

Properties

Functionality

value:

float >=0

default:

0.0 # (eV)

energy shift on an absolute energy scale in arpack_inv.


shift_window

Calling sequence

quantum{ region{ kp_8band{ shift_window } } }

Properties

Functionality

value:

integer

default:

0

When LAPACK is used, shifts the window of computed states by the specified number of states up (for positive integers) or down (for negative integers). Adjust when the computed states are not centered around the band gap.


spurious_handling

Calling sequence

quantum{ region{ kp_8band{ spurious_handling } } }

Properties

Functionality

value:

six dimensional double vector

default:

[0.0, 1.0, -1.0, 1.0, 0.0, 0.0]

  • first component: If value > 0, forward-/backward differences are used for the first derivative discretization of the P material parameter (Kane parameter) in the 8-band k.p Hamiltonian. Default is 0 (= FALSE), i.e. centered differences are used instead. This parameter might affect spurious solutions of the wave functions. See eq. (1.50) and eq. (1.51) of PhD thesis T. Andlauer.

  • second component: far-band contribution to electrons = value - 1.0 (conduction band g factor, should be a material parameter but it is not) (default is: 1.0) S = 1 + farband contribution, by default farband contribution = 0. This corresponds to setting S=1. It can be useful to set this value to 0.0 (farband contribution = -1). Then it corresponds to setting S=0. Otherwise, the default is rescaling to that S=1.

  • third component: correction for electron g factor [eV] (default is: -1.0)

  • fourth component: If value > 0, rescale everywhere (default is: 1 = TRUE)

  • fifth component: If value > 0, upwinding is TRUE (default is: 0 = FALSE) ==> It seems that upwinding is not used at all.

  • sixth component: If value > 0, avoid spurious solutions. (default is: 0 = FALSE)

To avoid spurious solutions, an example configuration could be given by spurious_handling = [0.0, 1.0, 0.0, 1.0, 0.0, 1.0].


lapack{ }

Calling sequence

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

Properties

Functionality

Triggers use of LAPACK solver which is for dense matrix problems (for 1D and small 2D systems only)


arpack_inv{ }

Calling sequence

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

Properties

Functionality

Triggers use of ARPACK shift invert eigensolver. It should be faster for large matrices (N > 1000) where only a few eigenvalues are sought (~5-30).


davidson{ }

Calling sequence

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

Properties

Functionality

Triggers Davidson solver for 8-band kp. It offers both better speed as well as increased stability compared to ARPACK inverse in 2D and 3D.

Warning

The implementation of teh 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 eigenvalues (e.g. Pauli or k.p quantum mechanics 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 ARPAPCK inverse or, in 1D or smaller 2D systems, to LAPACK may be considered.


linear_solver{ }

Calling sequence

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

Properties

Functionality

Provides parameters for linear equation solver in arpack_inv shift invert preconditioner


linear_solver{ iterations }

Calling sequence

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

Properties

Functionality

value:

integer > 1

default:

10000

number of iterations in arpack_inv. Occasionally, using even larger values than 10000 may be necessary to avoid diagonalization failure.


linear_solver{ abs_accuracy }

Calling sequence

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

Properties

Functionality

value:

float between 0.0 and 0.01

default:

1e-8

absolute accuracy in arpack_inv.


linear_solver{ rel_accuracy }

Calling sequence

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

Properties

Functionality

value:

float between 0.0 and 0.01

default:

1e-8

relative accuracy in arpack_inv.


linear_solver{ use_cscg }

Calling sequence

quantum{ region{ kp_8band{ linear_solver{ use_cscg } } } }

Properties

Functionality

value:

yes or no

default:

no

When arpack_inv is used, forces the slower but occasionally more robust CSCG (Composite Step Conjugate Gradient ) linear solver to be used rather than the cg (Conjugate Gradient) linear solver. May occasionally prevent a diagonalization failure.


linear_solver{ force_diagonal_preconditioner }

Calling sequence

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

Properties

Functionality

value:

yes or no

default:

no

When arpack_inv is used, forces the use of a slower but more robust diagonal preconditioner. As result, total runtime and stability of the arpack_inv solver may actually become much better and diagonalization failures may be avoided.


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 (γ1, γ2, γ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 kp parameters are taken from database or input file. If enabled then it evaluates the 8-band kp parameters from 6-band kp parameters, Kane parameter

EP and temperature dependent band gap Eg. :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 κ 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 kp 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 (S1, S2 for wurtzite) kp parameter(s) is (are) taken from database or input file. If enabled it evaluates S (S1, S2 for wurtzite) kp parameter(s) from effective mass me (me,par, me,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 EP, L, N+ in order to preserve electron’s effective mass.

set S1, S2 for wurtzite crystal structure to specified values respectively and rescale EP1, EP2, L1, L2, N1+, N2+ in order to preserve electron’s effective masses.

value:

float for zinc blende crystal structure

2D float vector for wurtzite crystal structure


k_integration{ }

Calling sequence

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

Properties

Functionality

Provides options for integration over k|| space for kp density calculations (for 1D and 2D only).


k_integration{ relative_size }

Calling sequence

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

Properties

Functionality


k_integration{ max_symmetry }

Calling sequence

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

Properties

Functionality


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.

Attention

The feature is already available, yet we are still testing it.

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)


classify_none{ }

Calling sequence

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

Properties

Functionality


classify_by_energy{ }

Calling sequence

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

Properties

Functionality


classify_by_energy{ method }

Calling sequence

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

Properties

  • usage: optional

  • type: integer

  • values: 0z2

Functionality


classify_by_energy{ shift_electrons }

Calling sequence

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

Properties

  • usage: optional

  • type: real number

  • values: no constraints

  • unit: eV

Functionality


classify_by_energy{ shift_holes }

Calling sequence

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

Properties

  • usage: optional

  • type: real number

  • values: no constraints

  • unit: eV

Functionality


classify_by_energy{ cutoff }

Calling sequence

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

Properties

  • usage: optional

  • type: integer

  • values: 0z4

Functionality


classify_by_all_energies{ }

Calling sequence

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

Properties

Functionality


classify_by_all_energies{ method }

Calling sequence

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

Properties

  • usage: optional

  • type: integer

  • values: 0z2

Functionality


classify_by_all_energies{ shift_electrons }

Calling sequence

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

Properties

  • usage: optional

  • type: real number

  • values: no constraints

  • unit: eV

Functionality


classify_by_all_energies{ shift_holes }

Calling sequence

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

Properties

  • usage: optional

  • type: real number

  • values: no constraints

  • unit: eV

Functionality


classify_by_all_energies{ permissive }

Calling sequence

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

Properties

  • usage: optional

  • type: integer

  • values: 0z2

Functionality


classify_by_all_energies{ cutoff }

Calling sequence

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

Properties

  • usage: optional

  • type: integer

  • values: 0z4

Functionality


classify_by_spinor{ }

Calling sequence

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

Properties

Functionality


classify_by_spinor{ threshold_electron }

Calling sequence

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

Properties

  • usage: optional

  • type: real number

  • values: 102r0.99

  • unit:

Functionality


classify_by_spinor{ threshold_hole }

Calling sequence

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

Properties

  • usage: optional

  • type: real number

  • values: 102r0.99

  • unit:

Functionality


classify_by_spinor{ cutoff }

Calling sequence

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

Properties

  • usage: optional

  • type: integer

  • values: 0z4

Functionality


classify_by_all_spinors{ }

Calling sequence

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

Properties

Functionality


classify_by_all_spinors{ threshold_electron }

Calling sequence

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

Properties

  • usage: optional

  • type: real number

  • values: 102r0.99

  • unit:

Functionality


classify_by_all_spinors{ threshold_hole }

Calling sequence

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

Properties

  • usage: optional

  • type: real number

  • values: 102r0.99

  • unit:

Functionality


classify_by_all_spinors{ permissive }

Calling sequence

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

Properties

  • usage: optional

  • type: integer

  • values: 0z2

Functionality


classify_by_all_spinors{ cutoff }

Calling sequence

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

Properties

  • usage: optional

  • type: integer

  • values: 0z4

Functionality


dispersion{ }

Calling sequence

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

Properties

Functionality

These groups provide keywords to define a path for computation of k|| and ksuperlattice (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{ 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 nm1.


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 nm1.


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 [kx,ky,kz]. The units are nm1.

For 1D simulation the k|| space is a kykz plane so ky, kz 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.

for 2D simulation the k|| space is a kz axis so kz 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. ky 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 k|| space is empty. 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. ky 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. kz 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 nm1. 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{ 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{ superlattice{ } }

Calling sequence

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

Properties

Functionality

Is a convenience group to calculate superlattice dispersion E(kSL) along periodic directions. The intervals are set automatically to [π/Li,π/Li], where Li 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_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

Functionality

Is a number of bands to print out

value:

any integer between 1 and 9999


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 m0, following the formula:

1m=m022k2E(k),

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

Functionality

Outputs effective masses calculated from the dispersions.

value:

any integer between 1 and 9999


Last update: 08/04/2025