# Normal Modes

In the late 1970's several normal-mode models existed which were widely used for predicting acoustic transmission-loss in the ocean; however, each had its own problems. Typical difficulties included numerical instabilities for certain types of sound-speed profiles and failures to compute a complete set of ocean modes. In short, there was a need for a model that was robust, accurate, and efficient. In order to resolve these problems a new algorithm was developed forming the basis for the KRAKEN normal mode model.

Over subsequent years, KRAKEN was greatly extended, with options for modeling ocean environments that are range-independent, range-dependent or fully 3-dimensional. The current version offers a specialist a vast number of options for treating ocean-acoustics problems (or more generally acousto-elastic waveguides). On the other hand, it is easy for a less sophisticated user to learn the small subset of tools needed for the common problem of transmission-loss modeling in range-independent ocean environments.

**KRAKEN** normal mode program

Report (includes an extensive discussion of the theory of normal modes).

- HTML
- PostScript
- Source code (in the Acoustics Toolbox)
*(M. Porter)* - KrakenZ: This version uses a new root finder based on winding number integrals that is much more robust. (Guide)

Note: Should be installed in your Acoustics Toolbox folder. (see Makefile)

*(P. Cristini/**CNRS**-Laboratoire de Mécanique ed d'Acoustique, France)*

**ORCA** normal mode program

**Python Codes**

Python Scripts for reading/writing input/output files

*(Orlando Rodriguez, Univ. of Algarve*

arlpy, a Python interface to BELLHOP. Some of these tools may be useful for KRAKEN as well

(*Mandar Chitre, National University of Singapore*)

PyAT : A fairly developed Python interface to the Acoustics Toolbox, essentially translated from the Matlab interface to Python with added code to facilitate the use.

(*Hunter Akins, UCSD*)

**Matlab Codes**

Matlab KRAKEN: A version of KRAKEN with a MEX wrapper so that it can easily be called from Matlab

*(B. Dushaw APL , Univ. of Washington* )

Krak_mat: A Matlab version of KRAKEN (readme)

aw: A Matlab code for computing normal modes based on Chebyshev approximations

(*M. Dzieciuch/Scripps Institution of Oceanography*)

NMPQ : Matlab code that uses the P-Q description of the bottom reflection coefficient; these represents slopes of the magnitude and phase of the reflection coefficient. (readme)

*(E. C. Shang and Z. D. Zhao, Institute of Acoustics, Chinese Academy of Science )*

Numerov Mode Code: A Matlab demo code using the Numerov finite-difference scheme.

(*B. Dushaw, Applied Physics Laboratory, U. Washington) *

rimLG: A Legendre-Galerkin code for calculating normal-modes in Matlab (readme)

*(R. Evans)*

NM-CT: A Chebyshev-Tau spectral method for normal modes of underwater sound propagation with a layered marine environment in Matlab and fortran (Reference)

*(Houwang Tu, National University of Defense Technology, Changsha, China)*

MultiLC: A Legendre collocation method based on domain decomposition to calculate underwater sound propagation in a horizontally stratified environment

in Matlab and fortran (Reference)

*(Houwang Tu, National University of Defense Technology, Changsha, China)*

**Legacy Routines (may need work to run)**

MOATL MOdal Acoustic Transmission Loss program in fortran ( readme)

*(F. Ingenito, S. Wolf, J. Miller/Naval Research Laboratory)*

NLayer: Pedersen-Gordon underwater sound propagation-loss program in fortran and Report

(*Org. Naval Ocean Systems Center; PC version M. Hall/Defence Science and Technology Organization, Australia )*

Couple: a coupled normal-mode code (fortran with report)

*(R. Evans)*