Quadratic String Method
-----------------------

The quadratic string method (QSM) authored by Steven K. Burger
and Weitao Yang is outlined in J. Chem. Phys. 124, 054109 (2006). This
version is coded in Fortran 90 by Steven K. Burger and is for internal coordinates.
The coordinates specified in 'file.inp' are actually used for determining
the MEP while the rest of the coordinates are minimized over with g03.
This implementation is interfaced to Gaussian 03 (g03) with a series of perl and 
python scripts. This version runs in parallel, but may have to be tweaked for
your particular system.

Building the Executable
-----------------------
Included is a Makefile. The default compiler is set to 'pathf90' and 'mpif90'
for the modules that include MPI routines. You should change these commands
to match your system, and then compile the code with the command 'make'.

Running the SN2 example
-----------------------
To create the directory structure required by the code type:

perl create_dirs.pl 10 test_SN2

Here 10 are the number of images that are in the path. This
number must be equal to or larger than the number of processors
being used. This script will make the required directories
and copy the contents of test_SN2 to each directory.

Look at the file.inp and make sure that the parameters
are set correctly. For this particular example we are using the
damped BFGS update (order=0). 

Submit the job with the script

./submit

The output will be generated in the mytest.log.

To try the Muller-Brown example, copy file.inp_MB to file.inp and run the code again.

Understanding the Output file
-----------------------------
|g_start| - is the gradient at the endpoint. This should be a small number if your structure is correctly minimized
tr: - the norm of the trust radius in all dimensions.
Max dfval:  - The value, |g.(I - t^T. t)| which shows how close the method is to convergence.
total movement: - How far each point moved.
||p_i-p_i+1||: - the distance between points.
rho: - <rho (should be close to 1)> <old trust radius> <new trust radius>

Perl Scripts
------------
simple.pl - produces a string of ssh commands to send to different nodes. The only
	    command line argument is the number of images. This then calls sendjobs.pl to run the ssh
            commands in parallel.
sendjobs.pl - Runs each command in argument list in parallel.
format_math_table.pl - Formats data for Gaussian.
final_g03_info.py - Gets the energy and gradient from the Gaussian log file.
create_dirs.pl - Creates directories for each image with the correct files. For example
	         it could be run as 'perl create_dirs.pl 10 vinyl' to setup the files
                 for a 10 image vinyl alcohol system. This assumes that the directory
	         vinyl exists. This script should be run by the user before submitting
	         a calculation.

C Shell Scripts
---------------
g03go.sh - Runs g03 locally on a node.
qsm.sh   - Queuing system script to run QSM code.

Fortran Files
-------------
main.f90  fileio.f90  Master.f90  NEB_toolbox.f90  MatrixOps.f90  skb.f90  math_head.f90  mvlsq.f90  Slave.f90  string.f90  Funcs.f90

Input Files
-----------
file.inp  file.inp_ala2  file.inp_MB  /test_SN2/file.inp

Only file.inp is read in by the QSM code. Each parameter is described with comments in the file.
This is followed by the internal coordinates of the endpoints.

Contact information
-------------------
If you have any trouble with this code send an email to 
Steven K. Burger (steven.burger@duke.edu or burgers@mcmaster.ca).


