|
| |
Material parameters for binary zincblende materials
Data base
Valid keywords for the parameters of the default parameter data base are
listed in db_keys.in.
This is the place to enter new keywords if one wants to add new parameters. In
principle, one should only enter into this data base keywords, which are marked
as 'required'. Through this it is warranted that corresponding
entries in the data base actually do occur. (The input
parser checks this, but only their existence!)
Additionally, the new keywords have to be entered into
keywords.in.
For zincblende materials the keyword is $binary_zb_default.
On this basis, the entries in the data base
database.in
have to be complemented for the newly declared values for
all affected known materials. This also includes the adaption of changes in the
data types of already existing parameters (e.g. double -> double_array).
The structure of the data, which the values of the material
parameters are later transferred to, are declared in a module called
mod_type_binary_zb_dflt.
If new parameters are introduced (see above) the
corresponding data structure has to be changed consequently. This affects
directly the following sub programs:
Additionally, under the circumstances of susceptible changes
of the data type the following sub programs or FUNCTIONs respectively are
affected:
read_alloy_data.f90
needs module type material info only for input of material number, alloy
FUNCTION number etc.
read_alloy_info.f90
needs module type material info only for input of material number, alloy
FUNCTION number etc.
read_doping_data.f90
needs module type material info only for input of material number, doping
FUNCTION number etc.
cb_degeneracy
provides the degeneracy factor(s) of the valley(s) of the conduction band
minima
cb_energy
FUNCTION, real: provides the energetic position of the specified conduction
band minimum
cb_masses
FUNCTION, real, double, array, pointer: provides longitudinal and transverse
masses for specified conduction band minimum (3 masses)
cb_nonpar
FUNCTION, real: provides nonparabolicity parameters for specified conduction
band minimum: only one per minimum
st_dielc
FUNCTION, real, double, array, pointer: gives values for static dielectricity
constant (3 numbers)
vb_degeneracy
FUNCTION, integer: provides degeneracy factor for specified valence band
minimum
vb_energy
FUNCTION, real: provides energetic position for specified valence band minimum
vb_masses
FUNCTION, real, double, array, pointer: provides longitudinal and transverse
masses for specified valence band minimum (3 masses)
vb_nonpar
FUNCTION, real: provides nonparabolicity parameters for specified valence
band minimum: pro only one per minimum
num_cbands
FUNCTION, integer: provides number of conduction band minima that are
effective
num_vbands
FUNCTION, integer: provides number of valence band minima that are effective
op_dielc
FUNCTION, real: provides optical dielelectricity constant (DK) of the material
lattice_co
FUNCTION, real, double, array, pointer: provides values for lattice constants
of the volume of the material
band_shift
FUNCTION, real: provides an eigenvalue, around that all bands can be shifted
in case of need
abs_defpot_vb
FUNCTION, real: provides absolute deformation potential for the valence band
abs_defpot_cbs
FUNCTION, real, double, array, pointer: provides absolute deformation
potential for conduction band minima
uniax_vb_defpots FUNCTION, real, double, array, pointer: provides valence band deformation
potential for uniaxial stress
uniax_cb_defpots FUNCTION, real, double, array, pointer: provides conduction band deformation
potential for uniaxial stress
piezo_constants
FUNCTION, real, double, array, pointer: provides piezoelectric constants of
the material
elastic_constants FUNCTION, real, double, array, pointer: provides elastic constants of the
material
kp_6x6_params
FUNCTION, real, double, array, pointer: provides kp parameters for valence
band 6x6 model (3 valence bands)
kp_8x8_params
FUNCTION, real, double, array, pointer: provides kp parameters for 8x8
model (3 valence bands, 1 conduction band)
out_in.f90
(for output purposes data structures are partly accessed directly; however,
most of the accesses occur via the above FUNCTIONs)
3D_guenther_subroutines.f90 (maps material and geometry
variables onto Stefan's grid, maybe not affected any more in the future)
Presumably not affected directly:
For the new parameters new sub programs have to be provided appropriately,
that are returning the parameter values if requested.
Interface states - inquiry functions
---------------------------------------------------------
Contained in:
if_state_inquiry_funcs.f90
---------------------------------------------------------
contains various FUNCTIONs to call for interface numbers, states associated with
them, state parameters ...
FUNCTION number_of_if_states(mat1,mat2)
RESULT (number) ! returns zero in case that
no states are defined for this interface
FUNCTION interface_number (mat1,mat2) RESULT (number)
!
returns just the interface number as defined in input, otherwise zero
FUNCTION if_state_numbers(interface_number) RESULT (state_numbers)
!
pointer, contains state numbers
FUNCTION num_of_if_state_levels(interface_state_number) RESULT (number) !
number of interface staes present at actual interface
FUNCTION if_state_energies (if_st_num) RESULT (energies) !
energy levels for given state number
FUNCTION if_state_degeneracies(if_st_num) RESULT (degenercies) !
degeneracies of levels for given state number
FUNCTION if_state_type (if_st_num) RESULT (name) !
returns state-type = >trap< or >fixed<
FUNCTION if_state_density(interface_state_number) RESULT (density) !
returns density of given state
---------------------------------------------------------
Prior call to
read_mat_interfaces.f90 required for parameters
Mapping arrays and parameters of states stored in modules
defined in interface_data.f90
=========================================================
---------------------------------------------------------
interface_data.f90
---------------------------------------------------------
MODULE mod_mat_interfaces ! maps material pair to interface number
MODULE mod_interface_to_state_num
! state numbers defined for each interface
MODULE mod_if_state_params
! state parameters
---------------------------------------------------------
Type definitions within modules
Data structures allocated/filled by read_mat_interfaces.f90
=========================================================
MODULE
mod_get_strain_tensor_cxyz
CONTAINS
FUNCTION get_strain_tensor_cxyz(grid_point,symm) RESULT(result_strain_tensor_cxyz)
---------------------------------------------------------
REAL(8),DIMENSION(3,3) ::
result_strain_tensor_cxyz
---------------------------------------------------------
grid_point grid_point is scalar grid point number
symm (true,false) INPUT, flag whether displacement has to be assumed symmetric (true)
or not
result_strain_tensor_cxyz is given in cartesian crystal fixed coordinate system
=========================================================
----------------------------------------------------------------------------
MODULE
mod_piezo_polarization_xyz
CONTAINS
FUNCTION piezo_polarization_xyz (grid_point,symm) RESULT(piezo_polar_xyz)
---------------------------------------------------------
REAL(8),DIMENSION(3)
:: piezo_polar_xyz
! RESULT
---------------------------------------------------------
grid_point grid_point is scalar grid point number
symm (true,false) INPUT, flag whether displacement has to be assumed symmetric (true)
or not (used in call for strain tensor)
Calculations are done in cxyz, then the piezo electrical polarization is
transformed into xyz (simulation coordinate system)
===================
----------------------------------------------------------------------------
MODULE
mod_piezo_polarization_cxyz
CONTAINS
FUNCTION piezo_polarization_cxyz (grid_point,symm) RESULT(piezo_polar_cxyz)
---------------------------------------------------------
REAL(8),DIMENSION(3)
:: piezo_polar_cxyz
! RESULT
---------------------------------------------------------
grid_point grid_point is scalar grid point number
symm (true,false) INPUT, flag whether displacement has to be assumed symmetric (true)
or not (used in call for strain tensor)
Calculations are done in cxyz (crystal fixed cartesian coordinate system)
===================
----------------------------------------------------------------------------
MODULE
mod_piezo_constants
CONTAINS
FUNCTION piezo_constants(material_number,alloyc) RESULT (piezoco)
----------------------------------------------------------------------------
REAL(8),DIMENSION(:),POINTER :: piezoco
Result is vector containing piezo electric constants of given material
Ordering:
ZB: NN , NN , e14
WZ: e33, e31, e15
=========================================================
----------------------------------------------------------------------------
MODULE
mod_elastic_constants
CONTAINS
FUNCTION elastic_constants(material_number,alloyc) RESULT (elasticco)
REAL(8),DIMENSION(:),POINTER :: elasticco
Result is vector containing elastic constants of given material
Ordering:
ZB: c11,c12,c44
WZ: C11,C12,C13,C33,C44
=========================================================
---------------------------------------------------------
MODULE
mod_qm_cluster_grid_points
!
USE module_type_cluster_grid_points
! type definition in file type_info.f90
TYPE(type_cluster_grid_points),DIMENSION(:),POINTER::qm_cluster_grid_points
! qm_cluster_grid_points()%grid_points()
LOGICAL
,DIMENSION(:),POINTER::cluster_active
!
INTEGER
,DIMENSION(:),POINTER::qm_boundary_condition
!
INTEGER
::n_qm_clusters_defined
!
END MODULE mod_qm_cluster_grid_points
!
!-----------------------------------------------------------!
=========================================================
--------------------------------------------------------------
get_quantum_clusters.f90
CONTAINS
SUBROUTINE get_quantum_clusters(domain_boundaries)
USE mod_check_quantum_regions
USE mod_check_quantum_clusters
USE mod_cluster_quantum_regions
************************************************************************!
CALL check_quantum_regions(domain_boundaries,quantum_region_priorities)
CALL
check_quantum_clusters(quantum_region_priorities,num_of_quantum_clusters,quareg_to_cluster,warning)
CALL
cluster_quantum_regions(domain_boundaries,quantum_region_priorities,num_of_quantum_clusters,quareg_to_cluster,warning)
=========================================================
check_quantum_regions.f90
check_quantum_clusters.f90
cluster_quantum_regions.f90
=========================================================
quantum_cluster_grid_points.f90
This file contains modules with data type definitions and data structures
MODULE
mod_qm_cluster_grid_points
MODULE
mod_type_qm_model_specs
MODULE
mod_qm_models
MODULE
mod_qmods_sorted
MODULE
mod_sort_quantum_models which contains SUBROUTINE
sort_quantum_models
OUTPUT to
USE mod_qmods_sorted
USE mod_qm_models
These MODULEs are contained in quantum_cluster_grid_points.f90
!----------------------------------------------------------------------------!
! INTEGER
:: n_cb_efm
! OUTPUT to mod_qmods_sorted - number of effective mass models c-band
! INTEGER
:: n_cb_8kp
! OUTPUT to mod_qmods_sorted - number of 8x8kp models for gamma min c-band
! INTEGER
:: n_vb_efm
! OUTPUT to mod_qmods_sorted - number of effective mass models v-band
! INTEGER
:: n_vb_8kp
! OUTPUT to mod_qmods_sorted - number of 8x8kp models for valence band
! INTEGER
:: n_vb_6kp
! OUTPUT to mod_qmods_sorted - number of 6x6kp models for valence band
! INTEGER, DIMENSION(:), POINTER :: cb_efm_to_qm_modnum
! OUTPUT to mod_qmods_sorted - contains quantum model numbers to be used
! INTEGER, DIMENSION(:), POINTER :: cb_8kp_to_qm_modnum
! OUTPUT to mod_qmods_sorted - contains quantum model numbers to be used
! INTEGER, DIMENSION(:), POINTER :: vb_efm_to_qm_modnum
! OUTPUT to mod_qmods_sorted - contains quantum model numbers to be used
! INTEGER, DIMENSION(:), POINTER :: vb_8kp_to_qm_modnum
! OUTPUT to mod_qmods_sorted - contains quantum model numbers to be used
! INTEGER, DIMENSION(:), POINTER :: vb_6kp_to_qm_modnum
! OUTPUT to mod_qmods_sorted - contains quantum model numbers to be used
!----------------------------------------------------------------------------!
The detailed specifications for all quantum models are stored in
MODULE mod_qm_models
USE mod_type_qm_model_specs
TYPE(type_qm_model), DIMENSION(:), POINTER :: qm_models(quantum
model number)%.....
END MODULE mod_qm_models
contained in
quantum_cluster_grid_points.f90. The data type definition of qm_models()%...
is also given in the file, mentioned above.
|