Database for zincblende and diamond-type materials
(cubic crystal structure)
=> ../Syntax/database_nnp.in
Group IV, III-V, II-VI, I-VII materials
binary_zb {
name = GaAs
# material name, e.g. Si,
GaAs, InP, ...
valence = III_V
# IV_IV for group IV materials (like Si, Ge,
SiC, ...)
# III_V for III-V materials
(like GaAs, AlP, ...)
# II_VI for II-VI materials (like ZnO, HgTe,
...)
# I_VII for I-VII materials (like CuCl, ...)
lattice_consts{
a =
5.65325 # [Angstrom] lattice constant at 300
K
# In a cubic crystal system (like diamond and zincblende), the lattice
constants in all three crystal axes are equal.
a_expansion = 3.88e-5
# [Angstrom/K] The lattice constants are temperature dependent => a(T) .
# The lattice constant a in the
database should be given for 300 K.
# For all other temperatures, the lattice
constant is calculated by the following formula
# where T is the temperatue in units of [K] :
# a(T) = a(300 K) + a_expansion * (T - 300 K)
# The lattice constants are needed for the
calculation of the strain.
}
dielectric_consts{
static_a = 12.93
# [-] static or low frequency (epsilon(omega=0) ) dielectric
constant
optical_a = 10.10 #
[-] The optical dielectric constant is currently not in use but maybe it
is necessary in the future for laser calculations.
# In a cubic crystal system (like diamond and zincblende), the dielectric
constants in all three crystal axes are equal.
# The static dielectric constant enters the Poisson
equation.
# It is also needed to calculate the optical
absorption and enters the equation for the exciton correction.
}
elastic_consts{
c11 = 122.1
# [GPa] elastic constants
c12 = 56.6
# 1 * 1011 dyn/cm2 = 10 GPa -> 12.21
* 1011 dyn/cm2
= 122.1 GPa
c44 = 60.0
# The elastic constants are needed for the
calculation of the strain in heterostructures.
}
piezoelectric_consts{
e14 = -0.160 # [C/m2] piezoelectric constants
# For silicon and germanium there is no
piezoelectric effect at all, thus the constants are zero in this case.
# If strain is present, then generally
piezoelectric charges and thus piezoelectric fields arise.
B114 = -0.439
# [C/m2] 2nd order piezoelectric constant (optional)
B124 = -3.765
# [C/m2] 2nd order piezoelectric constant (optional)
B156 = -0.492
# [C/m2] 2nd order piezoelectric constant (optional)
}
conduction_bands{
Gamma{
# material parameters for the conduction band valley at the Gamma point
of the Brillouin zone
mass
= 0.067 # [m0]
electron effective mass (isotropic, parabolic)
# This mass is used for the single-band Schrödinger
equation and for the calculation of the densities.
bandgap =
1.519 # [eV]
band gap energy at 0 K
bandgap_alpha = 0.5405e-3
# [eV/K] Varshni parameter alpha for temperature dependent
band gap
bandgap_beta = 204
# [K] Varshni parameter beta for
temperature dependent band gap
defpot_absolute = -9.36
# [eV] absolute deformation potential of the Gamma conduction band: ac,Gamma = av + agap,Gamma
g
= -0.30
# [] g factor (for Zeeman splitting in
magnetic fields)
}
L{
# material parameters for the conduction band valley at the L point of
the Brillouin zone
mass_l =
1.9 # [m0]
longitudinal electron effective mass (parabolic)
mass_t =
0.0754 # [m0]
transversal electron effective mass (parabolic)
# These masses are used for the single-band
Schrödinger equation and for the calculation of the densities.
bandgap =
1.815 # [eV]
band gap energy at 0 K
bandgap_alpha = 0.605e-3
# [eV/K] Varshni parameter alpha for temperature dependent
band gap
bandgap_beta = 204
# [K] Varshni parameter beta for
temperature dependent band gap
defpot_absolute = -4.91
# [eV] absolute deformation potential of the L conduction band: ac,L
= av + agap,L
defpot_uniaxial = 6.5
# [eV] uniaxial deformation potential of the L conduction band
g_l
= 0
# [] longitudinal g factor (for Zeeman
splitting in magnetic fields)
g_t
= 0
# [] transversal g factor (for Zeeman
splitting in magnetic fields)
}
X{
# material parameters for the conduction band valley at the X point of
the Brillouin zone
mass_l =
1.3 # [m0]
longitudinal electron effective mass (parabolic)
mass_t =
0.23 # [m0]
transversal electron effective mass (parabolic)
# These masses are used for the single-band
Schrödinger equation and for the calculation of the densities.
bandgap =
1.981 # [eV]
band gap energy at 0 K
bandgap_alpha = 0.460e-3
# [eV/K] Varshni parameter alpha for temperature dependent
band gap
bandgap_beta = 204
# [K] Varshni parameter beta for
temperature dependent band gap
defpot_absolute = -0.16
# [eV] absolute deformation potential of the X conduction band: ac,X
= av + agap,X
defpot_uniaxial = 14.26
# [eV] uniaxial deformation potential of the X conduction band
g_l
= 0
# [] longitudinal g factor (for Zeeman
splitting in magnetic fields)
g_t
= 0
# [] transversal g factor (for Zeeman
splitting in magnetic fields)
}
}
valence_bands{
# material parameters for the valence band valley at the Gamma point of
the Brillouin zone
bandoffset = 1.346
# average energy of the three valence band edges
Ev,av = (Ehh + Elh + Eso) / 3
#
Note: This energy determines the valence band offset (VBO) between two
materials
#
(with respect to the
average of the three valence band edges!)
#
VBOv,av =
bandoffset (material1) - bandoffset (material2)
HH{ mass = 0.5
# [m0]
heavy hole effective mass (isotropic, parabolic !)
g = 0
} # []
g factor (for Zeeman splitting in magnetic fields)
LH{ mass = 0.068 # [m0]
light hole effective mass (isotropic, parabolic !)
g = 0
}
# []
g factor (for Zeeman splitting in magnetic fields)
SO{ mass = 0.172 # [m0]
split-off hole effective mass (isotropic, parabolic !)
g = 0
}
# [] g factor (for Zeeman splitting in magnetic
fields)
# These masses are used for the single-band
Schrödinger equation and for the calculation of the densities.
defpot_absolute = -1.21
# [eV] absolute deformation potential of the valence bands
(average of the three valence bands): av
defpot_uniaxial_b = -2.0
# [eV] uniaxial shear deformation potential b of the valence
bands
defpot_uniaxial_d = -4.8
# [eV] uniaxial shear deformation potential d of the valence
bands
delta_SO =
0.341 # [eV] spin-orbit
split-off energy Deltaso
}
kp_6_bands{
# Note: The user can either specify the Luttinger
parameters (gamma1 , gamma2 , gamma3 )
# or the L, M, N parameters.
gamma1 = 6.98
# [] Luttinger parameter gamma1
gamma2 = 2.06
# [] Luttinger parameter gamma2
gamma3 = 2.93
# [] Luttinger parameter gamma3
or
L = -16.22
# [hbar2/(2m0)] Dresselhaus
parameter L
M = -3.86
# [hbar2/(2m0)] Dresselhaus
parameter M
N = -17.58
# [hbar2/(2m0)] Dresselhaus
parameter N
}
Important: There are different definitions of the
L and M parameters available in the literature.
nextnano++ definition: L = ( - gamma1
- 4gamma2 - 1 ) * [hbar2/(2m0)]
M = ( 2gamma2 - gamma1 - 1 ) * [hbar2/(2m0)]
alternative definition: L = ( -
gamma1 - 4gamma2 ) * [hbar2/(2m0)]
M = ( 2gamma2 - gamma1
) * [hbar2/(2m0)]
kp_8_bands{
# Note: The user can either specify the modified Luttinger
parameters (gamma1' , gamma2' , gamma3' )
# or the L', M' = M, N' parameters.
S = -2.876
# [-] electron effective mass parameter S for 8-band
k.p
E_P = 28.8
# [eV] Kane's momentum matrix element
# Note: The momentum matrix element parameter P is related
to Ep : P2
= hbar2/(2m0) Ep
# The units of P are
[eV Angstrom] .
B = 0
# [hbar2/(2m0)] bulk inversion
symmetry parameter (B=0 for
diamond-type materials)
gamma1 = ...
# [] Luttinger parameter gamma1'
gamma2 = ...
# [] Luttinger parameter gamma2'
gamma3 = ...
# [] Luttinger parameter gamma3'
or
L = 1.420
# [hbar2/(2m0)] Dresselhaus
parameter L'
M = -3.86
# [hbar2/(2m0)] Dresselhaus
parameter M (same value as 6-band k.p
parameter)
N = 0.056
# [hbar2/(2m0)] Dresselhaus
parameter N'
}
Note: The S
parameter (S = 1 + 2F ) is also defined in the literature as F
where F = (S - 1)/2 , e.g. I. Vurgaftman et al., JAP 89,
5815 (2001).
Mobility models
mobility_constant{...}
# constant mobility model (required)
mobility_masetti{...}
# Masetti mobility model (optional)
mobility_arora{...}
# Arora mobility model (optional)
mobility_minimos{...}
#
MINIMOS mobility model (optional)
mobility_simba{...}
# SIMBA mobility model (optional)
recombination{
SRH
{...}
# Shockley-Read-Hall recombination
Auger {...}
# Auger recombination
radiative{...}
# direct recombination
}
}
The deformation potentials are only used if strain is
present. They enter the k.p equations. If the single-band approximation
is used, the deformation potentials are used to shift and split the conduction
and valence band edges.
The g factors (g, g_l, g_t )
are optional. If the g factors are specified in the input file, the database
value for the g factors are overwritten with the value in the input file. If no
g factors are present in the input file or in the database, a g factor of 2 is
assumed by default.
Note: In Si, Ge and GaP we have a
Delta valley instead of the X conduction band valley:
Delta{
# material parameters for the conduction band valley at the X point of
the Brillouin zone
mass_l =
0.916 # [m0]
longitudinal electron effective mass (parabolic)
mass_t =
0.190 # [m0]
transversal electron effective mass (parabolic)
# These masses are used for the single-band
Schrödinger equation and for the calculation of the densities.
bandgap =
1.17 # [eV]
band gap energy at 0 K
bandgap_alpha = 0.4730e-3
# [eV/K] Varshni parameter alpha for temperature dependent
band gap
bandgap_beta = 636
# [K] Varshni parameter beta for
temperature dependent band gap
defpot_absolute = 3.40
# [eV] absolute deformation potential of the X conduction band: ac,Delta
= av + agap,Delta
defpot_uniaxial = 9.16
# [eV] uniaxial deformation potential of the X conduction band
position =
0.85 #
0.85 for Delta
instead of 1.0 for X
valley
# At present, this value does not enter into any of
the equations.
g_l
= 0
# [] longitudinal g factor (for Zeeman
splitting in magnetic fields)
g_t
= 0
# [] transversal g factor (for Zeeman
splitting in magnetic fields)
}
}
Three options are possible for the interpolation of binary material
parameters in ternary alloys (AxB1-xC
or CAxB1-x):
- TABC = x BAC + (1
- x) BBC
(linear interpolation)
For the lattice constants, this is called "Vegard's law".
- TABC = x BAC + (1
- x) BBC
- x (1- x) CABC (quadratic
interpolation) where CABC is the bowing parameter
For CABC
= 0 (which is the default), linear interpolation is used.
(In eq. (E.3) in the PhD thesis of T. Zibold the last term includes a '+'
sign instead of the '- ' sign, i.e. + x (1- x) CABC
instead of - x (1- x) CABC.)
- TABC = x BAC + (1
- x) BBC
- x (1- x) CABC(x) (cubic interpolation)
Note that here the bowing parameter CABC is a function
of the alloy composition x.
Examples:
######### indium gallium arsenide (InGaAs) ############################
ternary_zb {
name =
"In(x)Ga(1-x)As"
valence = III_V
binary_x = InAs
binary_1_x = GaAs
conduction_bands{
Gamma{ mass = 0.0091
} # Bowing parameter CABC for the electron
effective mass at the Gamma point in units of [m0] .
}
...
kp_8_bands{
S = 3.54
# S = 1 + 2F = 2 * 1.77 (Vurgaftman1)
# Note: The S
parameter (S = 1 + 2F ) is also defined in the literature as F
where F = (S - 1)/2 , e.g. I. Vurgaftman et al., JAP 89,
5815 (2001).
#
Consequently, as one can show, the bowing parameter for S
has the value 2 * F .
#
For In(x)Ga(1-x)As
Vurgaftman lists the bowing parameter F = 1.77 .
...
}
} : {
# It is possible to define a synonym of several synonyms for this
material InxGa1-xAs.
name =
"Ga(1-x)In(x)As"
# Ga1-xInxAs
valence = III_V
binary_x = InAs
binary_1_x = GaAs
} : {
name =
"Ga(x)In(1-x)As"
# GaxIn1-xAs
valence = III_V
binary_x = GaAs
binary_1_x = InAs
} : {
name =
"In(1-x)Ga(x)As"
# In1-xGaxAs
valence = III_V
binary_x = GaAs
binary_1_x = InAs
}
Note: If no bowing parameters are specified for the ternary, linear
interpolation is assumed.
Special case: Bowing parameter depends on alloy concentration x
Note: To describe the band gap bowing at the Gamma point in AlxGa1-xAs,
a linear or even a quadratic interpolation is not sufficient.
Here, the bowing parameter is not constant, it depends on the alloy composition
x .
Thus, this bowing parameter is given by: CABC(x )
= -0.127 + 1.310 * x
(Table XII., I. Vurgaftman et al., J. Appl. Phys. 89, 5815 (2001))
In order to describe such a material, we introduced a new type of material:
ternary2_zb
For
ternary2_zb , bowing is not symmetric in x and 1-x.
The nextnano++ implementation is the following: Use
ternary2_zb{} (and
bowing_zb{} ) instead of
ternary_zb{} .
######### aluminum gallium arsenide (AlGaAs) ##########################
ternary2_zb{
name =
"Al(x)Ga(1-x)As"
# AlxGa1-xAs
valence = III_V
binary_x = AlAs
binary_1_x = GaAs
bowing_x = AlGaAs_Bowing_Ga
# Bowing parameter CABC(x) for x=1
bowing_1_x = AlGaAs_Bowing_Al
# Bowing parameter CABC(x) for x=0
}
bowing_zb{
name =
"AlGaAs_Bowing_Ga" #
AlxGa1-xAs (x=1 )
valence = III_V
conduction_bands{
Gamma{ bandgap =
-0.127 + 1.310 * 1 } # Bowing parameter CABC(x=1 )
= -0.127 + 1.310 * x = 1.183
L { bandgap =
0
} # Bowing parameter CABC
X { bandgap =
0.055
} # Bowing parameter CABC
}
valence_bands{
delta_SO = 0
# Bowing parameter CABC
}
}
bowing_zb{
name =
"AlGaAs_Bowing_Al" # AlxGa1-xAs
(x=0 )
valence = III_V
conduction_bands{
Gamma{ bandgap =
-0.127 + 1.310 * 0 } # Bowing parameter CABC(x=0 )
= -0.127 + 1.310 * x = -0.127
L { bandgap =
0
} # Bowing parameter CABC
X { bandgap =
0.055
} # Bowing parameter CABC
}
valence_bands{
delta_SO = 0
# Bowing parameter CABC
}
}
Note: If no bowing parameters are specified for bowing_zb ,
linear interpolation for
ternary2_zb is assumed.
The same (i.e.
ternary2_zb ) is also used for the band gap at the Gamma point of AlxGa1-xSb
and to the diluted nitrid material GaAs1-xNx.
Example
In our database AlxGa1-xAs
is considered a
ternary2_zb because its bowing parameter CABC(x )
for the bandgap at the Gamma point depends on the alloy composition x
by the formula:CABC(x )
= -0.127 + 1.310 * x
(Table XII., I. Vurgaftman et al., J. Appl. Phys. 89, 5815 (2001))
CABC(x )where CABC(0 )and CABC(1 )For this reason, for describing the
bandgap bowing parameter for this material we require to specify
in the
AlGaAs_Bowing_Ga
block the value of
AlGaAs_Bowing_Ga CABC(1 )
+ β
-0.127 + 1.310 = 1.183 #
Bowing parameter CABC(x) for x=1 and for
AlGaAs_Bowing_Al
AlGaAs_Bowing_Al CABC(0 )
=
-0.127 # Bowing parameter CABC(x) for x=1
Then, the final result for the bandgap is:AlxGa1-xAs
=
Bandgap(AlAs)(GaAs)CABC(x )
=(GaAs)
AlGaAs_Bowing_Ga
AlGaAs_Bowing_Al
=
Alternative: An easier and much more intuitive solution would be to overwrite
the respective bowing material parameter in the input file by defining a formula
which uses the alloy concentration as a variable.
This is meanwhile possible. (To do: Add a tutorial on this topic.)
Material parameters in quaternary materials: Interpolation of binary material
parameters including the bowing parameters that are used for the ternary
constituents
A brief introduction to quaternaries is shown in this Powerpoint presentation
(Quaternaries.pptx,
Quaternaries.pdf).
Three different quaternaries can be constructed where a) and c) are basically
identical from an algorithmic point of view:
a) AxByC1-x-yD,
e.g. AlxGayIn1-x-yAs
(III-III-III-V quaternaries)
b) ABxCyD1-x-y,
e.g. AlAsxSbyP1-x-y
(III-V-V-V quaternaries)
c) AxB1-xCyD1-y,
e.g. GaxIn1-xAsyP1-y
(III-III-V-V quaternaries)
Three options are possible for the interpolation of binary material
parameters in quaternary alloys (AxB1-xC
or CAxB1-x):
- c) QABCD = x y BAC + (1-x)
y BBC + (1-x)
(1-y) BBD + x (1-y) BAD +
(linear interpolation)
+ x (1-x) y CABC +
(1-x) y (1-y) CBCD + x (1-x)
(1-y) CABD + x y (1-y) CACD
The second line introduces a quadratic
interpolation where CABC, CABD, CBCD
are the bowing parameters of the ternary constituents. For CABC
= CABD = CACD = 0 (which is the default), linear interpolation is used.
Constituent limiting binaries and ternaries are defined by
the following constraints:
binary1: x = 1, y = 1
binary2: x = 0, y = 1
binary3: x = 0, y = 0
binary4: x = 1, y = 0
ternary12: y = 1
ternary23: x = 0
ternary34: y = 0
ternary14: x = 1
Example:
######### indium aluminum arsenide antimonide (InAlAsSb) ##############
quaternary4_zb { name =
"In(x)Al(1-x)As(y)Sb(1-y)" valence =
III_V binary1 =
InAs
# binary2 = AlAs
# binary3 = AlSb
# binary4 = InSb
# ternary12 = "In(x)Al(1-x)As"
# Note: In(x)Al(1-x)As
and
In(1-x)Al(x)As are equivalent ternary23 =
"AlAs(x)Sb(1-x)" #
as can be seen in the above equation. ternary34 =
"Al(x)In(1-x)Sb" #
So one has to use the name that is already defined in the database. ternary14 =
"InAs(x)Sb(1-x)" }
Quinternaries
########################### QUINTERNARY ZINCBLENDE #######################
# alloys of
the type A(x)B(y)C(z)D(1-x-y)
quinternary_zb : _alloy_zb{ TYPE=group OPT=1
binary_a{
TYPE=string } # A
binary_b{
TYPE=string } # B
binary_c{
TYPE=string } # C
binary_d{
TYPE=string } # D
ternary_ab{ TYPE=string } # A(x)B(1-x)
ternary_ac{ TYPE=string } # A(x)C(1-x)
ternary_ad{ TYPE=string } # A(x)D(1-x)
ternary_bc{ TYPE=string } # B(x)C(1-x)
ternary_bd{ TYPE=string } # B(x)D(1-x)
ternary_cd{ TYPE=string } # C(x)D(1-x)
quaternary_abc{ TYPE=string } # A(x)B(y)C(1-x-y)
quaternary_abd{ TYPE=string } # A(x)B(y)D(1-x-y)
quaternary_acd{ TYPE=string } # A(x)C(y)D(1-x-y)
quaternary_bcd{ TYPE=string } # B(x)C(y)D(1-x-y)
# from
base group, optional quinternary bowing parameters
}
# alloys of
the type A(x)B(y)C(1-x-y)D(z)E(1-z)
quinternary6_zb : _alloy_zb{ TYPE=group OPT=1
binary_a_d{ TYPE=string } # AD
binary_b_d{ TYPE=string } # BD
binary_c_d{ TYPE=string } # CD
binary_a_e{ TYPE=string } # AE
binary_b_e{ TYPE=string } # BE
binary_c_e{ TYPE=string } # CE
ternary_ab_d{ TYPE=string } # A(x)B(1-x)D
ternary_ac_d{ TYPE=string } # A(x)C(1-x)D
ternary_bc_d{ TYPE=string } # B(x)C(1-x)D
ternary_ab_e{ TYPE=string } # A(x)B(1-x)E
ternary_ac_e{ TYPE=string } # A(x)C(1-x)E
ternary_bc_e{ TYPE=string } # B(x)C(1-x)E
ternary_a_de{ TYPE=string } # AD(x)E(1-x)
ternary_b_de{ TYPE=string } # BD(x)E(1-x)
ternary_c_de{ TYPE=string } # CD(x)E(1-x)
quaternary_abc_d{ TYPE=string } # A(x)B(y)C(1-x-y)D
quaternary_abc_e{ TYPE=string } # A(x)B(y)C(1-x-y)E
quaternary_ab_de{ TYPE=string } # A(x)B(1-x)D(y)E(1-y)
quaternary_ac_de{ TYPE=string } # A(x)C(1-x)D(y)E(1-y)
quaternary_bc_de{ TYPE=string } # B(x)C(1-x)D(y)E(1-y)
# from
base group, optional quinternary bowing parameters
}
#
two-parameter alloys A(x)B(1-x)C(y)D(1-y)E(z)F(1-z)
quaternary8_zb : _alloy_zb{ TYPE=group OPT=1
binary_a_c_e{ TYPE=string } # ACE
binary_b_c_e{ TYPE=string } # BCE
binary_a_d_e{ TYPE=string } # ADE
binary_b_d_e{ TYPE=string } # BDE
binary_a_c_f{ TYPE=string } # ACF
binary_b_c_f{ TYPE=string } # BCF
binary_a_d_f{ TYPE=string } # ADF
binary_b_d_f{ TYPE=string } # BDF
ternary_ab_c_e{ TYPE=string } # A(x)B(1-x)CE
ternary_ab_d_e{ TYPE=string } # A(x)B(1-x)DE
ternary_ab_c_f{ TYPE=string } # A(x)B(1-x)CF
ternary_ab_d_f{ TYPE=string } # A(x)B(1-x)DF
ternary_a_cd_e{ TYPE=string } # AC(x)D(1-x)E
ternary_b_cd_e{ TYPE=string } # BC(x)D(1-x)E
ternary_a_cd_f{ TYPE=string } # AC(x)D(1-x)F
ternary_b_cd_f{ TYPE=string } # BC(x)D(1-x)F
ternary_a_c_ef{ TYPE=string } # ACE(x)F(1-x)
ternary_b_c_ef{ TYPE=string } # BCE(x)F(1-x)
ternary_a_d_ef{ TYPE=string } # ADE(x)F(1-x)
ternary_b_d_ef{ TYPE=string } # BDE(x)F(1-x)
quarternary_ab_cd_e{ TYPE=string } # A(x)B(1-x)C(y)D(1-y)E
quarternary_ab_cd_f{ TYPE=string } # A(x)B(1-x)C(y)D(1-y)F
quarternary_ab_c_ef{ TYPE=string } # A(x)B(1-x)CE(y)F(1-y)
quarternary_ab_d_ef{ TYPE=string } # A(x)B(1-x)DE(y)F(1-y)
quarternary_a_cd_ef{ TYPE=string } # AC(x)D(1-x)E(y)F(1-y)
quarternary_b_cd_ef{ TYPE=string } # BC(x)D(1-x)E(y)F(1-y)
# from
base group, optional quinternary bowing parameters
}
|