SBCX logo

 The Santa Barbara Channel Experiment (SBCX)

How to make RAM and KRAKEN agree in range-independent environments

Peter Daly, MIT Ocean Acoustics, pmd@mit.edu

Normal mode propagation is efficient when the signal path can be modeled as a simple waveguide. When one source excites the waveguide, the pressure field at any point in the waveguide can be expressed as a sum of normal modes and their wavenumbers. This eigenvalue/eigenvector equation is referred to in underwater acoustics as Green's function, and it takes the form

Green's function
where zs and zr are the source and receiver depths, r is the range between source and receiver, N is the number of modes in the waveguide, phin(z) is the nth normal mode evaluated at depth z, and kn is the wavenumber associated with mode n.

On the other hand, the parabolic equation (PE) method does a better job at handling range dependent propagation, when the bathymetric conditions vary between the source and receiver. One implementation of this is called RAM, written by Michael Collins.

It is useful to compare the output of a PE model with a normal mode model. Under similar range-independent propagation environments, the complex pressure fields should be equivalent. To achieve this, certain parameter constraints must be imposed on the propagation code variables, and small modifications must be made to the output of both sets of code.

KRAKEN: A normal mode simulation code

KRAKEN, written by Michael Porter, is a flexible normal-mode propagation code used extensively throughout the ocean acoustics field. More information (including a well-documented user's manual) can be found from the Ocean Acoustics Library web site.

KRAKEN does not explicitly calculate the acoustic pressure; instead it calculates the normal modes and wavenumbers for a specific source/receiver depth pair. One must use Equation 1 above to calculate Green's function. The program green-function reads the KRAKEN output and produces the correct complex pressure field.

Below is a line-by-line description of an input file using an isovelocity sound profile.

Title for KRAKEN run. Ignored by the propagation code 'KRAKEN run for mode projection at FFP array'
Frequency (100 Hz in this case) 100.000000
Number of media layers. For the SBCX environment, this is 3 3
Option line:
  • C: C-linear interpolation for the SVP
  • V: Vacuum boundary conditions
  • W: attenuation in dB/wavelength
CVW
Water layer medium info. The first zero is the number of mesh points; 0 tells KRAKEN to calculate the optimal number on its own. The next number, RMS roughness, in this simplified case is also zero. The depth of the water column is 197.7 meters (the third number) 0 0 197.700000
Sound speed profile. This is an isovelocity profile, with speed constant at 1500 meters/sec. The forward slash (/) tells KRAKEN to use its own defaults for density, attenuation, etc.
0.000000 1500.000000 /
197.700000 1500.000000 /
First sediment layer, consistent with the SBCX environment 0 0 286.700000
197.700000 1560.0 0.0 1.85 0.18 0.0
286.700000 1821.0 /
Second sediment layer, also consistent with the SBCX environment
0 0 586.700000
286.700000 1862.0 0.0 1.88 0.03 0.0
586.700000 2374.0 /
Bottom halfspace: an acoustic halfspace with RMS roughness of 0.0 A 0.0 586.700000 2374.0 0.0 2.03 0.04 0.0
Phase speed limits. These will be set to the minimum sound speed on the lower limit, and the upper limit will be set to the bottom halfspace sound speed (the highest sound speed) 1500.000000 2374.000000
Maximum Range. Here, 25000 meters. 25000.000000
Source/Receiver depth information. A single source is placed at 30 meters depth, while 401 receivers will be placed every meter from 0 to 400 meters depth, inclusive. The number of receivers ensures the KRAKEN output file will have sufficient granularity to evaluate the modeshapes at any depth. 1 30
401 0.000000 400.000000 /
End of KRAKEN input file

RAM: A Parabolic-Equation simulation code

By default, RAM outputs the transmission loss at a receiver, instead of Green's function. The source code of RAM was modified internally at MIT by Brian Sperry and Peter Daly to do the following: Both features resulted in minor changes made to the structure of the input file. Below is a line-by-line description of an input file using an isovelocity sound profile.
Title line (ignored by the propagation code): RAM run,(range: 20000), freq 100.000000,flags: s2r0p0
Frequency (100 Hz), Source Depth, (30 meters), Receiver depth (30 meters). The receiver depth is ignored, since the pressure field is calculated for the entire water depth at each range step. 100.000000 30.000000 30.000000
Maximum range (20500 meters) Range step (5 meters), and Range decimation (1: no decimation) 20500.000000 5.000000 1
Maximum depth to calculate (1000 meters), Depth step (0.25 meters, see memo), depth decimation (1: no decimation), and maximum depth to write to the output file (300 meters) 1000.000000 0.25 1 300.000000
Reference sound speed (1480 m/sec), Number of terms in the rational approximation (8: overkill), number of stability constraints (1), and maximum range of stability constraints (0) 1480.000000 8 1 0.000000
Starter field flag (0: no starter field) 0
Range extraction parameters:
  • Output Pressure field? (0: no, 1: yes)
  • Include spreading loss or scale factor? (0: No spreading loss, but do include complex exponential, 1: Include spreading loss and complex exponential, or 2: Do not include either a spreading loss or a complex exponential)
  • Transmission loss line in output? (0: no, 1: yes)
  • Restrict output to the specific range given below? (0: no, 1: yes)
  • Operate in Reciprocity mode, changing steps on the fly? (0: no, 1: yes)
1 2 0 1 0
Output range restriction: Here, only write from 19750 to 20250 meters range to file. This line is only present when an output restriction is specified above. 19750.000000 20250.000000
Bathymetric Parameters: range, depth pairs, one each line, describing the bathymetry from source to receiver. Here, we are modeling a range-independent waveguide, so there is only one entry. The end of the bathymetric data is given by the -1, -1 line. 0.000000 197.700000
-1 -1
Sound Velocity Profile: Depth, speed pairs, one each line, describing the sound speed from top to bottom of the water column. Here, we are modeling an isovelocity sound profile, 1500 meters/second. The end of the SVP data is given by the -1, -1 line. 0.000000 1500.000000
197.700000 1500.000000
-1 -1
Bottom Properties. These are taken from the SBCX standard environment (rev. 1). First comes the compressional sounds speed block, in depth/speed pairs 0 1560.0
197.700000 1560.0
286.700000 1821.0
286.700000 1862.0
586.700000 2374.0
-1 -1
Bottom Properties, continued: Depth/Density pairs 0 1.85
197.700000 1.85
286.700000 1.88
586.700000 2.03
-1 -1
Bottom Properties, continued: Depth/attenuation pairs 0 0.18
197.700000 0.18
286.700000 0.03
586.700000 0.04
-1 -1
End of file

After running the modified RAM with this input file, the output file is processed with the process-ram-output-green program. This reads in the pressure field, and prints it out. It is important to realize the input file called for RAM to not include any compensation for both the carrier or the attenuation due to spreading. These are incorporated into Green's function in the process-ram-output-green program, after spline interpolation of Green's function has been performed. Splining before carrier injection improves the accuracy of the result. The first operation performed by the process-ram-output-green program is carrier injection:
g_{c}(f) = g(f) \exp \left( {j2\pi \frac{f}{c_{0}} r} \right)
where f is the frequency, in Hertz, c0 is the reference sound speed (1480 m/sec, in this case) and r is the range (in meters). The second operation is compensation for attenuation due to range spread,
g_{cr}(f) = \frac{1}{\sqrt{r}}g_{c}(f).

Comparisons

Trials were run (using the input files above) on both RAM and KRAKEN. The environments were identical range independent isovelocity waveguides. For both RAM and KRAKEN to generate similar output, the following considerations were made:

The following table illustrates the magnitude of Green's function at various ranges and frequencies:

100 Hz 250 Hz 400 Hz
100 m
500 m
1 km
1.5 km
5 km
10 km
15 km
20 km

All the code



Last updated: 990826
Comments/Questions: pmd@mit.edu
MIT logo