This is a second release of the MONTEREY-MIAMI PARABOLIC EQUATION (MMPE) Model. A full description and examples were provided in the SWAM’99 analysis [J. Comp. Acoust. 9, pp. 243-285, 2001]. In addition, this README file provides a detailed description of how the model works and how the input files are formatted.

In an attempt to make the model as general as possible, some aspects of the code and input files have purposely not been formatted in the most efficient manner. It was my goal, however, that it will be very easy for anyone to use with a minimal amount of training or "knob- turning."   Provided in this directory is only one version of what will be two or three versions of the MMPE Model. This version, with executable default name "mmpe2dbbv2", is a broadband version of the 2-D PE model.

This second version of the MMPE model has several key differences from the first version:

1)      A previous error in the volume attenuation calculation has been corrected.  This was most notably problematic in making bottom attenuation about an order of magnitude too small in the first version.  This version has been successfully benchmarked against analytical predictions of normal mode loss and seems to work quite well.

2)      Particle velocity calculations are now standard, and the output file names for the velocity components are defined in 'pefiles.inp'.

3)      Related, both 'peout1.m' and 'peout2.m' can distinguish the type of file (an identifier was added in the header).  'Peout2.m' shows dB “Transmission Loss” plots for the particle velocity components, just like with pressure.  But the 'save' option still saves the complex quantities.  Also, upon saving the particle velocity files, the values are rescaled by 1/rho*c to produce appropriately scaled amplitudes relative to pressure.  (Since I don't currently define a source level, all of these values are purely relative and have no absolute meaning.)

4)      All input files are 2-D.  In other words, the two environmental files that had number of bearings and angular spread ('pessp.inp' and 'pebath.inp') have had those lines removed.  (I'll create a new, 3-D version of MMPE some other day.)

5)      There is a new line added at the top of 'pessp.inp' that is simply a scalar, '0' or '1'.  This is a Boolean flag for turning on the water volume attenuation ('0' is off, '1' is on).  The previous version of MMPE always had this turned on, and some people didn't like that.

6)      Finally, I've made this version use the complex density approach of Zhang and Tindle [J. Acoust. Soc. Am. 98, pp. 3391-3396, 1995] for the treatment of bottom shear.

From this version of the model, three binary files are created (the limits of which will be discussed below) in each of which is contained a header providing much of the necessary information on the calculation and is used in post- processing the results. The vast majority of this file is simply the PE field function (the psi function), or the associated particle velocity component, from which nearly every acoustic quantity can later be computed. Also, since the output has been formatted in this standard fashion, a single program has been written in Matlab which can read this binary file and compute nearly any quantity the user desires. To initialize this routine, you must first run "peout1" in the Matlab environment. This reads in the header information and provides the file id for subsequent analysis. You can then run "peout2" which offers various options for process the data. These routines should be relatively self-explanatory.


Main Input File:

pefiles.inp - This is the ONLY filename that MUST exist. All other input files are specified in this file. The placement of the input data in this file MUST follow the ":" character in its current position. The first several inputs simply define the other input files and are self-explanatory. Note that the output data files requested will be binary files and will overwrite any other files by those names. The following line, e.g.

nzout, depmin[m], depmax[m] :64 0 400

specifies the "requested" number of points in depth, minimum depth [m], and maximum depth [m] to output. The program will try to come as close to this request as possible. Similarly, the next line, e.g.

nrout, rngmin[km], rngmax[km] :10 0 5.0

specifies the "requested" number of points in range, minimum range [km], and maximum range [km] to output. The program will try to come as close to this request as possible. The final line in this file, e.g.

nz, dr[km], depcalc[m], c0[m/s] :0 0.0 0.0 1500.0

is designed to allow flexibility. These numbers represent the vertical FFT size (INTEGER multiple of 2!), the range step [km], the maximum depth of calculation [m], and the reference sound speed [m/s]. All of these numbers can be set to 0 and default values will be chosen based on the other input data. The only exception to this is c0 which will always be chosen as 1500 m/s unless otherwise stated. Note that the default values for range step and FFT size are chosen to produce the most accurate result, NOT the most efficient. You may find adequate accuracy with larger range steps or smaller FFT sizes which would speed up your run times (important for very high frequency or very broadband calculations).

Environmental Data: (refer to example files included)

pessp.inp - This file contains the sound speed profile data. The first line contains a single, Boolean value (0 or 1) to define whether or not water volume attenuation should be used (no or yes). The second line contains a single number indicating the number (INTEGER) of sound speed profiles contained in the first radial. The following line contains two numbers indicating the range [km] (FLOAT) of the current profile and the number (INTEGER) of sound speed values in depth at this range. Finally, the profile itself is defined by a pair of numbers (FLOATS) stating the depth [m] and sound speed [m/s] of the sound speed profile.

pebath.inp - This file contains the bathymetry of the water/bottom interface. The first line contains the number (INTEGER) of bathymetry points defined. This is then followed by the bathymetry defined by pairs of numbers (FLOATS) stating the range [km] and depth [m] or the bathymetry point.

pebotprop.inp - This file contains the acoustic parameters of the medium just below the water/bottom interface. Note that bottom properties are not depth dependent (with the exception of the sound speed which can have a constant gradient) but can be range-dependent. This range dependency can be entirely independent of the bathymetry. In other words, the ranges specifying changes in the bottom properties do no have to coincide with the ranges specifying changes in the bathymetry (as was the case in UMPE). Therefore, the first line contains the number (INTEGER) of different range points at which the bottom properties are defined. This is then followed by that many lines, each line containing seven numbers (FLOATS): range [km] where these values apply, sound speed [m/s], sound speed gradient [1/s], density [g/cm^3], compressional attenuation [dB/m/kHz], shear speed [m/s], and shear attenuation [dB/m/kHz].

pedbath.inp - This file defines the "deep" layer bathymetry beneath the water/sediment interface. The bathymetry values are measured relative from the sea surface. Therefore, an extremely deep bathymetry value (deeper than the computational depth) will not even be used whereas a bathymetry value shallower than the water/bottom depth will supercede the upper layer and become the water/bottom depth (e.g., as would occur for a rock outcrop in a sediment pool). This file has exactly the same format as the upper layer bathymetry file, "pebath.inp".

pedbotprop.inp - This file contains the acoustic properties of the deep layer and has an identical format to "pebotprop.inp".

Source Data:

pesrc.inp - All of the source information is contained in this file. Again, the format of this file must be maintained insomuch as the actual values must follow the ":" character in its current position. The description preceding each value makes this file mostly self-explanatory. Note that two source types are available - a wide-angle source (which approximates a point source) and a vertical line array (approximated by a continuous line array). If an array length of 0 is specified, the code defaults to the wide-angle source. The D/E angle is ignored in this case (since point sources can't be steered). If a non-zero array length is specified, a simply line array is modeled by a sinc function. The D/E angle is then used to steer the main beam of the array, positive angles steering the beam downward, positive angles steering the beam upward. All numbers in this file are FLOATS with the exception of the last value, the number of frequencies (must be a power of two!), which must be an integer. (NOTE: I also have a subroutine which takes as input various source depths and relative weights to provide a more general array description. If interest is strong enough, I will incorporate this into an upgraded version.)

This completes the description of this release of the MMPE model. There are likely other bugs in algorithm logic and numerical implementation which I have not yet found. Please let me know of any problems you encounter and give me feedback on the ease of use of this new version.

Thanks for your interest in this  model.

Kevin B. Smith

Please direct all of your comments/complaints to:

Prof. Kevin B. Smith (
Code PH/Sk
Department of Physics
Naval Postgraduate School
Monterey, CA 93943
(831) 656-2107