SEMITIP V6, program MultInt3
Introduction
This program computes the electrostatic potential and the resulting tunnel current between a metallic tip and a nonuniform (inhomogeneous) semiconducting sample, for a fully 3-dimensional geometry. The tunnel current is computed by integrating the Schrödinger equation along the central axis of the problem (i.e. as appropriate for a planar geometry, but an approximation for a nonplanar geometry).
Version information
Version 6.4; see top of MultInt3-6.4.f source code in example(s) below for prior version information.
Usage
Source code files for the program are available in the example(s) provided below. In order to specify the inhomogeneities in the semiconductor, it is necessary to modify the source code as follows:
-
The routine IGETREG (at the bottom of the source code) defines the various regions in the semiconductor. The input parameters x, y, and S are the X, Y, and z positions in the semiconductor, respectively. The routine should return an integer value giving the number of the region for those specified positions (i.e. return a value of 1 to use the first set of parameters in the FORT.9 input file defining the semiconductor region, a value of 2 for the second set of parameters, etc.).
-
The maximum number of region types in the semiconductor is specified by the parameter NREGDIM and the maximum number of area types on the surface by the parameter NARDIM. The values of these parameters are set in the main programs and its associated routines by PARAMETER statements. By default these values are set to 2, but they can be increased by changing all of the PARAMETER statements.
Additional details of these source code modifications can be found in the
SEMITIP V6 Technical Manual. With the appropriate modifications, the source code of the main program, together with the subroutines listed below, must by re-compiled and linked in order to produce the executable code.
All input for the program (other than that modifications to the source code detailed above) comes from the file FORT.9, which is also included in the example(s) provided below.
Compared to a uniform semiconductor and surface, there are several additional considerations that must be taken into account for handling a nonuniform situation. For one thing, the grid size must be more carefully specified, and additional testing is needed to ensure that it is of an appropriate size. If the grid is too small, then the solution might not converge, and if it is too large then significant errors can be produced. The grid for this nonuniform case is determined by the doping of region 1 of the semiconductor (along with the tip radius and tip-sample separation); if this region has relatively high doping compared to other regions then a larger grid size than the default one (using the multiplicative scaling parameter on line 53 of FORT.9) might be necessary, and conversely if region 1 has relatively low doping then a smaller grid size might be necessary. Concerning the specified contact potential, this is also applicable to region 1; for other regions it will vary, depending on the electrostatic potential in that region, just as it should in accordance with the varying work function from region to region.
In version 6.3 and beyond, two parameters were added the input file FORT.9 (lines 7 and 8) that specify the (x,y) position of the probe tip. (If a horizontal mirror plane is assumed in the solution, line 48 of FORT.9, then the y position of the tip is set to zero). For scanning a probe tip over the semiconductor surface, it is these x and/or y positions that should be varied, along with a possible change in the tip-sample separation. All other parameters in the input file should remain unchanged.
Output
Output from the program is contained in the following files
(output depends on the value of the output parameter IWRIT as specified
in the input file FORT.9):
- FORT.10 - gives the numerical results for the following quantities:
- tip radius of curvature (nm)
- tip-sample separation (nm)
- sample-tip bias voltage (V)
- contact potential (eV)
- Pot0 - the surface potential at the semiconductor surface (eV).
- FORT.11 - provides the electrostatic potential energy (eV) along the z axis, as a
function of distance (output for IWRIT>=1). Also, the electrostatic potential plus the
vacuum barrier energy is output to FORT.95, and the energy of the valence and conduction
band edges (as used in computing the tunnel current) are output to FORT.96 and FORT.97, respectively.
- FORT.12 - provides the potential (eV) along the surface, for specified angle from x-axis, as a function
of the radial distance from the central axis (output for IWRIT>=1)
- FORT.13 - gives the entire array of potential values (eV) (output for IWRIT>=3); see
VERSION 6 Technical Manual
for more details.
- FORT.14 - provides the current (A/nm^2) (column 2) as a function of sample voltage (V) (column 1). Also, columns 3 and 4 provide the contributions to the current of extended states and
localized states, respectively. Separate contributions from the valence band and conduction band
go in to FORT.91 and FORT.92, respectively.
- FORT.15 - provides the conductance dI/dV (A/(V nm^2)) (column 2) as a function of sample voltage (V) (column 1). Also, columns 3 and 4 provide the contributions to the conductance of extended states and
localized states, respectively. Separate contributions from the valence band and conduction band
go in to FORT.93 and FORT.94, respectively.
- FORT.16 - gives an exact copy of the output to the console
- FORT.17 - provides the charge densities on the central axis (column 2) as a function of z-distance along the central axis (column 1). Also, columns 3 and 4 provide the contributions to the charge densities of extended states and localized states, respectively.
- FORT.18 - provides the surface charge densities (column 2) as a function of radial distance away from the central axis (column 1). Also, columns 3 and 4 provide the contributions to the charge densities of extended states and localized states, respectively.
- FORT.19 - provides the surface charge density (column 2) at the point opposite the tip apex (i.e. on the central axis), as a function of bias voltage. Also, columns 3 and 4 provide the contributions to the charge densities of extended states and localized states, respectively.
- FORT.20, FORT.21, ... - contour lines (nm) of the potential, for specified angle from x-axis (output for IWRIT>=2)
- FORT.81, FORT.82,... - listing of surface charge density (column 2) vs. Fermi energy (column 1), for various areas (output for IWRITE>=3)
All of the parameters in the program can be varied using the input file FORT.9, with the exception of the array sizes, the specification of a surface state density other than a uniform or Gaussian shaped one, and the specification of spatial arrangement of bulk or surface charge density. See
SEMITIP V6 Technical Manual
for additional information on these user-defined functions. Modification of those functions
can be accomplished by changing the source code of the program. The source code is available, in the following files (version numbers follow the dash in the names):
-
MultInt3-6.4.f -
main program, available in example(s) below.
-
contr3-6.0.f -
routine for outputting contour plot.
-
gsect-6.0.f -
general purpose Golden Section search routine, for dealing with nonlinear aspects of the problem.
-
intcurr-6.1.f -
performs numerical integration of Schrödinger equation, on a potential curve supplied by potexpand.
-
potcut3-6.0.f -
takes a cut of the potential from semitip3.
-
potexpand-6.0.f -
expands the cut of the potential from potcut3, to a resolution suitable for numerical integration.
-
semirhomult-6.0.f -
routines for computing semiconductor charge densities.
-
semitip3-6.1.f -
performs the detailed finite element solution of Poisson's equation.
-
surfrhomult-6.2.f -
routines for handling surface charge densities.
All routines are written in Fortran. The source code can be downloaded
directly from the above locations, and it can be compiled and linked
on any platform. Sample input and output from the program is shown in the examples below.
Illustrative Examples of Running the Code
-
GaAs(110) pn junction