
The Acoustic ToolBox includes four acoustic models:

   BELLHOP: A beam/ray trace code

   KRAKEN:  A normal mode code

   SCOOTER: A finite element FFP code

   SPARC:   A time domain FFP code

A common input structure has been used throughout so that only minor
modifications are needed to switch from one program to another.

All the models produce shade files which can be processed
using a common set of plotting routines to plot transmission loss
vs. range or vs. range and depth.  These plotting routines
are contained in the GLOBAL directory.

A few things to know about porting the code:

(1) You can speed things up on an SGI by using the -lfpe switch
to have underflows replaced by zeros. This speeds up the execution
significantly by preventing the propagation of underflows. See
your SGI manuals ...

(2) Fortran compilers differ in whether record lengths
should be declared as bytes or words. To ensure the programs
run, I declare lengths in bytes. If your compiler uses words
as the default, look for a compiler switch to override that so
that your files are not unnecessarily large. (On SGI's that's
-bytereclen).

(3) The RAN random number routine does not exist in all FORTRANs
(used by covar to simulate noise, and krakenc to generate random
restarts for the root finder). To get around this, I've added
the subroutine ran.f (from lapack). You can remove it, if your
Fortran has a handy substitute.

(4) The mathieu.f routines needs to be compiled
with a switch to initialize all variables to zero.
Most compilers have some such switch. On the SGI
machines it's -static.

(5) The Twersky-scatter option is problematic because it calls mathieu.f
and slbessel.f which don't adhere to a rigorous Fortran standard. If you
have problems compiling those routines then don't. Remove all references
in the Makefiles to them and copy twerskfuse.f to twersk.f and your problem
is solved (except that you won't be able to use that scatter option).

(6) The plot routines have all been re-written to produce an
ascii file containing the data that needs to be plotted.
The UNIX scripts that run those routines automatically initiate
a particular graphics package called ACE/gr (which has particular
versions xvgr for Sun's and xmgr for other workstations). It is
available on the web but you'll have to search for it.

(7) If you use Matlab, you'll find a set up m-scripts in at/Matlab
that can also be used for most plotting functions.

(8) time.f is called by all the programs just to produce an
output of the cpu time used. If you don't have an easy way
to get cpu time, just edit time.f to return 0.0.

(9) Some of the programs in this package use direct access
i/o and need to know a record length. UNIX does not maintain
this information as part of the file info so the code writes
that information directly into the file. Then the file
is opened twice: first with a dummy record length to read
the actual record length from the file. Then it is re-opened
with the correct record length. On other machines that do know
the correct record length, that first open should be removed.
The RECL specifier should then also be removed from the
second open.

(10) Porting to Fortran 90:
In Fortran 77, DIMAG is used to take the imaginary part of
a double precision variable. In f90 DIMAG does not exists
and the generic function AIMAG is the replacement.
AIMAG exists in f77 but is a specific function requiring a
single-precision argument. So, you will have to change
3 instances of DIMAG to AIMAG. You'll see where they are
because they'll generate error messages.



*************************************************

Warranty: The sale of this product is `as is' and
without any express warranties. Liability, if any, is limited to refund
of purchase price only upon return of product and package to manufacturer.

Pound ratings are subject to variable conditions and are for comparison
only.

Do not eat.

12/97 Minor changes have been made to the package for improved
      f77 to f90 portability. Fortran 90 seems to
      treat parameters differently in terms of precision so
      some of those changes are important for the most accurate
      results.
