BELLHOP3D computes
acoustic
fields in 3D oceanic environments via beam tracing. The
environment treated consists of an acoustic medium with a sound
speed that may depend on x, y, and z coordinates. Similarly, the
surface and bottom boundaries may vary with x and y coordinates.
It is patterned after the standard BELLHOP program, so more
information about how to run it may be found in the BELLHOP
documentation.
The following programs are used with BELLHOP3D :
BELLHOP3D Main program for doing Gaussian beam tracing
PLOTRAY3D Produces plots of central rays of beams
PLOTBTY3D
Produces plots of the bathymetry surface
ANGLES Given the source and receiver sound speeds, computes the angle of the limiting ray.
PLOTSSP
Plots the sound speed profile
PLOTSSP2D Plots the range-dependent sound speed profile
BELLHOP3D produces pressure fields in the NRL standard format and can therefore be plotted using the MATLAB script, plotshd.m.
The steps in running the program are as follows:
1. Set up your environmental file and run PLOTSSP to make sure the SSP looks reasonable.
2. Do a ray trace. That is,
A. Run BELLHOP3D with the ray trace option to calculate about 50 rays.
B. Run PLOTRAY3D to make sure you have the angular coverage you expect. Do the rays behave irregularly? If so reduce the step-size and try again.
3. Re-run BELLHOP3D using the coherent, incoherent or semicoherent option for transmission loss. (Use the default number of beams.)
4. Run plotshd.m to plot a full range-depth field plot.
5. Double the number of beams and check convergence.
Files:
Name Unit Description
Input
*.ENV
1 ENVironmental data
*.SSP
40
Sound Speed Profile data
(optional)
Output
*.PRT
6 PRinT file
*.RAY
21 RAY file
*.SHD
25 SHaDe file
'Munk
profile' ! TITLE
50.0
! FREQ (Hz)
1
! NMEDIA
'CVN'
! SSPOPT (Analytic or C-linear interpolation)
51 0.0 20000.0 !
DEPTH of bottom (m)
0.0 1548.52 /
200.0 1530.29 /
250.0 1526.69 /
400.0 1517.78 /
600.0 1509.49 /
800.0 1504.30 /
1000.0 1501.38 /
1200.0 1500.14 /
1400.0 1500.12 /
1600.0 1501.02 /
1800.0 1502.57 /
2000.0 1504.62 /
2200.0 1507.02 /
2400.0 1509.69 /
2600.0 1512.55 /
2800.0 1515.56 /
3000.0 1518.67 /
3200.0 1521.85 /
3400.0 1525.10 /
3600.0 1528.38 /
3800.0 1531.70 /
4000.0 1535.04 /
4200.0 1538.39 /
4400.0 1541.76 /
4600.0 1545.14 /
4800.0 1548.52 /
5000.0 1551.91 /
20000 1551.91 /
'A' 0.0
20000.0 1600.00 0.0 1.8 0.8 /
1
! Nsx number of source coordinates in x
0.0 / !
x coordinate of source (km)
1
! Nsy number of source coordinates in y
0.0 / !
y coordinate of source (km)
1
! NSD
1000.0 / !
SD(1:NSD) (m)
501
! NRD
0 5000 / !
RD(1:NRD) (m)
1001
! NR
0.0 100.0 / ! R(1:NR ) (km)
2
! Ntheta (number of bearings)
0.0 1.0 / !
bearing angles (degrees)
'CG
3' !
'R/C/I/S'
51
6
! Nalpha
-14.66 14.66 / ! alpha1, 2 (degrees)
Elevation/declination angle fan
11
46
! Nbeta
-2 2 / !
beta1, beta2 (degrees) bearine angle fan
100.0 100.0 100.0 20500.0 ! STEP (m), Box%x (km) Box%y
(km) Box%z (m)
The first 6 blocks in the ENVFIL
are common to all the programs in the Acoustics Toolbox. The
following blocks should be appended for
BELLHOP:
Syntax:
NSx
Sx(1:NSx)
NSy
Sy(1:NSy)
NRD
RD(1:NRD)
NR
R(1:NR
)
NTheta
THETA(
1:NTheta )
Description:
NSD: The number of source depths
SD(): The
source depths (m)
NRD: The number of receiver depths
RD(): The
receiver depths (m)
NR: The number of receiver ranges
R(): The receiver ranges (km)
NTheta: The number of receiver bearings (radials)
THETA(): The receiver bearings (degrees)
This data is read in using list-directed
I/O you can type it just about any way you want, e.g. on one
line or split onto several lines. Also if the depths or
ranges are equally spaced then you can type just the first and
last depths followed by a '/' and the intermediate depths will
be generated automatically.
You can specify a receiver at zero range;
however, the BELLHOP field is singular there--- the pressure is
returned as zero.
Syntax:
OPTION
Description:
OPTION(1:1): 'R' generates a ray file
'E' generates an eigenray file
'A' generates an amplitude-delay file (ascii)
'a' generate an amplitude-delay file (binary)
'C'
Coherent TL calculation
'I Incoherent TL calculation
'S' Semicoherent TL calculation
(Lloyd mirror source pattern)
OPTION(2:2): 'G' Geometric hat beams (default)
'B' Geometric Gaussian beams
OPTION(3:3):
'*'
read
in
a
source
beam pattern file
' ' don't (default)
OPTION(4:4):
'R'
point
source
(cylindrical
coordinates)
(default)
'X' line source (cartesian coordinates)
OPTION(5:5): 'R' rectilinear grid (default)
'I' irregular grid
OPTION(6:6): '2' Nx2D run (default)
'3' 3D run
The ray file and eigenray files have the
same simple ascii format and can be plotted using the Matlab
script plotray.m.
The eigenray option seems to generate a lot
of questions. The way this works is that BELLHOP simply writes
the trajectories for all the beams that contribute at a given
receiver location. To get a useful picture you normally want to
use a very fine fan, only one receiver location, and the
geometric beam option. See the examples in at/tests.
The amplitude-delay file can be used with the Matlab script stackarr.m to 'stack the arrivals', i.e. to convolve them with the source spectrum and plot the channel response. stackarr.m can also be used to simple plot the impulse response.
For TL calculations, the output is in the
shdfil format used by all the codes in the Acoustics Toolbox and
can be plotted using the Matlab script, plotshd.m. (Use toasc.f
to convert the binary shade files to ascii format for use by
plotshd.m or whatever plot package you're using.)
The pressure field is normally calculated
on a rectilinear grid formed by the receiver ranges and depths.
If an irregular grid is selected, then the receiver ranges and
depths are interpreted as a coordinate pair for the receivers.
This option is useful for reverberation calculations where the
receivers need to follow the bottom terrain. This option has not
been used much. The plot routines (plotarr) have not been
modified to accomodate it. There may be some other limitations.
There are actually several different types of Gaussian beam options (OPTION(2:2)) implemented in the code. Only the two described above are fully maintained.
The source beam pattern file has the format
NSBPPts
angle1 power1
angle2 power2
...
with angle following the BELLHOP
convention, i.e. declination angle in degrees (so that 90
degrees points to the bottom). The power is in dB. To match a
standard point source calculation one would used anisotropic
source with 0 dB for all angles. (See at/tests/BeamPattern for
an example.)
Syntax:
NAlpha ISINGLE
Alpha(1:NBEAMS)
NBeta ISINGLE
Beta(1:NBEAMS)
Description:
NAlpha: Number of beams in
elevation
(use
0
to
have
the
program
calculate
a value automatically, but conservatively).
ISINGLE:
If
the
option
to
compute
a single beam in the fan is selected (top option)
then
this
selects
the
index
of
the beam that is traced.
Alpha():
Beam
elevation
angles (degrees) (negative angles toward surface)
NBeta: Number of beams in
azimuth
(use
0
to
have
the
program
calculate
a value automatically, but conservatively).
ISINGLE:
If
the
option
to
compute
a single beam in the fan is selected (top option)
then
this
selects
the
index
of
the beam that is traced.
Beta(): Beam azimuth angles (degrees) (math convention with 0 degrees pointing along the x-axis)
For a ray trace you can type in a sequence of angles or you can type the first and last angles followed by a '/'. For a TL calculation, the rays must be equally spaced otherwise the results will be incorrect.
Syntax:
STEP Box%x (km)
Box%y (km) Box%z (m)
Description:
STEP: The step size used for tracing the rays
(m). (Use 0 to let BELLHOP choose the step size.)
Box%x: The maximum distance in the x-direction to trace a
ray (km).
Box%y: The maximum distance in the y-direction to trace a
ray (km).
Box%x: The maximum distance in the z-direction to trace a
ray (m).
The required step size depends on many
factors. This includes frequency, size of features in the
SSP (such as surface ducts), range of receivers, and whether a
coherent or incoherent TL calculation is performed. If you
use STEP=0.0 BELLHOP will use a default step-size and tell you
what it picked. You should then halve the step size until
the results are convergent to your required accuracy. To
obtain a smooth ray trace you should use the spline SSP
interpolation and a step-size less than the smallest distance
between SSP data points. Rays are traced until they exit the box
( Box%x, Box%y, Box%z ). The box is defined with the source at
the center of the coordinate system. Make the box a bit
(say 1%) roomy too make sure rays are not killed the moment they
hit the bottom or are just reaching your furthest receiver.