Next: Non-bonded Data Structures, Previous: Non-bonded Algorithms, Up: Non-bonded Interactions
The initialization and list compilation is performed by the
subroutine 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
nonbonded list. NBONDA
, NBONDR
, NBONDE
, and
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
and 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
HEAP(BNBND(xxx))
where 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.