Linux f90 code written by Tim Mitchell
readme file, 24.2.04

I have written a fairly substantial volume of f90 code in the past few years, mostly
to cope with all the data-sets I have been handling. I have done almost all my data
manipulation in f90, and almost all my data plotting in idl.

The code in this directory was (mostly) originally written in Compaq f90 on crua6,
and was (mostly) subsequently ported to work under the Portland Group f90 compiler 
on the UEA Beowulf cluster (beo1.uea.ac.uk).
This code has been ftp'd back to here to be within reach of crua6 users. Where I have
had the opportunity, I have ported the code back to crua6. This equivalent crua6 code 
may be found in ./../alpha 

The compilation statements in the headers of the main programs will use the pgf90 command
if the program has been ported across to the Beowulf cluster. If I never got around to 
porting, the statements will use the f90 command. If you want to use an unported f90 program 
on the Beowulf cluster, find a pgf90 program and copy the syntax. It should mostly work. 
Exceptions may include:
a. Hard addressing of dump files in the main program (search for 'f709762')
b. Reading the number of lines in a file (via a shell call wc -l) as i10 instead of i8
c. Passing a pointer array to a subroutine, subsequently allocated in the subroutine and
	returned to the main program; for some unknown reason this works fine on crua6 but
	not (or erratically?) on beo1. If you get a segmentation fault, suspect this!
	No easy solution, because I use this construct extensively. You may need to rewrite
	the code to allow two calls. Call the subroutine once to find the dimensions of the
	arrays, then allocate the arrays in the main program, then call the subroutine again
	to fill the arrays. Good luck!
d. Calling a subroutine that has been subsequently modified since I last compiled the main
	program. Check that the variables passed to/from the subroutine are the same in the
	main program and in the subroutine. Changes are usually noted in the subroutine headers.

If anyone wanted to run this software on the Beowulf cluster, it should be quite simple.
1. Copy this directory across to your user area on the cluster. 
2. Ensure that there is a suitable dump directory into which log files can be written.
3. Locate the main program that you want to use.
4. Ensure that the main program writes to a log file in the dump directory.
5. Go to the mod subdirectory. 
6. From the mod subdirectory use the compilation statement in the headers of the 
	main program in which you are interested. (These have optional optimisation.)
7. Execute the compiled program.

Bear in mind that the software is designed to run on data-sets in the formats that I use, 
so you will need to have access to those files on the Beowulf cluster for this software
to be useful on the Beowulf cluster.

The reason that the compilation statements in the headers are designed to be executed from
the mod subdirectory is that most main programs use a large number of modules designed
to be used with a variety of programs. The compilation statements are a lot shorter when 
executed from the mod subdirectory. That is the only reason.
