|
| |
Doping
Doping concentrations are stored in MODULE
doping.
See also:
-
$doping-function
-
$impurity-parameters
number-of-energy-levels <=>
num_levelsV
energy-levels-relative <=> E_V
degeneracy-of-energy-levels <=> g_V
-
MODULE
doping
num_don_doping -->
number of donors
(on whole region)
num_acc_doping -->
number of
acceptors
(on whole region)
max_don_levels -->
maximum number of
donor levels
max_acc_levels -->
maximum number of
acceptor levels
dopingV (1..lengvecV)
contains for each point on Stefan's grid
information of TYPE dop_type
num_donors number of dopants on that point
num_acceptors
par_donV(1..num_donors)
par_accV(1..num_acceptors) -->
contains doping number (1..num_don_doping + 1..num_acc_doping)
conc_donV,con_accV --> doping concentration in SI units [1/m^3]
Note: Arrays only allocated if num_donors/num_acceptors > 0.
g_V(1..num_doping,1..max_levels) ... g-factors
(= degeneracies) for dopants
E_V(1..num_doping,1..max_levels) ... ionization
energies in SI units [J]
usually positive for
donors and acceptors
ionization energy
relative to band edge!
num_levelsV(1..num_doping) ... number of actual
energy levels
Note:
num_doping = num_don_doping + num_acc_doping
INTEGER ::
num_don_doping,max_don_levels,
&
num_acc_doping,max_acc_levels, &
num_dopants,max_levels
TYPE :: dop_type
INTEGER :: num_donors, num_acceptors
REAL(8) ,DIMENSION(:) ,POINTER :: conc_donV , conc_accV
INTEGER ,DIMENSION(:) ,POINTER ::
par_donV , par_accV
END TYPE dop_type
TYPE (dop_type),DIMENSION(:) ,ALLOCATABLE ::
dopingV
REAL(8) ,DIMENSION(:,:),POINTER ::
g_V,E_V
INTEGER ,DIMENSION(:) ,POINTER :: num_levelsV
The details of doping are provided by the
subroutines in MODULE
input_block_three:
SUBROUTINE
number_of_dopants(num_don_doping,num_acc_doping, &
max_don_levels,max_acc_levels)
Output:
num_don_doping --> number of
donors
num_acc_doping --> number of
acceptors
num_trp_doping --> number of
traps
max_don_levels --> maximum
number of donor levels
max_acc_levels --> maximum
number of acceptor levels
max_trp_levels --> maximum number of
trap levels
SUBROUTINE dopant_characteristics(num_dop,num_levels,g_V,E_V)
Returns for given dopant [num_don] the number of
energy levels.
g-factors and energies are returned in
g_V(1..num_levels) and E_V(1..num_levels) (relative to band edge).
E_V is the value from the input file, i.e. in
scaled units,
so E_V * e0 is the energy in SI units.
Note: E_V is usually positive, i.e. the absolute
energy level is
... bandedge - E_V
for donors
... bandedge + E_V for
acceptors
SUBROUTINE get_doping(i,num_don,num_acc,index_donV,index_accV,dop_donV,dop_accV)
Input:
i -->
point number on material grid
Output:
num_don --> number of
donators on that
point
num_acc --> number of
acceptors on
that point
index_donV --> contains in (1..num_don) the
donor numbers
index_accV --> contains in (1..num_acc) the
acceptor numbers
dop_donV --> contains in (1..num_don)
the
donor concentrations
dop_accV --> contains in (1..num_acc)
the acceptor concentrations
Note:
All dopants are numbered from 1 ... number_of_dopants.
index_donV(k) contains for
donor
k (k=1,...,num_don) the dopant number (within 1... number of dopant
num_dop)
index_accV(k) contains for
acceptor
k (k=1,...,num_acc) the dopant number (within 1... number of dopant
num_dop)
number of dopant = num_don + num_acc + num_trp
Note:
For donors and acceptors only one energy level is allowed up to now.
Traps will be implemented later on.
The setup of the doping is done in MODULE
material_data_block_three.
|