Poisson boundary conditions and contacts
When solving Poisson's equation, by default
Neumann boundary
conditions are applied to the boundary. If you want to change it, you will
have to use this specifier where you can define Poisson boundary conditions
(like e.g. Dirichlet or even an applied voltage). These Poisson boundary
conditions can be called 'contacts' and are also used for applying
voltage to the device.
A Neumann boundary condition is defined as d phi / d x = constant.
A Dirichlet boundary condition is phi = constant.
In order to apply any voltage to the device you have to define contacts. This
is done by the Poisson boundary conditions.
There are mainly two different kinds:
 Schottky (implies a Schottky barrier), also suitable to simulate surface
states
 Ohmic (no barrier)
These Poisson clusters are assigned to the
regioncluster , which can
consist of any material (e.g. metal or anything else). The material properties
of these clusters do not influence the calculations as only the boundaries (that
are defined here) enter the equations and nothing else (Fermi
contacts might be an exception to this).
If the calculation does not converge, the applied voltage difference might be
too large. Larger voltages should be calculated stepwise (see
$voltagesweep ).]
Only regionclusters ($regioncluster )
can be associated to a contact or boundary region but not regions themselves ($regions ).
If a region is assigned to be a Poisson boundary cluster then it is not
considered to be contained inside the quantum (Fermi
contacts are an exception to this) or current region any more although the
quantum or current region could in principle extend over the Poisson boundary cluster (by
definition as specified in the input file) (>
setup_quantumregion ).
Note: No Schrödinger (Fermi
contacts are an exception to this) or current equation
will be solved in regions that are specified as Poisson boundary conditions.
In addition, the Poisson equation is not solved in these regions either (Fermi
contacts are an exception to this).
In the
output, the value of the contact regions is set to zero, or to the applied
voltage, respectively.
There are two alternative ways for a simulation: equilibrium and
nonequilibrium.
Nonequilibrium means selfconsistent solution of Poisson equation and
current continuity equation. It is assumed that application of voltage leads to
a nonzero (maybe very small) current. Therefore the user must specify
current regions between the contacts. The
meaningful boundary conditions are: Schottky
and Ohmic , the number of contacts is
at least 2.
Equilibrium simulation means to solve Poisson equation with a constant
chemical potential (Fermi level) (set to 0 eV). The user is allowed to specify
boundary conditions for the Poisson equation. The meaningful boundary conditions
are Dirichlet , Neumann ,
Schottky and ohmic , the number
of contacts is arbitrary.
!!
applicable ...
$poissonboundaryconditions
optional !
!
poissonclusternumber
integer
required !
regionclusternumber
integer
required !
!
boundaryconditiontype
character required !
!
contactcontrol
character optional !
only for Schottky ,
Ohmic
appliedvoltage
double
optional ! only for
Schottky , Ohmic ,
Fermi
fixedcurrent
double
optional ! only for
Schottky , Ohmic
schottkybarrier
double
optional ! only for
Schottky
!
potential
double
optional ! only for
Dirichlet
electricfield
double
optional ! only for
Neumann
temperature
double_array
optional !
Fermilinearreferenceclusters
integer_array
optional ! only for
Fermilinear
Fermilineardirection
integer_array
optional ! only for
Fermilinear
!
$end_poissonboundaryconditions
optional !
!!
schottkybarrier (Schottky) ,
potential (Dirichlet) and
electricfield (Neumann) are suitable for
equilibrium solutions of the Poisson equation (electrostatics).
For nonequilibrium calculations (current calculations), the specifiers contactcontrol ,
appliedvoltage or fixedcurrent apply (as well as
schottkybarrier ).
poissonclusternumber = 1
= 2
= ...
An integer number as usual to refer to a Poisson cluster.
regionclusternumber = 1
= 8
= ...
A defined geometry region cluster number.
An integer number to refer to a regioncluster.
boundaryconditiontype = ohmic
!
= Schottky
!
= Dirichlet
!
= Neumann
!
(not implemented yet for 2D and 3D)
= Fermi
!
= Fermilinear
!
= chargeneutral !
An ohmic
contact implies for
equilibrium simulations, i.e. without applied bias,
 Neumann boundary conditions for the Poisson
equation (i.e. zero electric field, or more precisely D=0
where D is the dielectric displacement) and
 Dirichlet boundary conditions for the Fermi levels
in the current equation.
For the simulation in nonequilibrium, i.e. with applied bias, a Dirichlet
boundary condition is used for the Poisson equation.
A Schottky contact requires the
specification of a Schottky barrier. A Schottky contact implies
 Dirichlet boundary conditions for the electrostatic potential
 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.
Neumann
and Dirichlet are boundary conditions applied directly to the
Poisson equation.
A
Fermi contact implies
Dirichlet boundary conditions for the Fermi levels. No boundary
conditions are imposed on the electrostatic potential.
Example:
boundaryconditiontype = Fermi
!
appliedvoltage =
0.5 ! corresponding to an applied
voltage of 0.5 V and a Fermi level at  0.5 eV.
A
Fermilinear contact implies
Dirichlet boundary conditions for the Fermi levels. No boundary
conditions are imposed on the electrostatic potential.
Example:
boundaryconditiontype = Fermilinear
Fermilinearreferenceclusters = 1 3
! 1 and 3
refer to poissonclusternumber
Fermilineardirection =
1 0 0
! along the x direction
=
0 1 0
! along the y direction
=
0 0 1
! along the z direction
The Fermi level is chosen to vary linearly
along the specified direction between two other contacts (either
Fermi , Schottky
or ohmic
contact)
that must be specified as a reference.
Example: If the region where the Fermilinear
contact is defined, extends
from 10 nm to 20 nm, then
 at 10 nm, the Fermi level of reference cluster
1 is taken, and
 at 20 nm, the Fermi level of reference cluster
3 is taken.
In between, linear interpolation is used. The actual position in the structure
of the reference Fermi clusters is not taken into account.
Suggestion: One could generalize this feature so that the position of the
reference cluster is taken into account, and that the linear interpolation takes
these positions into account, instead of the boundaries of the
Fermilinear cluster.
As for the Schottky contact a chargeneutral
contact implies
 Dirichlet boundary conditions for the electrostatic 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.
(not implemented yet)
contactcontrol =
voltage !
(default)
= current
Specifies, whether Ohmic or Schottky
contact is voltage or current controlled.
If contactcontrol =
voltage !
(default)
appliedvoltage =
0.5
! [Volt]
The voltage applied to the contact. Builtins are calculated internally
according to the models for Ohmic and Schottky .
Apply voltage to Poisson cluster (Ohmic ,
Schottky ).
If contactcontrol =
current !
(default)
fixedcurrent =
0.5
! [Ampere]
The value of a fixed current at a current controlled contact.
Use fixedcurrent value for current controlled boundary condition.
schottkybarrier =
0.7 ! [Volt]
The value for a Schottky barrier in [V].
Schottky barrier height (Schottky ), from Fermi level to
conduction band edge.
Note: There is an effect called "Fermi level pining". Due to the surface
states at the device surface, the Fermi level has to be at a particular distance
from the band edge. This means, for example, that a homogeneous sample will have
nonzero builtin electric field.
This effect can be reproduced by a Schottky contact. The
Schottky contact is always ntype, i.e. the Fermi level is always pinned with
respect to the conduction band. For the calculation of the builtin potential
for a Schottky contact, the band edge of the conduction band will be pinned above the Fermi level by
the value specified for schottkybarrier .
Alternatively, one can reproduce the effect of "Fermi
level pining" if
one specifies an electric potential value at the surface (Dirichlet boundary
condition). However, the user has to do the following trick:
1) Execute nextnano³ with zeropotential = yes ($numericcontrol)
and without solving the Poisson equation (flowscheme
= 0 or = 3 ) and determine E_{c} value at the boundary.
2) Then define a potential value that will pin the Fermi level to the correct
energy.
potential =
0.5 ! [Volt]
A fixed value for the potential. A meaningful use only together with Dirichlet .
Apply potential to Poisson cluster (Dirichlet
only).
electricfield =
0.5 ! [Volt/meter]
A fixed value for the electric field "perpendicular" to the surface.
Electric field at 'surface' (Neumann ).
Note: Up to now, on simulation domain boundary only field zero is implemented.
Note: Boundary conditions on domain boundaries cannot be specified via input
yet, so they are set to type Neumann (electric field = 0) here.
For having nonvanishing fields, one has to specify a semiconductorair
interface with interface charge.
(Note: This is fixed in new beta version.)
temperature =
300.0 ! [K]
Temperature for this poisson boundary condition, e.g. for thermoelectric device
simulations (currently only possible for CBR and NEGF)
So what is useful input?
2 ohmic contacts with applied voltage (voltage controlled)
1D structure consisting of 6 regionclusters whereas regioncluster 1 and 6
are at the left and right boundary and serve as ohmic contact regions.
On the left contact we apply a voltage of 0.1 V.
!!
$poissonboundaryconditions
!
!
poissonclusternumber
= 1
!
regionclusternumber
= 1
!
boundaryconditiontype
= ohmic !
appliedvoltage
= 0.1
! [V]
!
poissonclusternumber
= 2
!
regionclusternumber
= 6
!
boundaryconditiontype
= ohmic !
appliedvoltage
= 0.0
! [V]
!
$end_poissonboundaryconditions
!
!!
2 ohmic contacts with fixed current (current controlled)
Ohmic contacts can also be current controlled rather than
voltage controlled.
1D structure consisting of 6 regionclusters whereas regioncluster 1 and
6 are at the left and right boundary and serve as ohmic contact regions.
On the left contact we apply a fixed current of 0.1 A.
On the right contact we apply a fixed current of 0.1 A.
!!
$poissonboundaryconditions
!
!
poissonclusternumber
= 1
!
regionclusternumber
= 1
!
boundaryconditiontype
= ohmic !
contactcontrol
= current !
fixedcurrent
= 0.1 ! [A]
!
poissonclusternumber
= 2
!
regionclusternumber
= 6
!
boundaryconditiontype
= ohmic !
contactcontrol
= current !
fixedcurrent
= 0.1 ! [A]
!
$end_poissonboundaryconditions
!
!!
Schottky barrier (with applied voltage) and ohmic contact
1D structure consisting of 6 regionclusters whereas regioncluster 1 and 6
are at the left and right boundary and serve as contact regions.
On the left contact we apply zero voltage
At the right contact we have a Schottky barrier of 0.7 V and apply a
voltage of 0.1 V.
The Schottky barrier height is from Fermi level to
conduction band edge. Schottky barriers can be used to
simulate surface states (e.g. GaAs surface about 0.7 V).
!!
$poissonboundaryconditions
!
!
poissonclusternumber
= 1
!
regionclusternumber
= 1
!
boundaryconditiontype
= ohmic !
appliedvoltage
= 0.0
! [V]
!
poissonclusternumber
= 2
!
regionclusternumber
= 6
!
boundaryconditiontype
= Schottky !
schottkybarrier
= 0.7 ! [V]
appliedvoltage
= 0.1
! [V]
!
$end_poissonboundaryconditions
!
!!
A fixed value for the potential (Dirichlet)
1D structure consisting of 6 regionclusters whereas regioncluster 6
is at the right boundary and serves as a 'contact' region.
On the right 'contact' we apply as a Poisson boundary condition a fixed potential of 0.3 V (Dirichlet
boundary condition).
!!
$poissonboundaryconditions
!
!
poissonclusternumber
= 1
!
regionclusternumber
= 6
!
boundaryconditiontype
= Dirichlet !
potential
= 0.3
! [V]
!
$end_poissonboundaryconditions
!
!!
A fixed value for the electric field (Neumann) 
Electric field at 'surface'
1D structure consisting of 6 regionclusters whereas regioncluster 1 and 6
are at the left and right boundary and serve as contact regions.
On the left contact we apply a fixed value of 0.5 V/m for the electric field
"perpendicular" to the surface (Neumann boundary condition).
At the right contact we have a Schottky barrier of 0.7 V.
The Schottky barrier height is from Fermi level to
conduction band edge. Schottky barriers can be used to
simulate surface states (e.g. GaAs surface around 0.7 V).
!!
$poissonboundaryconditions
!
!
poissonclusternumber
= 1
!
regionclusternumber
= 1
!
boundaryconditiontype
= Neumann !
electricfield
= 0.5
! [V/m]
!
poissonclusternumber
= 2
!
regionclusternumber
= 6
!
boundaryconditiontype
= Schottky !
schottkybarrier
= 0.7 ! [V]
!
$end_poissonboundaryconditions
!
!!
Setting a boundary condition to the Poisson without $poissonboundaryconditions .
Note: There are additional flags in
$numericcontrol . They are overwritten by $poissonboundaryconditions
if this keyword is present which has higher priority.
poissonboundaryconditionalongx =
periodic ! Dirichlet ,
Neumann
poissonboundaryconditionalongy = periodic
! Dirichlet ,
Neumann
poissonboundaryconditionalongz = periodic
! Dirichlet ,
Neumann
