SEMITIP V6, program UniPlane3


This program computes the electrostatic potential and the resulting tunnel current between a metallic tip and a uniform (homogeneous) semiconducting sample, for a fully 3-dimensional geometry. The semiconductor is assumed to be uniform for the purpose of computing the electrostatic potential, but for the tunnel current a region with differing band edge positions can be defined (e.g. as would be encountered for a quantum dot at the surface). The tunnel current is computed using a plane wave expansion to solve Schrödinger equation, for a restricted spatial region centered around the point on the surface opposite the tip apex.

The plane wave basis is formed by matching plane waves in the semiconductor with decaying exponentials in the vacuum, as described in Ref. [1]. In the z-direction a periodic system is formed consisting of the semiconductor slab and a vacuum region, with the basis states having either odd or even parity relative to the center of the slab. In the x and y directions a periodic system as also formed, with sine and cosine functions used for the basis in the semiconductor. The solution to Schrödinger's equation within planecurr3.f assumes a mirror plane lying along the x-axis (i.e. only cosine basis states in the y direction).

The most critical parameters in the plane wave solution to Schrödinger's equation are the number of plane waves (k-points) used. This is set in the PARAMETER statement within planecurr3.f by the nkx, nky, and nkz parameters. A minimum value of 4 for these parameters will allow the program to run quickly, but with quite unreliable results. Values of 8 or 10 are much more reliable, but time consuming. To provide some reduction in computation time, the parameter on line 53 of the FORT.9 input file can be used. A setting of 1 for that parameter means that all the valence bands and the conduction band are evaluated for each voltage, whereas a setting of 0 means that only the valence bands are used for V<0 and the conduction band for V>=0. The latter restriction on the bands used is sufficient for many applications (unless accumulation or inversion occurs, in which case the plane wave method is not applicable anyway since it is not self-consistent, as further discussed in the SEMITIP V6 Technical Manual). Larger values for the number of plane waves are very time consuming and require parallel processing for routine evaluation of the tunnel current.

The spatial size of the periodic supercell used in the solution to Schrödinger's equation is determined by the number of plane waves and by the energy limits for the plane waves as specified in the FORT.9 input file (with different limits used for each band due to their different effective masses). For number of k-points NK, effective EFFM, and energy limit EMAX, the extent of the supercell is NK*2*PI/SQRT(C*EFFM*EMAX) where C equals 2m/hbar^2 where m is the free electron mass. Here, SQRT(C*EFFM*EMAX)/NK is the minimum nonzero wavevector, so the extent of the supercell (in each direction) is just the size corresponding to maximum wavelength of the problem. EMAX is generally kept fixed, corresponding to a scale on the order of 1 eV such that states of that energy (as needed for the voltage range of a spectrum) are included. Hence, increasing NK produces an increase in the size of the supercell. The sampling of spatial points within the supercell is set in the program to occur on a grid with 4*NK points in each dimension. For the maximum wavevector, which has NK wavelengths in the supercell, it will thus be sampled at 4 points along its wavelength.

Parameters internal to the planecurr3.f routine are:

  1. IPOT - has value of 1 to include the computed potential from semitip3.f in the eigenvalue solution to Schrödinger's equation, or a value of 0 to not include it (this parameter is used mainly for debugging purpose). Default value is 1.
  2. IVAC - has value of 1 to include the vacuum region in the potential used for the eigenvalue solution to Schrödinger's equation, or a value of 0 to not include it (without it, the problem solved consists only of a periodic semiconductor region, with sine and cosine functions used as basis states). Default value is 1.
  3. Several parameters that affect the output of intermediate values such as wavefunction values or potential maps, as described in the Output section below.

Version information

Version 6.2; see top of UniPlane3-6.2.f source code for prior version information.


A compiled version of the code, which should run on any Windows PC, is available in the file UniPlane3.exe. Input for the executable code comes from the file FORT.9. Download these two files, into filenames "UniPlane3.exe" and "fort.9". Then, run the code just by double clicking on it. Using a text editor, the input parameters in FORT.9 can be changed to whatever values are desired. In addition to the parameter values, this file also contains comments as to the meaning of each parameter. See SEMITIP V6 Technical Manual for additional comments on the meaning of the parameters.


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):

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, the specification of spatial arrangement of bulk or surface charge density, and the specification of local variations in the band edge potential. The latter is accomplished with the routine DELVBEDGE and DELCBEDGE, which provide the change in band edge locations relative to the overall band gap defined in the FORT.9 input file. See SEMITIP V6 Technical Manual for additional information on 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):

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

  1. undoped GaAs(110), with no quantum dot and no surface states.
  2. InAs quantum dot in GaAs.
  3. InAs quantum dot in GaAs, plotting wave functions.
  4. InAs quantum dot in GaAs, showing dot outline.


1. S. Gaan, G. He, R. M. Feenstra, J. Walker, and E. Towe, Size, shape, composition, and electronic properties of InAs/GaAs quantum dots by scanning tunneling microscopy and spectroscopy, J. Appl. Phys. 108, 114315 (2010). For preprint, see