
UPDATES:

 1/30/86  New versions of KRAKEN and KRAKENC correct a bug in
          eigenvector computations which probably did not affect
          you unless you saw the error message "failure to
          converge in SINVIT" 

 2/18/86  Bug in KRAKENC corrected which affected eigenvector
          accuracy for strongly attenuated modes.  When
          significant, this error would have been flagged as
          "SINVIT FAILED TO CONVERGE". The field computation has
          been made a common subroutine called EVAL for use by
          PLOTTLR, PLOTTLD, FIELD, ... to assure consistency and
          simplify any changes to the field computation. The
          modified version stores the field matrix in a fashion
          which allows for up to 50000 field points essentially
          independent of whether the matrix is 50000x1 or
          1x50000, etc. With EVAL a common routine, the X,R or S
          parameter which indicates cartesian, cylindrical or
          scaled cylindrical field computations has been
          incorporated in all the field computing routines. 

 3/12/86  TILT and DISPLACE merged into the FIELD program so that
          one routine is used for vertical, tilted or displaced
          arrays. Also, a blank line for last record in '.RED',
          '.SOD' and '.RER' files is no longer needed. 

 4/8/86   CLOW parameter added for compatibility with SCOOTER FFP
          program. At some later date KRAKEN will be modified to
          allow the mode calculation to be restricted to the
          [CLOW,CHIGH] phase speed interval, but for now CLOW is
          a dummy parameter. 

 4/23/86  KRAKEN and KRAKENC modified to allow one or more
          elastic media above the water column.  Thus an elastic
          ice model may be used. Additionally 'KRAKEN- ' or
          'KRAKENC- ' is now inserted before the user supplied
          title.  With several programs now producing shade files
          it is desireable to have this indicator on plotted
          output. 

 5/22/86  FIELD and PLOTTLR modified to treat range dependent
          environments by adiabatic mode theory. 

 6/1/86   Surface scatter options modified to accomodate Twersky
          ice scatter as an amplitude only effect.  Hard surface
          backing option removed since it seemed more a hazard
          (of accidental use) than a benefit.  Some unit numbers
          changed: most input is now done from unit 5 rather than
          1 which makes it simpler to run the program
          interactively since unit=5 is the default input unit;
          the unit numbers for '.VEC' and '.WNO' have been
          changed so that with adiabatic mode runs a series of
          such files can be allocated to sequential unit numbers. 

 6/15/86  FIELD3D module added which generalizes adiabatic mode
          theory to 3-dimensional problems. 

 11/1/86  Environmental file closed promptly after data is read for
          user convenience. START module added to provide a start-up
          field for PE programs. 

 11/30/86 Spline option fixed.  This had apparently not been used
          by anybody and was not properly updated when the input
          file format was changed.  Also, added check to
          gracefully abort the program when the problem is too
          big for dimensioned storage. 

 1/8/87   Slight changes in format statements on input to avoid
          the problem of neglected decimal points causing
          disasters. 

 2/13/87  KRAKENC modified to gracefully handle problems where
          the user requests more modes than KRAKENC is
          dimensioned to handle. Both KRAKEN and KRAKENC modified
          to narrow a user specified phase speed interval which
          is unnecessarily large. (Eliminates the problem of a
          user specifying a CLOW which is so low as to cause a
          failure to converge in the root finder.) Dimensions
          increased to allow for up to 1000 modes. 

 3/20/87  All modules modified to use a single mode file instead
          of separate files for eigenvalues and eigenvectors. 
          Thus '.WNO' and '.VEC' are now '.MOD'.  This simplifies
          the command files, especially for 3D runs which employ
          numerous mode files. Adiabatic versions of PLOTTLR and
          FIELD have been made the only versions.  Thus PLOTTLRAD
          replaces PLOTTLR.  This is a step in the direction of
          reducing the proliferation of new modules with minor
          variations over existing modules. SCOOTER FFP program
          integrated into the package. 

 6/1/87   Options for different kinds of boundary conditions
          added. Allows free, rigid and homogeneous half-spaces
          at top and bottom. Environmental file format changed
          slightly to accomodate same. 

 8/10/87  Bug in section which scales to avoid under/over flow
          corrected. Caused an overflow error to occur in the
          special case where a mode became exactly 0.0 at one of
          the finite difference points. 

 2/1/88   Errors in line-source represention corrected. The line
          source is of virtually no relevance in underwater
          acoustics so this probably doesn't affect you.  Coupled
          mode solution implemented but density variations and
          half-space contributions are ignored. 

 6/29/88  Inefficiencies in mode reading removed. Source,
          receiver depth files eliminated.  ( Use of the /
          command to terminate records combined with an
          interpolation routine made the '.SOD' and '.RED' files
          an unnecessary incumberance. ) KRAKEN input structure
          modified so that all lines are now read in using list
          directed I/O. 

 8/1/88   Some problems in tabulated bottom refl. coeff.
          corrected. Also corrections to FIELDS which made it
          necessary to use more k-space points than it should
          have needed. Interfacial scatter finally implemented
          correctly. 

 10/5/88  Modified to allow up to 301 SSP pts.  Changes to
          internal structures to do this efficiently.   

 6/10/89  Addition of source/receiver depth line.  This allows
          the user to specify the depths at which modes are
          written to the mode file.  Changes to various plotting
          routines to allow the user to specify the axis lengths. 
          Change to SSP input structure: in the old version the
          user had to provide a count of the number of SSP points
          in each layer.  In the new version you simply provide
          the depth at the bottom of each layer.  The program
          keeps reading SSP points till it reaches that depth.

 9/19/89  Several structural changes to the codes have been made.
          A subroutine READIN replaces the previous INCLUDE for
          reading the environmental file and a routine BCIMP has
          been written which combines TOPIMP and BOTIMP routines
          for the boundary conditions.  BCIMP has been written so
          that there are no differences between the options
          available for top and bottom boundaries. (Actually,
          that's not entirely true since the internal reflection
          coefficient option is still only implemented for the
          lower boundary.)  The interfacial roughness calculation
          has been separated from the mode normalization code to
          improve readability. 

 10/30/89 The option 'M' for attenuation in dB/m has been
          implemented. This is a one-line formula in the routine
          CRCI which, despite appearing in earlier documentation,
          seems to have gone unimplemented till now.

 11/20/89 Changes in FIELD3D calculations.  In the original
          version the receiver was located at the origin and the
          source moved out in range.  The present version is
          consistent with the other field calculation routines in
          that the source is fixed at the origin and the
          receivers move out in range.  In addition, the option
          for multiple source depths is now implemented.

 12/11/89 KRAKEN/KRAKENC modified to produce a MODFIL even when
          there are no propagating modes.  This eliminates the
          need to introduce DUMMY nodes in a FIELD3D run.

 2/2/90   Changes to mode file format. The new
          format is much more compact for problems with lots of
          modes. In addition, it includes the density and
          half-space properties so that the field can be
          calculated in a half-space.  Also FIELD now allows a
          title to be specified.

          Error in FIELD removed. In range-dependent calculations
          the number of modes, M, may sometimes be reduced in
          propagating out in range.  The error in FIELD was to
          not reset M for subsequent sources, possibly causing
          erroneous results.  This error would only have affected
          range-dependent problems with multiple sources.

          Changes to KRAKEN and KRAKENC to reduce storage.

          Small change in adiabatic calculations (routines EVALAD
          and EVAL3D.  The denominator in the adiabatic
          expression involves sqrt(k(r)r).  In the previous
          version (as in certain other modal codes the mean value
          of k(r) was used instead.  In practice, you'll be
          hard pressed to spot the difference in TL calculations.

 3/30/90  Errors in PROFIL routine corrected.  The LOC variable
          was not being saved between calls and there was also an
          illegal reference to LOC(0).  On a VAX the former
          problem is a non-issue because VMS Fortran
          automatically saves variables.  The latter is only a
          problem when LOC(0) accesses a non-zero value or a
          protected memory location.

          Also, if you ever used the Thorp attenuation option you
          know that it wasn't working right.  A missing factor
          was causing attenuation values about 10,000 times too
          large!

 6/20/90  Bug in FIELD3D corrected which caused errors when the
          step size between points where TL was calculated was
          large enough that there was not at least one TL point
          in each triangle. An analogous problem was also
          corrected in FIELD for adiabatic calculations.  PDQ
          option added to FIELD3D for quicker but less accurate
          3D calculations.  Finally, FIELD3D has been modified to
          allow radials to pass directly over nodes of the
          triangulation.  Similarly, the source can now lie
          anywhere in the plane (on a node or even outside the
          triangles).

 12/10/90 Extensions to coupled mode routine.  Density and halfspace
          contributions are now included.  This has necessitated
          some modifications to the MODFIL format.

          A program BOUNCE has been created to compute a reflection
          coefficient for a multilayered domain.  This reflection
          coefficient can be passed to KRAKENC to provide a boundary
          condition or plotted using the new routine PLOTRTH.

          NEW IMPROVED KRAKENC! Up to 3 times slower than the old
          version!  I've added an option which causes KRAKENC to
          perform a very careful root search.  In certain elastic
          problems the old root finder was found to miss modes.
          Unfortunately making the root finder more robust entails
          slowing the code down.  As a compromise, I've introduced
          the slow/robust root-finder as an option.  For more
          information see TOPOPT as described in KRAKEN.HLP.

  1/26/91 The XL and XR arrays were erroneously dimensioned one
          element too small.  This caused an error in the special
          case when the number of modes was exactly equal
          to MAXM, the maximum number of modes KRAKEN is dimensioned
          to calculate.

          Modifications to the adiabatic mode calculation routine
          EVALAD.  With a very coarse distribution of receivers in
          range the results differed from the convergent answer
          obtained with say 500 range points.  Basically, there was
          some sloppy handling of the phase integral in range
          which assumed you had a dense sampling of points in
          range.  (Practically the inaccuracy introduced was
          probably less than that due to the adiabatic
          approximation itself.)


  5/15/91 Error corrected in READIN.  The vectors CP and CS were
          dimensioned to a length of one element.  When the analytic
          profile option is used this is not sufficient.

  5/20/92 Common blocks reshuffled to avoid alignment errors on
          various UNIX systems during compilation.  Double opens
          implemented to get record lengths from files on UNIX
          systems.  A missing EXTERNAL statement has been added to
          the SLATECBESSEL package.  On SGI systems this was flagged
          at compilation time and subsequently led to erratic
          results.

          An error has been corrected in KRAKEN which
          caused minor discrepancies with the KRAKENC result.
          KRAKEN was taking the single precision part of the SSP
          rather than the full double precision available.  Since
          the models write the mode files in single precision, this
          error only shows up on the print-out where the full precision
          is shown.  Also, it did not affect results on VAX machines.

          An error in the 'Q' type attenuation has been fixed.  The
          error caused any attenuation to be ignored when using this
          option.

 9/25/92  The option of putting an acousto-elastic halfspace
          on the top was not working properly. (It took the
          density from the lower halfspace.)

 11/9/92  Error corrected in coupled-mode calculations (subroutine
          EVALCM).  The program multiplied the profile ranges
          by a factor of 1000 to convert km to m every time it
          was called. The error was that the scaling was repeated
          for sources after the first.  This had the effect of
          stretching the environment so much that it was effectively
          range-independent for subsequent sources.

 1/20/93  Form feeds removed.  TYPE and ACCEPT statements removed.
          Routine COVAR written to generate a covariance matrix
          for matched-field processing with colored or white
          noise. BART and CAPON implemented to compute
          ambiguity surfaces.  A few other minor changes were
          made to accomodate the more sensitive AIX (IBM) and
          AbSoft (NeXT) compilers.

 6/ 5/93  KRAKEN and KRAKENC have been modified to discard
          any eigenvalue returned by the root finder if
          an error occurred during the search. This fixes
          a problem that occurred in some elastic cases
          where extra modes were returned. Also, the e(i pi/4)
          factor has been added to the pressure calculations.
          Since this phase does not affect TL or standard
          beamformers, it had never been included.

 8/20/93  KRAKENC has been modified to zero out the imaginary
          part of an eigenvalue if it's positive.  A positive
          imaginary part may occur when the true root is just
          below the real axis. For such roots the root-finder
          can give a very accurate approximation to the root
          that just happens to be on the positive side of
          the axis.

          A check has been added in COVAR for zero eigenvalues.
          The colored noise model will always fail in such
          cases since without attenuation the noise sheet
          leads to infinite intensities.

12/26/93  Unix version was not creating empty mode files
          correctly for the case when no modes were present.

 4/ 9/94  Adiabatic calculations were showing excessive
          round-off error when many (>1000) receiver
          ranges were used.  The offending variable has
          been converted to double precision in EVALAD.F and
          EVALD3D.F

          KRAKENC was not setting the value for the
          last calculated mode when it aborted the
          run because the mesh was too coarse.

          All programs have been set up to open Fortran files
          by name rather than unit number. This gets around
          the problem that different vendors use different
          default names for files causing the scripts to
          need to be modified for each machine.

 6/23/94  Bug fix in KRAKEN: a variable was not properly initialized
          in the special case where a mode cutoff on the 3rd
          or subsequent meshes. To fix it, FUNCT has been modified
          to return 0 and zsecx.f has been modified to quit immediately
          when f(x) = 0 (identically).

 3/13/95  Various routines for calculating the acoustic pressure
          were missing a factor of i (eval.f, eval3d.f, evalcm.f, ...
          This has no effect on TL but leads to a Hilbert transform
          in time-series calculations.

 3/15/96  The logical record length used in opening the mode files
          was too small in the case of many layers and few receivers.

 4/19/96  getmod.f was testing the proximity of the receiver depth
          to the tabulation grid using points above and below the
          receiver. This is not valid when there is only one tabulation
          point ... The code has been modified to bypass linear
          interpolation for this case.

 5/27/96  An option has been added to calculate the finite difference
          grid (NMESH) automatically.

10/29/96  For adiabatic field calculations, erroneous results are
          obtained if the first profile does not start at zero range.
          A test has been added to field.f to enforce this.

10/14/97  FIELD3D failed without explanation in a case where there were
          more modes than allocated storage (MAXM). A test has been added
          to flag this error in all routines.

11/30/97  MODBIN/MODASC have been modified so that the ascii file format
          is easier to read into matlab programs. LAPACK implementation
          of RAN() included to aid portability. Bug in BOUNCE ...
          it was accessing (but not using) LOC( 0 ) in calculating the
          reflection coefficient for a stack of elastic layers with no
          acoustic layer.

 1/98 PLOTRTH has been modified to include new display options.
