GENERAL INFORMATION:

This code is an improvement over the original Water code in SPLASH,
but is mostly the same.  The best source of descriptive information,
therefore is the original SPLASH report.  The main change is that 
the locking strategy around the updates to the water accelerations 
(in interf.C) is improved: a process updates a local copy of the 
relevant particle accelerations, and then accumulates into the shared 
copy once at the end.  

RUNNING THE PROGRAM:

To see how to run the program, please see the comment at the top 
of the water.C file or run it as "WATER-NSQUARED -h".  The input file 
has 10 parameters, of which the ones you would normally change 
are the number of molecules and the number of processors.  The other
parameters should be left at their values in the supplied input file
in the normal case.  Please do not set the CUTOFF value (the last 
parameter) to a nonzero number in the normal case.  

The only compile-time option (ifdef) is one that says to change the
input distribution.  The default input distribution of molecules
arranges them on a cubical lattice.  For this, the number of molecules
must be an integer cube (8, 27, 64, 343, 512 ...).  If one wants
to use a non-cube number of molecules, one can ignore the lattice
and use a random distribution of particles in a cubical space
by invoking the -DRANDOM compile-time option (see file initia.C). 
Note that a random distribution does not make too much physical sense,
since it does not preserve chemical intermolecular distance ranges. 
If you do not use the lattice but use -DRANDOM, please say so explicitly
in any results you report.

The program reads random numbers, to compute initial velocities, from
a file called random.in in the current working directory.  It does
this rather than generate random numbers to facilitate repeatability
and comparability of experiments.  The supplied file random.in
has enough numbers for about 512 molecules.  If you need more, add
more random numbers between -4.0 and +4.0 to the file.

BASE PROBLEM SIZE:

The base problem size for an upto-64 processor machine is 512 molecules.
For this number of molecules, you can use the input file provided (and 
change only the number of processors).

DATA DISTRIBUTION:

Our "POSSIBLE ENHANCEMENT" comments in the source code tell where one
might want to distribute data and how.  Data distribution, however,
does not make much difference to performance on the Stanford DASH 
multiprocessor. 
