Skip to content

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).


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)