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

normalmode

Python Codes

Pynm:  A Python implementation of KRAKEN, a normal mode solver for underwater acoustic propagation.
(Hunter Akins, UCSD))

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)

OMesh2Kraken:  A toolbox to generate unstructured meshes for KRAKEN based on realistic environmental data (bathymetry, water temperature, and salinity). There is a paper explaining how to run it with practical examples.   (2023)

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)