Up
| | This is the old documentation.
Here's the link to the new documentation.
currents{}
Specifications for the
current equation
currents{
Mobility models
mobility_model = constant
#
constant mobility model
(default)
= masetti #
Masetti mobility model
= arora
#
Arora mobility model
= minimos #
MINIMOS 6 mobility model
Model for velocity saturation (The parameters
derive from an extended Canali model.)
The driving force F of the respective carriers is
currently the gradient of the respective quasi-Fermi level.
Setting alpha to zero and beta to 2 will yield the
Hänsch model.
Note that convergence may be much more difficult to
achieve when high field saturation (hfs) is enabled. Therefore, this feature
should remain disabled by default.
high_field_saturation{
#
(optional) ==>
experimental feature (use with care!)
alpha_electrons
= 0.0
#
>= 0.0
beta_electrons
= 2.0
#
>= 0.001
vsat_electrons
= 1.0
#
>= 1.0
alpha_holes
= 0.0
#
>= 0.0
beta_holes
= 2.0
#
>= 0.001
vsat_holes
= 1.0
#
>= 1.0
}
mu(F) = (alpha + 1) mulow / [
alpha + ( 1 + (
(alpha + 1) mulow
Fhfs / vsat )^beta
)^1/beta )
]
mulow : low field mobility
Recombination models (required)
recombination_model{
SRH
= yes/no
#
(optional, default: no )
Shockley-Read-Hall recombination
Auger
= yes/no
#
(optional, default: no )
Auger recombination
radiative =
yes/no #
(optional, default: no )
radiative recombination
(direct recombination)
enable_generation =
yes/no #
(optional, default: yes )
Generation can be switched on (default: yes ) or off for the enabled processes.
}
#
For each enabled of the three processes, generation is enabled/disabled using
enable_generation .
#
Thus, enabling only generation without also enabling recombination is not possible
(enable_generation =
yes
has no effect then).
#
If radiative recombination is calculated (radiative =
yes ), then the photo_current
is included in the file
IV_characteristics.dat .
#
Additionally, the internal quantum efficiency is written to the file internal_quantum_efficiency.dat .
Output definitions
output_fermi_levels{}
# prints out the Fermi levels for electrons and holes
[eV]
output_fermi_level_differences{}
# prints out the difference of electron and holes Fermi levels, Delta_EF
= EF,n - EF,p
[eV]
# By overlaying the Fermi level difference over the band gaps, you may e.g. determine where and involving which bands lasing may occur.
output_mobilities{}
# prints out the electron and hole mobilities [cm2/Vs]
output_recombination{}
# prints out the recombination rates [1e18/(cm3s)]
#
Note: If you want to output the generation rate, you have to specify this
in structure{ output_generation{}
} .
output_currents{}
#
prints out the electron and hole current densities [A/cm2]
# Note: The electron, hole, and total
currents (integrated over the contacts surfaces) are always written into the files
IV_electrons.dat , IV_holes.dat , and IV_characteristics.dat (in units of 1D:[A/cm2],
2D:[A/cm], 3D:[A]), respectively.
If radiative recombination is used, the file IV_characteristics.dat also contains the photo current.
In all IV_*.dat files, the first columns indicate the voltages at
each contact. Typically, the first column should be the one that is swept
as it is then easier to plot the results within nextnanomat as the first
column is the x axis in such a plot.
You can switch the columns by reordering the contacts, see
contacts{} .
The consumed power is written in
IV_Power.dat in units of [W/cm2] (1D),
[W/cm] (2D), [W] (3D), respectively.
The emitted power column is added if the energy resolved density
integration is enabled.
output_velocities{}
#
prints out electron and hole drift velocities [cm/s]
output_power_density{}
#
prints out power density (only Joule heating) [W/cm^3]
Solver definitions
linear_solver{ #
parameters for linear equation solver in current equation
iterations =
200 #
number of iterations
(default is: 10000)
abs_accuracy = 1e-30
# (dimension dependent!!!)
absolute accuracy of Fermi level (default is:
1e-30
[eV]
(1D),
1e-30 [eV]
(2D),
1e-30 [eV]
(3D)), use a small value to force
convergence
rel_accuracy =
1e-13
# relative accuracy (default is: 1e-13 [ dimensionless] ),
0.0 <= rel_accuracy <= 0.01
dkr_value =
0.1
# ("magic parameter" to speed up calculations (dimensionless), affects preconditioning,
must be <= 0.5 )( default is:
-1.0)
# Note: Negative values are ignored but will switch to a slightly slower but more stable preconditioner.
use_cscg =
no
# yes or
no (default is:
no ) Forces the slower but occasionally more robust CSCG (Composite
Step Conjugate Gradient ) linear solver to be used
#
rather than the cg (Conjugate Gradient) linear solver. May occasionally prevent a diagonalization failure.
# Only for debugging purposes, enabling will make code much slower or prevent convergence.
force_diagonal_preconditioner = no
#
yes or
no (default is:
no ) Forces the use of a slower but more robust diagonal preconditioner.
# Only for debugging purposes, enabling will make code much slower or prevent convergence.
# Please try setting it to
yes in case preconditioning fails or the linear solver diverges.
If set to yes ,
iterations may have to be further increased.
force_iteration
= no
#
yes or
no (default is:
no )
# Only for debugging purposes, enabling will make code much slower or prevent convergence.
extended_accuracy = 0
# 0 or
1 (default is:
0 ). If set to
1 , then current equation is solved using slower but more accurate solver (only implemented for nonperiodic 1D simulations).
# Experimental feature, will change in the future
}
debuglevel =
-1..3
# The higher this integer number, the more information on
the numerical solver is printed to the screen output. (default:
debuglevel = 1 )
# Increasing the respective
debuglevel to 2 or more significantly increases the volume of the diagnostic output
displayed in nextnanomat (or a shell window).
# As result of the additional I/O load, particularly 1D simulations
will slow down correspondingly (especially for current{}
and poisson{}) .
insulator_bandgap = 0.5
# Igap affects initial solution of Fermi level
(default is: 1
eV )
# A large value (relative to band gap) of Igap lets Fermi level
drop continuously.
# A small value of Igap lets Fermi level drop in
barrier and
makes it flat in small bandgap regions.
# (A better, more meaningful, name for
insulator_bandgap might have been
initial_energy_scale .)
# The drift-diffusion current equation reads div (µ n
grad(EF)) = G-R.
# In order to calculate the density n, we have to know
the quasi-Fermi level EF.
# Approximately, the intrinsic density exponentially
depends on the band gap Egap.
# Therefore we apply a trick, and use div( exp(- Egap
/ Igap) grad(E_F)) = 0 in order to find a first
approximation to the quasi-Fermi level,
# where Igap can be entered in the input
file ('insulator_bandgap ') to adjust the
convergence behavior of the initial solution.
minimum_density = 1e11
# improves condition number of current equation matrix (default is: 1e10/cm3 ;
Note: 1e12/cm3 seems to be
too high.)
# 1e-10
is
actually the smallest possible value, smaller values are just automatically
increased to 1e-10
without warning.
# Minimum charge carrier density (lower limit) for
both electrons and holes that can appear in drift-diffusion current equations.
# The minimum density might have to be increased in
order to obtain convergence for the drift-diffusion current equations.
# The minimum density should be as low as possible.
# The minimum density can be chosen as large as
possible but should be smaller than the minimum density in the converged result.
# As the drift-diffusion current is proportional to
the charge carrier density, this eventually also sets the lower limit of the
current.
# The minimum density is a useful flag for structures
where regions are present that have almost no density (e.g. a barrier, or
insulator).
# If the density in such an insulator is below 1 - 103
cm-3,
# the product of 'mu n' in the drift-diffusion current
equation varies over several orders of magnitude.
# Consequently, the matrix used in the linear solver
is not well conditioned.
# Here, the current through these insulating regions is
basically zero which has implications on the convergence behavior of the
drift-diffusion current equations.
# Increasing the minimum density will help in these
cases.
# A useful value for the minimum density of a certain
material depends on the band gap because its intrinsic density also depends on
the band gap.
# A wide-band gap material has a much lower intrinsic
density than a low-band gap material.
# Minority carriers in highly doped semiconductors or carriers in undoped wide band gap semiconductors have extremely small equilibrium densities (much less than 1.0 cm-3),
resulting in complete breakdown of the solvers for current equation due to underflow. Unfortunately, it is not clear whether quadruple precision would cure this problem.
Also, it seems unphysical to believe that one carrier per kilometre can be physically relevant (aside from the rather practical issue that real-life minority carrier densities are
not in thermal equilibrium und thus never become as small as predicted).
Therefore, we modified the code (2019-01-23) to make sure that the minimum density parameter as specified for the current equation is not smaller than 10-10 cm-3
(this value corresponds to a conductivity 10 orders of magnitude lower than the best insulators).
At the same time, we left the minimum value in the syntax definition unchanged as 0.0
in order to avoid users getting annoying error messages
when they experimentally set the value to zero (zero will just be silently increased to
1e-10 ).
For systems without extremely low carrier densities, results will not be affected by this change.
# Separate minimum densities for electrons and holes are optionally
available.
minimum_density_factor = [ 1.0 , 0.01 ] #
(default: [ 1.0 , 1.0 ] )
# Here, the two numbers for minimum_density_factor defines scaling factors by which the minimum density is multiplied for
electrons and for holes.
# For example, a minimum density of 1e10 cm-3 for electrons and 1e8 cm-3 for
holes could be defined e.g. as
minimum_density =
1e10
#
minimum_density_factor = [1.0 , 0.01]
#
# or
minimum_density =
1e9
#
minimum_density_factor = [10 , 0.1]
#
# or, most conveniently,
minimum_density =
1.0
#
minimum_density_factor = [1e10 , 1e8]
#
# Irrespective of the definition, the actually used values for the minimum densities are output close to the beginning of the log file.
maximum_density =
1e30
# (default is: 1e30/cm3 )
maximum_density_factor = [1.0 , 1.0 ]
# analogous to minimum_density
Note that the minimum/maximum densities only affect the current operators (nabla mu density nabla) and corresponding currents (e mu density nabla),
thus,
they have no direct influence on recombination
(unless minimal_recombination = yes ), computed densities, Poisson
equation, etc.
Also, when restricting effective densities in the current equations from above and/or below, please think first whether and in which way such restriction affects
the physics:
Increasing minimum densities make insulating regions less insulating, whereas decreasing maximum densities make conducting regions less conducting.
minimal_recombination = yes
# (default is: no ) If enabled, the minimum densities will also apply to the recombination/generation terms of the current equation.
}
|