Multi-band models in quantum{ region{ } }¶
quantum{ region{ kp_6band{ } } }¶
solves 6-band \(\mathbf{k} \cdot \mathbf{p}\) Schrödinger equation for the ** heavy, light and split-off hole** valence band. The options are the same as Gamma{} with some additional options, which are
kp_parameters{}¶
advanced manipulation of \(\mathbf{k} \cdot \mathbf{p}\) parameters from the database.
Attention
The groups
use_Luttinger_parameters
andapproximate_kappa
are available only for simulations with zincblende crystal symmetry.
- use_Luttinger_parameters
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
orno
- default:
no
- approximate_kappa
By default the \(\kappa\) for zincblende crystal structure is taken from the database or input file. If this is enabled then the solver is forced to approximate kappa through others 6-band \(\mathbf{k} \cdot \mathbf{p}\) parameters, even though kappa is given in database or input file.
- value:
yes
orno
- default:
no
lapack{}¶
LAPACK eigensolver: solves dense matrix problem (for 1D and small 2D systems only)
arpack{}¶
ARPACK eigensolver (default) ARPACK should be faster for large matrices (N > 1000) where only a few eigenvalues are sought (~5-30).
k_integration{}¶
Provides options for integration over \(\mathbf{k_{||}}\) space for \(\mathbf{k} \cdot \mathbf{p}\) density calculations (for 1D and 2D only). By default the quantum mechanical charge density is calculated (
no_density = no
). Therefore,k_integration{}
is required. If you do not need a quantum mechanical density, e.g. because you are not interested in a self-consistent simulation, the calculation is much faster if you use (no_density = yes
). Then you can omitk_integration{}
and only the eigenstates for \(\mathbf{k_{||}} = (k_y,k_z) = (0,0) = 0\) are calculated.
- relative_size
Range of \(\mathbf{k_{||}}\) integration relative to size of Brillouin zone. Often a value between 0.1-0.2 is sufficient.
- value:
float between 0.0 and 1.0
- default:
1.0
- num_points
number of \(\mathbf{k_{||}}\) points, where Schrödinger equation has to be solved (in one direction). In 1D, the number of Schrödinger equations that have to be solved depends quadratically on
num_points
. In 2D, the number of Schrödinger equations that have to be solved depends linearly onnum_points
.
- value:
integer > 1
- default:
10
- num_subpoints
number of points between two \(\mathbf{k_{||}}\) points, where wave functions and eigenvalues will be interpolated.
- value:
integer >= 1
- default:
5
- max_symmetry
If
max_symmetry = no
then the solver does not use symmetry of Brillouin zone to reduce number of \(\mathbf{k_{||}}\) points.If
max_symmetry = C2
then the solver uses up to \(C_2\) symmetry of Brillouin zone to reduce number of \(\mathbf{k_{||}}\) points.If
max_symmetry = full
then the solver uses full symmetry of Brillouin zone to reduce number of \(\mathbf{k_{||}}\) points. For example for a cubic k space the 1/8th of the zone.
- value:
1 or no 2 or C2 3 or full
- default:
full
- force_k0_subspace
If set to
yes
, \(k_\parallel\) integration in quantum{ } is modified in that only states for point \(k=0\) are computed exactly, whereas all other k points are computed in the subspace of the \(k=0\) wave functions. As a result of this approximation, computational speed is much improved (you may even be able to also enlarge the number of eigenvalues). In case you are planning to use this approximation for final results, please make sure to check whether the resulting loss of accuracy in density is acceptable.
- value:
yes
orno
- default:
no
quantum{ region{ kp_8band{ } } }¶
It solves 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.
num_electrons¶
- value:
integer >= 0
- default:
0
number of electron eigenvalues
num_holes¶
- value:
integer >= 0
- default:
0
number of hole eigenvalues
accuracy¶
- value:
any float > 0
- default:
1e-7
accuracy of eigenvalue
iterations¶
- value:
any integer > 1
- default:
500
number of iterations for eigenvalue solver
kp_parameters{}¶
Provides options for advanced manipulation of k.p parameters from database.
Attention
The groups
use_Luttinger_parameters
andapproximate_kappa
are available only for simulations with zincblende crystal symmetry.
- use_Luttinger_parameters
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
orno
- default:
no
- from_6band_parameters
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
orno
:default:no
- approximate_kappa
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
orno
- default:
no
- evaluate_S
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
orno
- default:
no
- rescale_S_to
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
interface{}¶
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.
- position (required)
A real number defining position of the interface
- kp_parameters (required)
The group storing all parameters for the interface Hamiltonian.
- D_s (required)
a real number
- D_x (required)
a real number
- D_z (required)
a real number
- alpha (required)
a real number
- beta (required)
a real number
- reverse (optional)
choice (yes/no)
k_integration{}¶
Provides options for integration over \(\mathbf{k_{||}}\) space for \(\mathbf{k} \cdot \mathbf{p}\) density calculations (for 1D and 2D only) same as kp_6band{ k_integration{}}
lapack{}¶
LAPACK eigensolver: solves dense matrix problem (for 1D and small 2D systems only)
arpack_inv{}¶
ARPACK shift invert eigensolver. ARPACK should be faster for large matrices (N > 1000) where only a few eigenvalues are sought (~5-30).
davidson{}¶
When called, the Davidson solver is used to solve Schrödinger equation.
Hint
The Davidson solver for 8-band k.p offers both better speed as well as increased stability compared to ARPACK inverse in 2D and 3D.
Warning
This routine 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.
shift_window¶
- 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.
shift¶
- value:
float >=0
- default:
0.1
#[eV]
energy shift relative to band edges in arpack_inv
.
abs_shift¶
- value:
float >=0
- default:
0.0
#[eV]
energy shift on an absolute energy scale in arpack_inv
.
linear_solver{}¶
Provides parameters for linear equation solver in
arpack_inv
shift invert preconditioner
- iterations
- 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.
- abs_accuracy
- value:
float between 0.0 and 0.01
- default:
1e-8
absolute accuracy in
arpack_inv
.
- rel_accuracy
- value:
float between 0.0 and 0.01
- default:
1e-8
relative accuracy in
arpack_inv
.
- use_cscg
- value:
yes
orno
- 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.
- force_diagonal_preconditioner
- value:
yes
orno
- 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.
shift_min_CB¶
- value:
float
- default:
0.0
(relevant only if classify_kspace = 0
)
Shifts the minimum of the conduction band to manipulate cutoff energy and thereby the quantum density classification.
shift_max_VB¶
- value:
float
- default:
0.0
(relevant only if classify_kspace = 0
)
Shifts the maximum of the valence band to manipulate cutoff energy and thereby the quantum density classification.
tunneling¶
- value:
yes
orno
- default:
yes
(relevant only if classify_kspace = 0
)
Choice of the (position-dependent) cutoff energy.
yes
defines the cutoff energy at max((minimum of the conduction band in the structure), (position-dependent valence band edge)), while no
sets it to min((maximum of the valence band in the structure), (position-dependent conduction band edge)).
classify_kspace¶
- value:
0, 1, 2, or 3
- default:
0
Choice of the classification method in the 8-band k.p quantum density calculation.
classify_kspace = 0
: Eigenstates are classified by comparing the zone-center eigenvalues with the (possibly position-dependent) cutoff energies. For the definition of cutoff energies, seeshift_min_CB
,shift_max_VB
, andtunneling
.
classify_kspace = 1
: Eigenstates are classified by comparing the zone-center spinor composition withthreshold_classification
.
classify_kspace = 2
: Eigenstates are classified at each in-plane k vector (1D simulation) and at each k value (2D simulation) using spinor composition averaged with the neighbouring k points.
classify_kspace = 3
: Eigenstates are classified at each in-plane k vector (1D simulation) and at each k value (2D simulation) using spinor composition averaged with the neighbouring k points, but skipping the average if any of the neighbouring k points has the opposite sign of charge. The resulting quantum density will be different from the caseclassify_kspace = 2
if electron-hole hybridization occurs (e.g. type-II broken-gap superlattices).
threshold_classification¶
- value:
0.0 <= float <= 1.0
- default:
0.5
(relevant only if classify_kspace >= 1
)
Classify states to electrons if the electron spinor composition is greater than this threshold and otherwise to holes.
full_band_density¶
- value:
yes
orno
- default:
no
Calculate density by filling all states above Fermi level with holes and subtracting a negative background charge (lapack
only). This ignores classify_kspace
.
spurious_handling¶
- 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]
.