|
| |
Input of k.p
parameters
MODULE
input_kp_parameters
contains subroutines which provide the k.p parameters:
subroutine get_8x8_kp_zb_parameters
subroutine get_6x6_kp_zb_parameters
subroutine get_8x8_kp_wz_parameters
subroutine get_6x6_kp_wz_parameters
subroutine get_kp_lattice_type
The definition of the k.p Hamiltonian is
described in detail in the according script:
As units are assumed: [eV] for the energy,
[1/Angstrom] for the k vector
The parameters provided by these functions must be
correctly dimensioned.
!------------------------------------------------------------
subroutine
get_8x8_kp_zb_parameters(i,L,M,N,B,P,s,d,Ec,Ev)
!------------------------------------------------------------
! i point on material grid
!
! returns k.p parameters
! [without strain]
!
!--------------------------------
! See script for definition of the k.p Hamiltonian.
! Units for setup are: eV, AA
! The parameters provided by this function must be
consistent with the
! definition of the Hamiltonian and the units [eV, AA]
!
! Note: Ec here DOES NOT include the shift due to strain.
!-----------------------------------------------------------------------------
!----------------------------------------------------
subroutine get_6x6_kp_zb_parameters(i,L,M,N,P,d,Ev)
!----------------------------------------------------
! i point on material grid
!
! returns k.p parameters
! [without strain]
!
!--------------------------------
! See script for definition of the k.p Hamiltonian.
! Units for setup are: eV, AA
! The parameters provided by this function must be
consistent with the
! definition of the Hamiltonian and the units [eV, AA]
!-----------------------------------------------------------------------------
!------------------------------------------------------------------------------
subroutine
get_8x8_kp_wz_parameters(i,L1,L2,M1,M2,M3,N1,N2,B1,B2,B3,P1,P2,s1,s2,d1,d2,d3,Ec,Ev)
!------------------------------------------------------------------------------
! i point on material grid
!
! returns k.p parameters
! [without strain]
!
!
!--------------------------------
! See script for definition of the k.p Hamiltonian.
! Units for setup are: eV, AA
! The parameters provided by this function must be
consistent with the
! definition of the Hamiltonian and the units [eV, AA]
!
! Note: Ec here DOES NOT include the shift due to
strain.
!---------------------------------------------
!-------------------------------------------------------
subroutine
get_6x6_kp_wz_parameters1D(i,L1,L2,M1,M2,M3,N1,N2,P1,P2,d1,d2,d3,Ev)
!-------------------------------------------------------
! i point on material grid
!
! returns k.p parameters
! [without strain]
!
!
!--------------------------------
! See script for definition of the k.p Hamiltonian.
! Units for setup are: eV, AA
! The parameters provided by this function must be
consistent with the
! definition of the Hamiltonian and the units [eV, AA]
!-----------------------------------------------------------------------------
Deformation potentials
The subroutine get_deformation_pot_vb in MODULE
input_deformation_pot
provides
the deformation potentials for wurtzite and
zincblende.
Thus for zincblende it is: l1=l2, m1=m2=m3, n1=n2
Setup of k.p parameters
The k.p material data (k.p
parameters) are stored in MODULE
kp_parameters:
They are defined in subroutine setup_kp_parameters.
Please note that E_c already contains
the shift due to strain. They are stored on material grid points for each
k.p region.
!-----------------------------------------------------------------------------
MODULE
kp_parameters
!-----------------------------------------------------------------------------
!
! Units here: eV, AA !!!
! -----------
!
! 8x8_kp_zb :
!
! kp_parV(1) = L
! kp_parV(2) = M
! kp_parV(3) = N
! kp_parV(4) = B
! kp_parV(5) = P
! kp_parV(6) = s
! kp_parV(7) = E_c
! kp_parV(8) = E_v
! kp_parV(9) = d
!
! dim_8x8_zb=9
!
!
! 6x6_kp_zb :
!
! kp_parV(1) = L
! kp_parV(2) = M
! kp_parV(3) = N
! kp_parV(4) = E_v
! kp_parV(5) = d
!
!
! 8x8_kp_wz :
!
! kp_parV( 1) = L1
! kp_parV( 2) = L2
! kp_parV( 3) = M1
! kp_parV( 4) = M2
! kp_parV( 5) = M3
! kp_parV( 6) = N1
! kp_parV( 7) = N2
! kp_parV( 8) = B1
! kp_parV( 9) = B2
! kp_parV(10) = B3
! kp_parV(11) = P1
! kp_parV(12) = P2
! kp_parV(13) = s1
! kp_parV(14) = s2
! kp_parV(15) = E_c
! kp_parV(16) = E_v
! kp_parV(17) = d1
! kp_parV(18) = d2
! kp_parV(19) = d3
!
!
! 6x6_kp_wz :
!
! kp_parV( 1) = L1
! kp_parV( 2) = L2
! kp_parV( 3) = M1
! kp_parV( 4) = M2
! kp_parV( 5) = M3
! kp_parV( 6) = N1
! kp_parV( 7) = N2
! kp_parV( 8) = E_v
! kp_parV( 9) = d1
! kp_parV(10) = d2
! kp_parV(11) = d3
!
! Note: The parameters here must be consistent with
the definition in
! the scriptum!!!.
As unit are assumed [eV] and [AA].
!
! E_c here
includes the shift of the conduction band due to strain, i.e.
! E_c = E_c0 +
a_abs*tr(strain_tensor)
!
!-------------------------------------
!
! latticeC = '8x8_wz'
!
'6x6_wz'
!
'8x8_zb'
!
'6x6_zb'
!
!-------------------------------------
!
! Possible combinations are:
!
! electrons
holes
!
! sg_1b,class
sg_1b,class
! sg_1b,class
kp_8b
---> 8x8_kp parameters
! sg_1b,class
kp_6b
---> 6x6_kp parameters
! kp_8b
sg_1b,class ---> 8x8_kp parameters
! kp_8b
kp_8b
---> 8x8_kp parameters
!
! Note: Treating electrons within 8x8_kp and holes
within 6x6_kp is not allowed!
!
!-------------------------------------
!
! k.p parameters are stored on material points.
!
! kp_parametersM(1..num_quantum_regions)
contains in
! kp_parametersM(i)%points_guentherV(num_point)%
...
! for quantum_region
i and point number num_point the relevant k.p parameters.
!
! (corresponds to
map_qr_guentherV in MODULE gitter)
!
! kp_parametersM are only allocated if number of
quantum regions > 0.
!----------------------------------------------------------------------------
TYPE :: point_kp
REAL(8),DIMENSION(:),POINTER ::
kp_parV
CHARACTER(len=6) :: latticeC
END TYPE point_kp
TYPE :: all_kp
TYPE (point_kp),DIMENSION(:),POINTER ::
points_guentherV
END TYPE all_kp
TYPE (all_kp) ,DIMENSION(:),POINTER ::
kp_parametersM
INTEGER,PARAMETER :: dim_8x8_zb=9, dim_6x6_zb=5, dim_8x8_wz=19,
dim_6x6_wz=11
END MODULE
kp_parameters
|