The initialization and list compilation is performed by the
NBONDS. It functions by guessing how much space will
be needed to store the close contact list, allocating that space (and
space for electrostatic potentials and gradients if necessary) on the
heap, and calling the appropriate subroutine to actually compile the
NBONDF handle ATOM, RESI, EXEL, and EXFL
respectively. If sufficient space was not available, 1.5 times as much is
allocated and another attempt is made.
ENBOND evaluates the nonbonded energy, calling
EEXEL to evaluate the stored electric potentials and fields.
Single precision is used for most arithmetic, but the energy and
derivative sums are accumulated in double precision.
All of the nonbonded cutoffs and lists are stored on the heap.
BNBND is the descriptor array passed through most of the program (in
some of the analysis routines an additional array
BNBNDC is used
for the comparison data structure).
BNBND holds heap addresses
LNBND holds the lengths of the elements in the data
structure. To actually access the data it is necessary to include
inbnd.fcm (an index common block) and specify
xxx is the desired element name in
inbnd.fcm. This is arrangement has the advantage of allowing
dynamic storage allocation and easy modification of the types of
information passed from routine to routine.