Documentation

This file provides general information about the workings of the code, for those who want to make modifications. No guarantee that any of this is correct; it was compiled while reading through the program to understand what it is doing, not to check the program. Also, some of it was based on an abbreviated 1985 version of the program and may not apply to the full 1986 version.

General notes

The code uses Angstrom, picoseconds, atomic mass, and electron volt units. So it is frequently converting between eV and AMU A2/ps2. See ECONV in the variable name table.

Real*8 numerical precision is needed, or bcuint has notable round-off error. The same is almost certainly true for the other spline interpolation subroutines.

For the ideas behind the code, see Phys. Rev. B, Vol 42, pp 9458-9471 for formulae and their symbols. Also note, however

Common blocks

The program uses common blocks for most variables which are loaded into each subroutine through common_files.inc:

I/O units

The following Fortran I/O units are in use by the code:

I moved pair_energy.d to I/O unit 84.

Files are opened in open.inc, closed in close.inc.

Subroutines

Here is a list of subroutines and what they do:

Bcuint
Bicubic interpolation of CLM; also returns derivatives.
Bere
Berendsen thermostat: KFLAG=1 damping; KFLAG=other(=5): rescale velocity.
Bombard
Adds a single atom from file bombard.d.
Caguts
Finds forces on atoms from pair potentials.
Ccorr
Call the corrector.
Cpred
Calls Pred (if there are nonrigid molecules) and increments time.
Damage
Checks whether the number of carbons less than 1.8 apart changes, indicating damage..
Gleq
Langevin (friction and random force).
Hoov
Evans-Hoover thermostat.
Ljcont
Seems to give net Lennard-Jones potential exerted by e semi-infinite continuum with a normal in the 'ndir' direction, at a location 'surf'.
Model
Calls Caguts (if not tight binding).
Mtable
Creates tables of the potentials VA and VR from the Brenner paper..
Param
C and H potentials.
Pibond
Finds bonding forces involving C and H atoms.
Pred
Nordsieck scheme prediction of zn+1 from zn only.
Radic
Tricubic interpolation of CLMN.
Rannum
Random number generator. Its argument is unused..
Read_data
Reads input.d and coord.d.
Set_md
Initialize time and such, also sets ENPR.
Setgle
Set langevin parameters..
Setin
Initialize kt, xmass, noa, sig, eps, pi, bolz, avo, epsi, econv.
Setpc
Set Nordsieck parameters (except F22=1).
Setpp
Calls param and mtable.
Setran
Initializes RNG, called once at the start..
Setrn
Random number initialization. Only called once, inside setran.
Thermos
Chooses thermostat routine.
Tor
Torsional interaction TLMN tricubic interpolation.
Write_data1
Writes to output.d.
Write_data2
Writes to unit 9, output.d, the step number, average energy per atom, some kinetic energy; writes to unit 6 (the screen) total potential energy. Modified by me to write more output to the screen less frequently.
Write_data3
Overwrites 11, coord.d, .
Xmol
Writes to 1, xmol.d data to be converted later to .xyz files..
Zero
Zero velocities.
vscale
Seems to be some attempt to select the scalings that give minimum potential energy.

Variable Names (General)

The meaning of variable names, as well as I can make out follows. See Phys. Rev. B, Vol 42, pp 9458-9471 for formulae and their symbols. Also, I define the additional variables:

Variable Names (pibond.f)

Since subroutine pibond is probably the most impenetrable one, I include a separate list of local variables in pibond:


Return