Up
| | This is the old documentation.
Here's the link to the new documentation.
contacts{}
At simulation boundaries, a Neumann boundary condition is applied to the
Poisson equation, d phi/ d x = 0.
Five types of contacts are possible:
- Schottky
A Schottky contact requires the specification of a Schottky barrier. A
Schottky contact implies
- Dirichlet boundary conditions for the electrostatic potential (Poisson
equation)
- Dirichlet boundary conditions for the Fermi levels
The Dirichlet value for the potential within the contact is determined by
requiring that the energetic distance between the Fermi level and the
conduction band edge is equal to the value of the Schottky barrier.
Note: A Schottky contact can also be used to model the effect of Fermi level pinning due to surface states.
- Charge neutral
As for the Schottky contact a charge neutral
contact implies
- Dirichlet boundary conditions for the potential
- Dirichlet boundary conditions for the Fermi levels
The Dirichlet value for the potential within the contact is determined by
requiring local charge neutrality for each grid point of the contact.
Note: For instance, this contact model can be used to calculate the energy
levels in a quantum well or quantum cascade laser (QCL) as a function of applied bias.
- Ohmic (New: From 2019-01-23 on, we changed the definition of
ohmic.
Ohmic contacts now behave per default like
charge_neutral
contacts but additionally have a shift
parameter.)
- Zero field (was called ohmic before)
(not recommended)
A zero field contact implies
- Neumann boundary conditions for the Poisson equation
(i.e. zero electric field, or more precisely D=0 where D is the dielectric
displacement)
- Dirichlet boundary conditions for the Fermi levels in the
current equation.
Note: Quantum regions extending into zero field contacts will cause carrier densities higher than those in metal and Fermi levels in the keV range.
The cause of this is the nonphysical way zero field contacts are calculated.
(Essentially, by enforcing a Neumann zero-field condition at the contact.)
Note: Until 2019-01-23, zero_field
was called ohmic .
- Fermi
A Fermi contact implies Dirichlet boundary conditions
for the Fermi levels.
Fermi contacts are boundary conditions to the current equations only.
Fermi contacts are "invisible" for the Poisson and Schrödinger equation,
i.e. the Poisson and Schrödinger equations are solved in the Fermi contact
region with the material parameters that are defined in this region.
No boundary conditions are imposed on the electrostatic potential, i.e. Neumann is used
for the Poisson equation (default).
Please note the following important computational limitation:
For almost all types of contacts involving the Poisson equation (ohmic , schottky
with barrier
defined, charge_neutral , zero_field ),
the material under the contact is used as reference for computing charge neutrality conditions, ohmic properties, or barrier heights,
not the material adjacent to the contact. Thus, please make sure that an appropriate material is defined under the contact to
be available as reference.
The only exceptions to this behavior are fermi contacts, since these contacts
are only involved the current equations, and schottky
contacts
with defined work_function , since then no reference material is needed.
The bias
effects the value of the Fermi levels as it determines the Dirichlet
value of the Fermi levels within the contacts.
For example, by specifying a bias
of 0.7 V, the Fermi level in the corresponding contact is set to a value of
- 0.7
eV.
contacts{
# contact no. 1
Specify "Schottky barrier" to model Fermi level
pinning due to surface states:
schottky{
name =
"air"
bias =
0.0 # [V]
barrier = 0.7 # [eV]
Specify either barrier
or work_function but not both.
work_function = 0.7 # [eV]
(optional)
For Schottky contacts, it is also possible to define the vacuum work function of the contact materials instead of the Schottky barrier.
In this case, the
Schottky-Mott rule will be used to determine the barrier height of the contact.
However, please note that, due
to Fermi level pinning, experimentally measured Schottky barrier heights may be quite different.
}
vacuum_level = 6.3
# [eV]
(optional, relevant for work_function
only) (default = 6.3 eV,
estimated from Si affinity of 4.05 eV and Si band offset in database)
The corresponding vacuum energy level () for all
Schottky
contacts is predefined as 6.3 eV in correspondence to the band offsets in the
database, but can be modified as well if necessary.
# contact no. 2
Specify charge neutral
contact:
charge_neutral{
name =
"charge_neutral"
bias =
0.0
# [V]
}
# contact no. 3
Specify ohmic contacts:
ohmic{
name =
"source"
#
name of contact
bias =
0.0
# [V]
shift =
0.0
# [eV]
(optional, default = 0.0 ) Can
be used to shift the band structure up (or down) in order to increase (or decrease) the ohmic behavior of the contact.
#
Warning: The effect of shift
can be very large, best start with ±1 kBT for p-doped/n-doped material (that is ±0.025 eV at 300 K) and check the result.
}
# contact no. 4
Specify zero field contacts
(was called ohmic
before 2019):
(We are not sure whether there is a physical
scenario for zero_field
contacts, but we leave them in the code in case
somebody wants them.
In any case, users should keep in mind that they may induce huge space charges which often result into convergence problems.)
zero_field{
name =
"source"
#
name of contact
bias =
0.0
# [V]
}
# contact no. 5
Specify Fermi levels:
fermi{
name =
"fermi_1"
bias =
0.7
# [V]
}
# contact no. 6
It is possible to define Dirichlet regions for the electron or the
hole quasi-Fermi level only (as compared to type fermi{}
which always creates a Dirichlet region for both).
This feature may be used to e.g. fix the quasi-Fermi level of majority carriers in a region
while leaving the quasi-Fermi level of the minority carriers free to float there, as for instance in a bipolar device.
Note that overlapping contact regions still cannot be defined, thus also no overlapping e.g. fermi_electron{}
and fermi_hole{}
contact regions with different bias.
Each contact definition will replace (overwrite) previously defined contact region definitions at each respective grid point.
Specify Fermi level for electrons:
fermi_electron{
name =
"fermi_el"
bias =
0.7
# [V]
}
# contact no. 7
Specify Fermi level for holes:
fermi_hole{
name =
"fermi_hl"
bias =
0.7
# [V]
}
long_directory_names = no
# yes/no
(default: no )
# no : bias subdirectories are enumerated as bias_*****
independently of the numbers of contacts defined.
# (See file bias_points.log in each
subdirectory for the actual bias values used.)
# yes : bias subdirectories are named bias_000_001_***_...
which, for inputs with a
large number of contacts, could result in issues with too long file paths.
}
Each contact (ohmic , schottky , fermi , charge_neutral , zero_field ) can contain an optional bias sweep.
Instead of specifying
bias =
0.5
# [V]
one can alternatively define a voltage sweep (e.g. 0.0, 0.1, 0.2, ..., 2.0)
bias =
[0.0, 2.0]
# start and end bias in [V]
steps =
20
# (optional) number of voltage sweep steps, integer between
1 and
999
or one can alternatively define a sequence of bias points for each contact:
bias =
[0.0, 1.8, 1.9, 2.0]
# sequence of biases [V] (up to 100 bias points)
steps =
1
# (optional) number of voltage sweep steps between consecutive bias points, integer
between
1 and
999 (default is
1 )
#
If step is defined to be greater than 1, the space between the consecutive bias points is also subdivided correspondingly.
#
Consecutive identical bias points are skipped. A reversal in the direction of the change in bias is allowed but currently probably not useful.
#
If bias is defined as a scalar (or vector of length 1), only one bias value is calculated (and the value of
steps is ignored).
The output file bias_points.log contains the mapping between bias values and bias index for all bias points.
It is possible to define a bias sweep at several contacts.
- At each grid point, only one type of contact can exist. For overlapping
contact regions, the last defined contact on this grid point is used.
|