Bellhop

Model AcousticsToolbox.Bellhop
Description Bellhop ray/beam tracer (wrapper)
Language Fortran
Advantages Well-established benchmark model
Limitations Not differentiable, 2½D or 3D modeling not supported
Bellhop(env; kwargs...)

Create a Bellhop propagation model.

Supported keyword arguments:

  • nbeams: number of beams to use (default: 0, auto)
  • min_angle: minimum beam angle (default: -80°)
  • max_angle: maximum beam angle (default: 80°)
  • beam_type: geometric (default) or gaussian
  • beam_shift: use beam shift (default: false)
  • temp_dir: directory for temporary files (default: system temp directory)
  • debug: debug mode (default: false)

Enabling debug mode will create a temporary directory with the Bellhop input and output files. This allows manual inspection of the files.

A good overview of the Bellhop model can be found at:

Example

using UnderwaterAcoustics
using AcousticsToolbox
using Plots

env = UnderwaterEnvironment(
  bathymetry = SampledField([200, 150]; x=[0, 1000], interp=Linear()),
  soundspeed = SampledField([1500, 1480, 1495, 1510, 1520]; z=0:-50:-200, interp=CubicSpline()),
  seabed = SandyClay
)
pm = Bellhop(env)

tx = AcousticSource(0, -50, 300)
rx = AcousticReceiver(1000, -100)
rays = arrivals(pm, tx, rx)

plot(env; xlims=(-10, 1010))
plot!(tx)
plot!(rx)
plot!(rays)
rxs = AcousticReceiverGrid2D(1:1000, -200:0)
x = transmission_loss(pm, tx, rxs; mode=:semicoherent)

plot(rxs, x; crange=70)
plot!(env; xlims=(0,1000), linewidth=3)

Notes

The Fortran Bellhop propagation model requires that the transmitter is located at \((x=0, y=0)\) and all receivers are located in the right half-plane (i.e., \(x>0\) and \(y=0\)). This limitation can be worked around by wrapping the model with Reframe2D, which automatically transforms 2D scenarios specified in world coordinates into the coordinate system required by the model (see the quickstart guide for an example).

Additionally, this wrapper does not yet support all the features of the original Fortran model. In particular, it does NOT support:

  • 3D environments (i.e., Bellhop 3D)
  • Range-dependent sound speed
  • N2-linear, analytic or quadratic interpolation for sound speed
  • Arbitrary reflection coefficients
  • Directional or line sources
  • Cartesian or ray-centered beams

Receivers on an irregular grid are supported, but not currently optimized for speed (by using the irregular grid option in the Fortran model).