# $tighten¶

The original tighten code that is used inside next**nano**³ has been written by Peter Vogl, Walter Schottky Institute, Technische Universität München.
It is based on the sp3d5s* method. For details about this method, see e.g. [JancuPRB1998].

Here is a general template for the tighten code block for the input file, in which the variables should be specified as given in the explanations and examples further below.

```
!------------------------------------------------------------!
$tighten optional !
calculate-tight-binding-tighten character required !
tighten-method character optional !
tight-binding-model character optional !
destination-directory character required !
input-directory character optional !
filename-material-parameters character optional !
filename-distance-parameters character optional !
filename-tighten character optional !
filename-k-vectors character optional !
k-vectors-sample-type character optional !
Brillouin-zone-path character optional !
Brillouin-zone-sections character optional !
number-of-k-points integer optional !
k-direction-from-k-point double_array optional !
k-direction-to-k-point double_array required !
power-of-distance-dependence double optional !
calculate-eigenvectors character optional !
scale double optional !
potential-energy-left double optional !
potential-energy-right double optional !
debug-level integer optional !
!
filename-states character optional !
calculate-only-lattice-geometry character optional !
output-Hamiltonian character optional !
calculate-k-derivatives character optional !
tighten-option character optional !
number-of-band-for-Fermi-energy integer optional !
number-of-electron-eigenvalues integer optional !
number-of-hole-eigenvalues integer optional !
number-of-band-for-psi integer optional !
number-of-bands-to-plot integer optional !
swap-cation-and-anion character optional !
rescale-to-unstrained-k-points character optional ! for graphene only
!----------------------------
! Pseudopotential algorithm
!----------------------------
pseudopotential-scaling-factor double optional !
pseudopotential-form-factors double_array optional !
G-vectors-included integer optional !
$end_tighten optional !
!------------------------------------------------------------!
```

`$atomic-layers`

is only necessary for the heterostructure tight-binding code but not for the bulk tight-binding code.

```
!-----------------------------------------------------------!
$atomic-layers optional !
layer-number integer required !
!
ion-1 character required !
ion-1-content double required !
!
ion-2 character optional !
ion-2-content double optional !
$end_atomic-layers optional !
!-----------------------------------------------------------!
```

## Example: $atomic-layers¶

```
$atomic-layers
!--------------------------------------
! layer 1: cation
! layer 2: anion
!--------------------------------------
layer-number = 1 ion-1-name = Ga ion-1-content = 0.5 ion-2-name = Al ion-2-content = 0.5 ! Ga/Al cation / alloy content
layer-number = 2 ion-1-name = As ion-1-content = 1.0 ! As anion / alloy content
layer-number = 3 ion-1-name = Ga ion-1-content = 1.0 ! Ga cation / alloy content
layer-number = 4 ion-1-name = As ion-1-content = 1.0 ! As anion / alloy content
```

Note

The total number of layers in [001] superlattice direction must be integer multiple of 4 (e.g. 4, 8, 12, …) because a unit cell consists of 4 atomic layers.

Convert number of layers (atomic layers) into [nm] units: position = layer-number * LatticeConstant / 4

Convert number of molecular layers into [nm] units: position = layer-number * LatticeConstant / 2

The lattice constant refers to the constant distance between unit cells in a crystal lattice. A unit cell consists of 2 molecular layers in diamond/zinc blende structure.

It must hold: ion-1-content + ion-2-content = 1.0.

## Example: $tighten¶

```
!-----------------------------------------------------------------!
$tighten !
calculate-tight-binding-tighten = yes !
tighten-method = rashba2tighten-tighten !
tight-binding-model = Scholz ! 'Scholz', 'Sarma'
destination-directory = TightBinding/ ! directory name for tight-binding output. This is where all output goes.
input-directory = ../Syntax/Tight-binding files/ ! directory name for tight-binding input, relative to executable path
!input-directory = H:\Tighten\TIGHTEN_nextnano3\ ! directory name for tight-binding input, absolute path
filename-material-parameters = TB_material_parameters.in ! The full filename is then: input-directory/filename-material-parameters
filename-distance-parameters = TB_distance_parameters.in ! The full filename is then: input-directory/filename-distance-parameters
filename-tighten = tighten.in ! This file is written to destination-directory/ and will be read in again by the tighten algorithm.
! If tighten-method = tighten, the full filename is then: input-directory/filename-tighten
filename-k-vectors = k_vectors.dat ! This file is written to destination-directory/ and will be read in again by the tighten algorithm.
! If tighten-method = tighten, the full filename is then: input-directory/filename-k-vectors
k-vectors-sample-type = band !
Brillouin-zone-path = 0.5 0.5 0.5 ! L
0.0 0.0 0.0 ! Gamma
1.0 0.0 0.0 ! X
Brillouin-zone-sections = 0.5 0.5 0.5 ! L =>
0.0 0.0 0.0 ! Gamma
0.0 0.0 0.0 ! Gamma =>
1.0 0.0 0.0 ! X
number-of-k-points = 1000 !
k-direction-from-k-point =-0.5 0.0 0.5 ! k vector in units of [2pi/a]
k-direction-to-k-point = 0.5 0.0 0.5 ! k vector in units of [2pi/a]
power-of-distance-dependence = 2.0 !
calculate-eigenvectors = no ! 'yes' / 'no'
scale = 1.0 !
potential-energy-left = 0.0 ! [eV]
potential-energy-right = 0.0 ! [eV]
debug-level = 1 ! '1', '2', '3'
!-----------------
! Now tighten....
!-----------------
filename-states = states.in ! The full filename is then: input-directory/filename-states
calculate-only-lattice-geometry = no ! 'yes' / 'no'
output-Hamiltonian = no ! 'yes' / 'lower' / 'no'
calculate-k-derivatives = no ! 'yes' / 'first' / 'second' / 'no'
tighten-option = eigenvalues-only ! 'eigenvalues-only', 'eigenvectors-and-density', 'eigenvectors-and-g-factor', 'no-eigenvalues'
number-of-band-for-psi = 1 ! used with 2 above, index of 1st of 4 bands w |psi|^2
number-of-bands-to-plot = 4 !
swap-cation-and-anion = no ! 'no' / 'yes' (default is no. For testing only, cation and anion material parameters of database are exchanged.)
!----------------------------------------------------------------------------------------------
! Pseudopotential algorithm ==> Reference: T. P. Pearsall, Quantum Photonics (2017), Chapter 4
!----------------------------------------------------------------------------------------------
pseudopotential-scaling-factor = 1.0 ! (default is 1.0. scaling factor for potentials (0.0 <= ... <= 1.0)
! 0.0 = no potential, i.e. free electron, 1.0 = full periodic potential, anything in between is a mixture
! ==> Note: This feature can be used to obtain the free-electron dispersion in a zincblende lattice.
pseudopotential-form-factors = 0.0 ... 0.136 ! 10 values: U0,s U3,s U4,s U8,s U11,s U0,a U3,a U4,a U8,a U11,a
! U0,s and U0,a can be chosen both as 0.0. They just determine the reference energy.
! The subscripts s and a refer to the symmetric and antisymmetric form factors.
! The lattice constant is also needed!!!
G-vectors-included = 11 ! include reciprocal G vectors up to this subscript, e.g. G0 (0), G3 (3), G4 (4), G8 (8), G11 (11), G12 (12); The subscript is the length squared |G|2.
! G0 = (0 0 0) (1 vector, total number of G vectors: 1)
! G3 = (1 1 1) (8 vectors, total number of G vectors: 9)
! G4 = (2 0 0) (6 vectors, total number of G vectors: 15)
! G8 = (2 2 0) (12 vectors, total number of G vectors: 27)
! G11 = (3 1 1) (24 vectors, total number of G vectors:51)
! G12 = (2 2 2) (8 vectors, total number of G vectors:59))
$end_tighten !
!-----------------------------------------------------------------!
```

Note

The standard parameter files which are specified as follows

```
filename-material-parameters = TB_material_parameters.in ! The full filename is then: input-directory/filename-material-parameters
filename-distance-parameters = TB_distance_parameters.in ! The full filename is then: input-directory/filename-distance-parameters
```

are located under

`C:\Program Files (x86)\nextnano\nextnano3\Syntax\Tight-binding files\`

## Parametrization¶

Scholz and Sarma parametrizations are given in the articles [JancuPRB1998] and Sarma2002.

## Syntax¶

- calculate-tight-binding-tighten
do tight-binding calculation with tighten

- options

`yes`

or`no`

- default

`no`

(no tight-binding calculation)- tighten-method

- options

`rashba2tighten-tighten`

generate input file for tighten and do tight-binding calculation with tighten`rashba2tighten`

generate input file for tighten only`tighten`

tight-binding calculation ==> tighten only- tight-binding-model

- options

`Scholz`

(default) (only for III-V materials)`Sarma`

(for II-VI materials)- destionation-directory
directory name for tight-binding output. This is where all output goes.

- default

`./`

- example

`TightBinding/`

- input-directory
directory name for tight-binding input, relative to executable path.

- default

`./`

- example

`../Syntax/Tight-binding files/`

- filename-tighten

Name of tight-binding input file (will be generated by rashba2tighten, and read in again by tighten).

This file is written to destination-directory/ and will be read in again by the tighten algorithm.

If tighten-method = tighten, the full filename is then: input-directory/filename-tighten

- default

`tighten.in`

- filename-k-vectors

This file contains user input for lattice structure and tight-binding parameters.

It will be generated by rashba2tighten, and read in again by tighten program.

If tighten-method = tighten, the full filename is then: input-directory/filename-k-vectors.

- default

`k_vectors.dat`

- k-vectors-sample-type

This file contains the k vectors for the tight-binding Hamiltonian that will be diagonalized, i.e. for which the eigenenergies and eigenfunctions will be calculated.

The columns in this file are:

`REAL(loop_index_over_k) 0.5*(kx+ky) 0.5*(ky+kz) 0.5*(kx+kz) kx ky kz`

- options

`band`

for band structure plot along some predefined lines (the lines are different for the bulk and superlattice code, see below)

`user-defined-path`

as defined in Brillouin-zone-path = …

`user-defined-sections`

as defined in Brillouin-zone-sections = …For the superlattice tight-binding code the relevant options are:

`band`

for band structure plot along the lines (superlattice code): Gamma ==> (along Delta to) X = 0.5 G1 ==> (along Z to) M = 0.5 (G1+G2) ==> (along Sigma to) Gamma ==> Z = 0.5 G3

reciprocal primitive vectors: G1 = (2pi sqrt(2)/a_lateral ) * (1 0 0) ==> along (1 0 0) in-plane direction

G2 = (2pi sqrt(2)/a_lateral ) * (0 1 0) ==> along (0 1 0) in-plane direction

G3 = (2pi /a_vertical) * (0 0 1) ==> along superlattice direction

a_lateral: in-plane lattice constant

a_vertical: out-of-plane lattice constant

Some predefined paths are:

`k_parallel_100-Gamma-k_superlattice`

X = -0.5 G1 ==> (along Delta to) Gamma ==> Z = 0.5 G3

`k_parallel_110-Gamma-k_superlattice`

M = -0.5 (G1+G2) ==> (along Sigma to) Gamma ==> Z = 0.5 G3

`110G`

3 values, namely (000), (kx0,0,0), (0,kx0,0), [110] direction and [1-10] direction

`100D`

“100D” - “001D”

`two`

2 values, namely (000) and the one specified (kx0,ky0,kz0)

`cirG`

circle Gamma=(000) with radius kmod=|k0|, surrounding Gamma point at distance specified.

`xyz`

number_of_k_points values from ( 0 , 0 , 0 ) ==> (kx0,ky0,kz0)

`Lprojected-Gamma-Xprojected`

`L-Gamma-Xprojected`

`L-Gamma-X`

`k1-Gamma-k2`

`k1-k2`

`R-Z-Gamma-X-M-A`

See p. 404, Fig. 8.37 of C. Hamaguchi, Basic Semiconductor Physis, 2nd edition and Fig. 8.29

`Gamma-X-R-Z-Gamma-M-A-Gamma`

See Fig. 8 of A. Sawamura et al., Optical Materials Express 8, 1569 (2018)For the bulk tight-binding code the relevant options are:

`band`

for band structure plot along the lines (bulk code): same as L-Gamma-X-W-L-K-Gamma for the bulk tight-binding codeSome predefined paths are:

`L-Gamma-X-W-K-L-W-X-K-Gamma`

same as [JancuPRB1998] and Fig. 1 of A. Sawamura et al., Optical Materials Express 8, 1569 (2018)

(The points U and K have the same energies but the path to these points from Gamma or X is not equivalent.)

L-Gamma is along Lambda axis, i.e. along [1,1,1] direction (L is at 2pi/a (0.5,0.5,0.5); Gamma is at 2pi/a (0,0,0) ). The distance between these points is pi/a sqrt(3).

Gamma-X is along Delta axis, i.e. along [1,0,0] direction (X is at 2pi/a (1,0,0) )

X-W is along V

W-K is along

K-L is along

L-W is along Q

W-X is along V

X-K is along

K-Gamma is along Sigma

`L-Gamma-X-W-L-K-Gamma`

e.g. S. Sapra et al., PRB 66, 205202 (2002) (same as band)

`L-Gamma-X-K-Gamma`

`L-Gamma-X-U-K-Gamma`

e.g. Tom P. Pearsall, Quantum Photonics (Band structure plots for pseudopotential calculations) (to do: eliminate the path between U and K)

`L-Gamma-X`

`X-Gamma-Z-U'-L-Gamma-K`

(for strain)

`110G`

3 values, namely (000) , (kx0,kx0,0) , (-kx0, kx0,0)

`110X`

3 values, namely (001) , (kx0,kx0,1) , ( kx0,-kx0,1)

`110D`

3 values, namely (00kz0), (kx0,kx0,kz0), (-kx0, kx0,kz0)

`110L`

3 values, namely (0.5,0.5,0.5), (0.5+kx0,0.5+kx0,0.5-2kx0), (0.5+kx0,0.5-kx0,0.5)

`100G`

3 values, namely (000), (kx0,0,0),(0,ky0,0)

`two`

2 values, namely (000) and (kx0,ky0,kz0)

`cirG`

circle Gamma=(000) in kz=0 plane with radius kmod=|k0|

`cirX`

circle X =(001) in kz=1 plane with radius kmod=|k0|

`cirL`

circle L =(111) in plane lambda*(1,1,-2) + mu*(1,-1,0) with radius kmod=|k0|

`xyz`

number_of_k_points values from ( 0 , 0 , 0 ) ==> (kx0,ky0,kz0)

`xff`

number_of_k_points values from ( 0 ,ky0,kz0) ==> (kx0,ky0,kz0)

`ffz`

number_of_k_points values from (kx0,ky0, 0 ) ==> (kx0,ky0,kz0)For the bulk tight-binding code of graphene the relevant options are:

`M'_K_Gamma_M_K'_M'`

band structure of graphene along the path M’ ==> K ==> Gamma ==> M ==> K’ ==> M’

`K_Gamma_M_K'`

band structure of graphene along the path K ==> Gamma ==> M ==> K’- Brillouin-zone-path
This is a path through the Brillouin zone passing through all these k points in this order. The number of entries must be a multiple of 3.

- example
Brillouin-zone-path = 0.5 0.5 0.5 ! L 0.0 0.0 0.0 ! Gamma 1.0 0.0 0.0 ! X ... ... ... ! ... ... ... ... ! ...- Brillouin-zone-sections

- example
Brillouin-zone-sections = 0.5 0.5 0.5 ! L ! Section 1: This is a path through the Brillouin zone between these two k points. L ==> Gamma 0.0 0.0 0.0 ! Gamma ! 0.0 0.0 0.0 ! Gamma ! Section 2: Then a path through the Brillouin zone between these two k points is taken. Gamma ==> X 1.0 0.0 0.0 ! X 0.0 0.0 0.0 ! Gamma ! Section 3: Then a path through the Brillouin zone between these two k points is taken. Gamma ==> L 0.5 0.5 0.5 ! L ... ... ... ! The number of entries must be a multiple of 6. ... ... ... !

## Brillouin zone of zincblende semiconductor¶

Define Brillouin zone boundaries in units of 2pi/a where a is the lattice constant.

The first Brillouin zone comprises those points in reciprocal space that are closer to the origin (i.e. to the Gamma point) than to any other point of the reciprocal lattice.

The high symmetry points are called:

L [ 1/2 , -1/2 , 1/2 ] ~[1-11]

Gamma [ 0 , 0 , 0 ] (origin, i.e. center of the 1st Brillouin zone)

X [ 1 , 0 , 0 ] ~[100]

U [ 1 , 1/4 , -1/4 ]

K [ 0 , 3/4 , 3/4 ]

Gamma [ 0 , 0 , 0 ]

W [ 1 , sqrt(2)/2 , 0 ]

The line from [Gamma] to [X] along the high-symmetry direction [100] is called Delta.

The line from [Gamma] to [L] along the high-symmetry direction [111] is called Lambda.

The line from [K] to [X] along the high-symmetry direction […] is called Sigma. (should be checked)

The distance in k space from [Gamma] to [L] is sqrt(3)*pi/a.

If one goes from [Gamma] to [X] along the line [Delta], the cubic symmetry splits the 8 bands into 2 bands.

At the zone center [Gamma], the energy value is 8-fold degenerate.

At the [X] point, there are two bands, each of which is 4-fold degenerate.

If one goes from [Gamma] to [L] along the line [Lambda], the cubic symmetry splits the 8 bands into 4 bands, the upper and lower one is 1-fold degenerate, the two intermediate ones are each 3-fold degenerate.

The electronic wave function at the [Gamma] point in the center of the Brillouin zone sees the maximum symmetry of the fcc lattice.

There are 48 operations (rotations, reflections, inversion) that leave the structure invariant.

- number-of-k-points
number of k vectors for which to calculate eigenvalues (only relevant for band, k_parallel_100-Gamma-k_superlattice, k_parallel_100-Gamma-k_superlattice, xyz so far)

- example
`1000`

With the following flags with can specify a k vector in the Brillouin zone.

k-direction-to-k-point = 0.5 0.0 0.5 ! for superlattice tight-binding code: k = (kx,ky,kSL) vector in dimensionless units [2sqrt(2)pi/alateral], [2pi/avertical] k-direction-to-k-point = 0.01 0.01 0.0 ! for bulk tight-binding code: k = (kx,ky,kz) vector in units of 2pi/(kx0/alateral,ky0/alateral,kz0/avertical)

The superlattice k.p dispersion can be calculated along an arbitrary line from the k point ‘k-direction-from-k-point’ to the Gamma point and then to the k point ‘k-direction-to-k-point’. Either k-direction-from-k-point or k-direction-to-k-point or both can be zero. If both are zero, then only the Gamma point is calculated. k-direction-from-k-point can be omitted.

You can use this flag to specify a customized plot for the E(k) dispersion, e.g. along a line from [110] to the Gamma point and then to the [001] point.

k-direction-from-k-point =-0.5 -0.5 0.0 ! k vector in units of [2pi/a] k-direction-to-k-point = 0.0 0.0 0.0 ! k vector in units of [2pi/a]

- power-of-distance-dependence

- default

`2.0`

ti = t0*(d0/di)**eta It seems that this value is not used inside the code, unscaled matrix elements are used.

- calculate-eigenvectors

- value

`yes`

or`no`

- default

`no`

- scale

- default

`1.0`

- example

`5.0`

scale output of wave functions and \(|\psi|^2\) to improve visualization of \(|\psi|^2\) in the band edges plot

- potential-energy-left

- default

`0.0`

[eV]Add potential energy to band edges (value at first layer).

- potential-energy-right

- default

`0.0`

[eV]Add potential energy to band edges (value at last layer). The values in between are interpolated for each layer. This way an electrostatic potential or electric field can be included.

- debug-level

- default

`1`

get reduced standard output, this is appropriate to generate an input file if unit cell has many atoms. NOTE: only first element of star is printed.

- options

`2`

get very detailed output, excluding Hamiltonian

`3`

get very detailed output, including Hamiltonian to stdio- filename-states

- default

`states.in`

The full filename is then: input-directory/filename-states

This file is located in the folder:

`C:\Program Files (x86)\nextnano\nextnano3\Syntax\Tight-binding files\`

- calculate-only-lattice-geometry

- default

`no`

- option

`yes`

Calculate only lattice geometry but not tight-binding Hamiltonian.- output-Hamiltonian

- default

`no`

Hamiltonian matrix not written to file- options

`yes`

whole Hamilton matrix is written column wise

`lower`

lower triangle is written row wise- calculate-k-derivatives

- default

`no`

do not calculate k-derivatives of H(k)- options

`yes`

calculate first and second

`first`

calculate d/dk H(k)

`second`

calculate d²/dkikj H(k)Note

ham_1deriv_output_file

ham_2deriv_output_file

… files that contain nonzero matrix elements of 1st (and 2nd) k-derivative of H in same format as ham_output_file,

BUT ONLY SPIN_UP/SPIN-UP PART since SPIN-DN/SPIN-DN is identical and SPIN-DN/SPIN-UP=0

‘der1.dat’ ! ham_1deriv_output_file = ‘der1.dat’

‘der2.dat’ ! ham_2deriv_output_file = ‘der2.dat’

- tighten-option

- default

`eigenvalues-only`

calculate only eigenvalues (eigval)- options

`eigenvectors-and-density`

calculate eigenvectors and density of tight-binding Hamiltonian (ev+dens)

`eigenvectors-and-g-factor`

calculate eigenvectors and g-factor (ev+g)

`no-eigenvalues`

no diagonalization- number-of-band-for-Fermi-energy

- range
\(\mathbb{N_0}\)

- default

`0`

i.e. highest valence band number- example

`8`

zero of energy is taken at this band for Gamma point (or first k-vector)

This specifier only applies to the bulk tight-binding algorithm and the pseudopotential code.

- number-of-electron-eigenvalues

- range
\(\mathbb{N}\)

- default

`11`

- number-of-electron-eigenvalues

- range
\(\mathbb{N}\)

- default

`15`

This specifier only applies to the superlattice tight-binding algorithm.

Include 11 electron and 15 hole energies in E(k) energy dispersion plot.

- number-of-band-for-psi

- default

`1`

used with 2 above, index of 1st of 4 bands w \(|\psi|^2\) (actually 8 bands due to spin degeneracy)

Note

If ieigenvalues_flag=2, wave functions are calculated at Gamma for every second of number-of-bands-to-plot/2 consecutive bands, starting with number-of-band-for-psi, where -1 and 0 = top of valence band, 1 and 2 = 1st conduction band. Choose an odd number.

If ieigenvalues_flag=3, g-factor tensor for this plus following (nondegenerate) band is calculated

- number-of-bands-to-plot

- default

`4`

This is the number of bands that are plotted in the files

`Gamma_psi_squared.dat`

\(|\psi|^2\), … are not shifted

`Gamma_psi_squared_shift.dat`

\(|\psi|^2\), … are shifted by their eigenenergies with respect to the energy dispersion plot

`Gamma_psi_squared_shift_bandedges.dat`

\(|\psi|^2\), … are shifted by their eigenenergies with respect to the band edges plotstarting from the band indicated with

`number-of-band-for-psi`

.This number does not take into account spin. E.g. if you specify ‘4’, the program will print out 8 bands, i.e. twice as much, i.e. spin is taken into account automatically by the program.

- rescale-to-unstrained-k-points

- default

`no`

Do not rescale band structure to unstrained k points. It can be useful to keep the high symmetry points fixed on the graph in order to compare different strains.- option

`yes`

Rescale band structure to unstrained k points. This moves the high symmetry points if strained.This flag is only relevant for the tight-binding code of graphene.#

## Necessary input files¶

### Material parameters¶

Material parameters that also occur in the normal nextnano database:

`c11`

`c12`

elastic constants \(10^{-2}\) [GPa]

`a`

lattice constant [Angstrom] tight binding parameters [eV]

Tight-binding material parameters

`nc`

`na`

number of electrons on cation and number of electrons on anion (e.g. 3 for Ga and 5 for As in GaAs; 4 for Si)

`Esc`

`Epc`

`Esec`

`Edct2`

`Edce`

orbital energies [eV], e.g. Esc is s-orbital energy of cation

`Esa`

`Epa`

`Esea`

`Edat2`

`Edae`

orbital energies [eV], e.g. Esa is s-orbital energy of anionEdct2 and Edat2 are used instead of Ed to allow for d-orbital splitting

`Dav`

absolute deformation potential [eV]difference in absolute valence band deformation potentials (in eV) between intrinsic Scholz values and Van de Walle/Needs values.

Inclusion of this term guarantees that calculated av agrees with Van de Walle/Needs.

`sss`

`scpas`

`pcsas`

`pps`

`ppp`

`seses`

`secsas`

`scseas`

`secpas`

`pcseas`

`scdas`

`dcsas`

`pcdas`

`dcpas`

`pcdap`

`dcpap`

`secdas`

`dcseas`

`dds`

`ddp`

`ddd`

`s s sigma`

`scpasigma`

`sapcsigma`

`p p sigma`

`p p pi`

`s*s*sigma`

`s*csasigma`

`s*ascsigma`

`s*cpasigma`

`s*apcsigma`

`scdasigma`

`sadcsigma`

`pcdasigma`

`padcsigma`

`pcdapi`

`padcpi`

`s*cdasigma`

`s*adcsigma`

`d d sigma`

`d d pi`

`d d delta`

`so_p_c`

`so_p_a`

onsite and intersite spin-orbit couplings

`so_d_c`

`so_d_a`

`so_ppca`

`Gammav`

energy of unstrained top of valence band edge at Gamma point;

`Gammac`

energy of unstrained conduction band edge minimum at Gamma point [eV]Both are with respect to an absolute energy scale (crude estimate only)

The last two values are not used for the tight-binding calculation. However, these are the relevant values that are contained in the output files

`band_edges_nm.dat`

and`band_edges.dat`

. They are the values of the unstrained band edges on an absolute energy scale. They are crude estimates only. As already said, they are not input to the actual tight-binding calculation but they are similar to the results of a bulk tight-binding calculation.The empirical tight-binding material parameters for Ge are the ones of JancuPRB1998, Table II with the following exceptions: Es, Ep, Ed, Es* are shifted by +1.7683 eV.

### Distance parameters¶

These parameters are relevant for strained materials or for alloys.

`nsss`

`nscpas`

`npcsas`

`npps`

`nppp`

`nseses`

`nsecsas`

`nscseas`

`nsecpas`

`npcseas`

`nscdas`

`ndcsas`

`npcdas`

`ndcpas`

`npcdap`

`ndcpap`

`nsecdas`

`ndcseas`

`ndds`

`nddp`

`nddd`

`bdeff`

strain dependent shift of onsite-d energies in [eV] (deformation potential). It is chosen to be identical for cation and anion.

bdeff = bd * ed_Scholz

### States¶

This noneditable namelist file will be read in by the tighten program and contains the following information:

&state_descriptionnumber_state_ref = 10state_ref_name(1) = ‘s’state_ref_name(2) = ‘px’state_ref_name(3) = ‘py’state_ref_name(4) = ‘pz’state_ref_name(5) = ‘se’state_ref_name(6) = ‘dxy’state_ref_name(7) = ‘dyz’state_ref_name(8) = ‘dzx’state_ref_name(9) = ‘dx2y2’state_ref_name(10) = ‘dz2r2’number_coup_ref = 21coup_ref_name(1) = ‘sss’coup_ref_name(2) = ‘sps’coup_ref_name(3) = ‘pss’coup_ref_name(4) = ‘pps’coup_ref_name(5) = ‘ppp’coup_ref_name(6) = ‘seses’coup_ref_name(7) = ‘sess’coup_ref_name(8) = ‘sses’coup_ref_name(9) = ‘seps’coup_ref_name(10) = ‘pses’coup_ref_name(11) = ‘sds’coup_ref_name(12) = ‘dss’coup_ref_name(13) = ‘pds’coup_ref_name(14) = ‘dps’coup_ref_name(15) = ‘pdp’coup_ref_name(16) = ‘dpp’coup_ref_name(17) = ‘seds’coup_ref_name(18) = ‘dses’coup_ref_name(19) = ‘dds’coup_ref_name(20) = ‘ddp’coup_ref_name(21) = ‘ddd’/

### Generated output files¶

`k_vector.dat`

`tighten.in`

These are the input files for tighten.

`out_structure.txt`

`band_edges_unstrained_nm.dat`

Gamma conduction band edge and topmost valence band edge (units: position [nm], energy [eV], band gap [eV])`band_edges_unstrained_layers.dat`

Gamma conduction band edge and topmost valence band edge (units: atomic layer , energy [eV])`E(k)_tighten_new_bandedges.dat`

energy dispersion E(k) where the x axis is either in units of [1/Angstrom] or integer numbers indicating the number of k points (not shifted, energies correspond to tight-binding material parameters in input file)`E(k)_tighten_new.dat`

energy dispersion E(k) where the x axis is either in units of [1/Angstrom] or integer numbers indicating the number of k points (shifted so that topmost valence band edge equals 0 eV)`E(k)_tighten.dat`

energy dispersion E(k) (original output) (shifted so that topmost valence band edge equals 0 eV)

## Output files of tighten (bulk)¶

`E(k)_tighten_bulk_new_noshift.dat`

energy dispersion E(k) (original output) (not shifted, energies correspond to tight-binding material parameters in input file)

`E(k)_tighten_bulk_new.dat`

energy dispersion E(k) (shifted so that valence band edge of first k vector equals 0 eV)

`E(k)_tighten_bulk.dat`

energy dispersion E(k) (original output) (shifted so that valence band edge of Gamma k vector equals 0 eV (default) (shifted so that valence band edge of first k vector equals 0 eV (debug-level = 10)

If k-vectors-sample-type = xyz, then the |k| vectors are in units of [1/nm] of the files out_ek_tighten_bulk_new*.dat.

`hamtightenout_bulk.txt`

`driver_file_sl.in`

`'hamtightenout.dat'`

ham_output_file = ‘hamout.dat’

## Strain¶

```
$simulation-flow-control
...
strain-calculation = homogeneous-strain
```

Include biaxial strain for superlattice tighten code.

```
strain-calculation = no-strain
```

No strain is considered for superlattice tighten code, i.e. strain tensor is zero and each layer has equilibrium lattice constant in growth direction.

In any case, the lattice constant in the lateral growth direction is the one of the substrate material specified in

```
$domain-ccordinates
...
pseudomorphic-on = GaAs
```

for both, homogeneous-strain and no-strain.

(Internally, strain001V and the trace of the strain tensor are set to zero. The vertical lattice constant is the equilibrium lattice constant of the layer material.)