|
| |
Tight binding
!------------------------------------------------------------!
$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 !
number-of-k-points
integer
optional !
k-vector
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-band-for-psi
integer
optional !
number-of-bands-to-plot
integer
optional !
$end_tighten
optional !
!------------------------------------------------------------!
!------------------------------------------------------------!
$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
!--------------------------------------
! layer 1: cation
! layer 2: anion
!--------------------------------------
layer-number = 1 ion-1-name =
Ga ion-1-content =
0.5d0 ion-2-name =
Al ion-2-content =
0.5d0 ! Ga/Al cation / alloy content
layer-number = 2 ion-1-name =
As ion-1-content =
1.0d0
! As anion / alloy content
layer-number = 3 ion-1-name =
Ga ion-1-content =
1.0d0
! Ga cation / alloy content
layer-number = 4 ion-1-name =
As ion-1-content =
1.0d0
! 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.
Syntax
rashba2tighten ==> tighten
flow-scheme = 200
Example
!------------------------------------------------------------!
$tighten
!
calculate-tight-binding-tighten = yes
!
tighten-method
= rashba2tighten-tighten !
tight-binding-model
= Scholz
! 'Scholz', 'Sarma'
destination-directory
= TightBinding/
input-directory
=
H:\Tighten_for_Stefan\TIGHTEN_nextnano3\
!input-directory
= tighten_input/
filename-material-parameters =
TBMaterialParameters_Scholz.in
filename-distance-parameters =
TBDistanceParameters_Scholz.in
filename-tighten
= tighten.in
filename-k-vectors
= k_vectors.dat
! ==> will be read in by tighten program
k-vectors-sample-type
= band
!
number-of-k-points
= 1000
!
k-vector
= 0.5d0 0.0d0 0.5d0
! [2pi/a]
power-of-distance-dependence =
2.0d0
!
calculate-eigenvectors
= no
! 'yes' / 'no'
scale
= 1d0
!
potential-energy-left
= 0d0
! [eV]
potential-energy-right
= 0d0
! [eV]
debug-level
= 1
! '1', '2', '3'
!-----------------
! Now tighten....
!-----------------
filename-states
= states.in
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
!
$end_tighten
!
!------------------------------------------------------------!
Syntax
calculate-tight-binding-tighten = yes
! do tight-binding calculation with tighten
= no !
no tight-binding calculation (default)
tighten-method
= 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
= Scholz
! (default) (only for III-V materials)
= Sarma
!
(for II-VI materials)
Scholz parameterization
Empirical spds* tight-binding calculation for
cubic semiconductors: General method and material parameters
J.-M. Jancu, R. Scholz, F. Beltram, F. Bassani
Phys. Rev. B 57, 6493 (1998)
Sarma parameterization
Realistic tight-binding model for the electronic structure
of II-VI semiconductors
S. Sapra, N. Shanthi, D. D. Sarma
Phys. Rev. B 66, 205202 (2002)
destination-directory
= TightBinding/
! directory name for tight-binding output
=
! (default)
input-directory
= input_files/TightBinding/
! directory name for tight-binding input, relative to executable
path.
=
H:\tighten_input\
!
=
"H:\My tighten input\"
! if a blank is contained in the folder name, use
"".
= ../tighten_input/
filename-material-parameters =
TB_material_parameters.in
filename-distance-parameters =
TB_distance_parameters.in
For more information on these input files, see documentation further
below.
filename-tighten
= tighten.in
! name of tight-binding input file (will be generated by
rashba2tighten, and read in again by tighten)
'tighten.in' (default)
This file contains user input for lattice
structure and tight-binding parameters.
filename-k-vectors
= k_vectors.dat
! ==> will be generated by rashba2tighten, and read in again by
tighten program
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.
'k_vectors.in' (default)
The columns in this file are:
REAL(loop_index_over_k) 0.5*(kx+ky)
0.5d0*(ky+kz) 0.5d0*(kx+kz) kx
ky kz
k-vectors-sample-type
= band
! for bandstructure plot along
the lines:
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
= 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)
Here one specifies how the k vectors have to be sampled for
the superlattice tight-binding code.
For bulk tight-binding code the relevant options are:
= band
!
go along axes L -> Gamma -> X -> Gamma -> Z
= 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)
number-of-k-points
= 1000
!
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)
k-vector
= 0.5d0 0.0d0 0.5d0
!
for superlattice tight-binding code:
k = (kx,ky,kSL) vector in dimensionless units [2sqrt(2)pi/alateral],
[2pi/avertical]
k-vector
= 0.01d0 0.01d0 0.00d0
! for bulk
tight-binding code:
k = (kx,ky,kz) vector
in units of 2pi/(kx0/alateral,ky0/alateral,kz0/avertical)
power-of-distance-dependence =
2.0d0
! ti = t0*(d0/di)**eta (default:
2d0)
calculate-eigenvectors
= yes
!
= no
! (default) calculate eigenvalues only
scale
= 5d0
! scale output of wave functions and |psi|2 to improve
visualization of |psi|2 in the band edges plot
= 1d0
! (default)
potential-energy-left
= 0d0
! [eV] (default: 0d0)
Add potential energy to band edges (value at first layer).
potential-energy-right
= 0d0
! [eV] (default: 0d0)
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
= 1
! (default)
!
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.
= 2
!
get very detailed output, excluding Hamiltonian
= 3
!
get very detailed output, including Hamiltonian to stdio
!-----------------
! Now tighten....
!-----------------
filename-states
= states.in
For more information on this input file, see documentation further
below.
calculate-only-lattice-geometry = no
! (default)
= yes
! Calculate only lattice geometry but not tight-binding
Hamiltonian.
output-Hamiltonian
= no
! (default) Hamiltonian matrix not written to file
= yes
!
whole Hamilton matrix is written columnwise
= lower
!
lower triangle is written rowwise
calculate-k-derivatives
= no
! (default) do not calculate k-derivatives of H(k)
= yes
!
calculate first and second
= first
!
calculate d/dk H(k)
= second
!
calculate d2/dkikj H(k)
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
= eigenvalues-only
! (default) calculate only eigenvalues (eigval)
= 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 =
5 ! integer number > 0
zero of energy is taken at this band for first k-vector
This specifier only applies to the bulk tight-binding algorithm.
number-of-band-for-psi
= 1
! (default: 1) used with 2
above, index of 1st of 4 bands w |psi|2 (actually 8 bands
due to spin degeneracy)
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 =
4
! (default: 4)
This is the number of bands that are plotted in the files
- out_wavegamma.dat
-
|psi|2,... are not shifted
- out_wavegamma_shift.dat
-
|psi|2,... are shifted by their
eigenenergies with respect to the energy dispersion plot
- out_wavegamma_shift_bandedges.dat -
|psi|2,... are shifted by their
eigenenergies with respect to the band edges plot
starting
from the band indicated with number-of-band-for-psi.
Necessary input files
- material parameters
TB_material_parameters.in
==> Download file:
TB_material_parameters.in
c11 c12 elastic
constants 10-2 [GPa]
a
lattice constant [Angstrom]
tight-binding parameters [eV]
nc na
esc epc esec edct2 edce
esa epa esea edat2 edae
Dav
absolute deformation potential [eV]
sss scpas pcsas pps ppp seses secsas scseas secpas pcseas scdas dcsas pcdas
dcpas pcdap dcpap secdas dcseas dds ddp ddd
so_p_c so_p_a
so_d_c so_d_a
so_ppca
Gammav energy of top
valence band edge at Gamma point [eV]
Gammac energy of
conduction band edge at Gamma point [eV]
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 J.-M.
Jancu et al., PRB 57, 6493 (1998), Table II with the following
exceptions:
Es, Ep, Ed, Es* are shifted by
+1.7683 eV.
- distance parameters
TB_distance_parameters.in
==> Download file:
TB_distance_parameters.in
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
deformation potential [eV] (Note: Different
meaning/definition!)
in order to modify on-site d-energies according to strain (bdeff = bd
* ed_scholz)
- states
states.in
==> Download file:
states.in
This noneditable namelist file will be read in by the
tighten program and contains the following information:
$state_description
number_state_ref = 10
state_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 = 21
coup_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'
$end
- Generated output files:
- k_vectors.in
- 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.dat
Gamma conduction band edge and topmost valence band edge (units:
atomic layer , energy [eV])
- out_ek_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)
- out_ek_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)
- out_ek_tighten.dat energy
dispersion E(k) (original output)
(shifted so that topmost valence band edge equals 0 eV)
Output files of tighten (bulk)
out_ek_tighten_bulk_new_noshift.dat energy
dispersion E(k) (original output)
(not shifted, energies correspond to tight-binding material parameters in
input file)
out_ek_tighten_bulk_new.dat energy
dispersion E(k)
(shifted so that valence band edge of first k vector equals 0 eV)
out_ek_tighten_bulk.dat energy
dispersion E(k) (original output)
(shifted so that valence band edge of first k vector equals 0 eV)
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 = zero-strain-amorphous
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
zero-strain-amorphous.
(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.)
Obsolete
matfileloc.txt
H:\Tighten\
H:\Tighten\
# Here, the location of the intermediate output files and the
material files is specified.
D:\nextnano3\nn3.exe -inputfile 1DTightBinding_rashba2tighten.in
<
in_GaAs51Sb49_bulk_gamma_L.txt
|