This package provides a Julia wrapper to the OALIB acoustic propagation modeling toolbox,
making it available for use with UnderwaterAcoustics.jl
.
Currently, only two of the OALIB models are supported:
- Bellhop 2D Gaussian beam tracer (almost complete support)
- Kraken 2D normal mode model (partial support)
julia> # press ]
pkg> add UnderwaterAcoustics
pkg> add AcousticsToolbox
pkg> # press BACKSPACE
julia> using UnderwaterAcoustics
julia> using AcousticsToolbox
julia> models()
3-element Vector{Any}:
PekerisRayModel
Bellhop
Kraken
The propagation modeling API is detailed in the UnderwaterAcoustics documentation.
We assume that the reader is familiar with it. This documentation only provides guidance on specific use of Bellhop
and Kraken
propagation models.
Additional options available with Bellhop
:
nbeams
-- number of beams used for ray tracing (default: auto)minangle
-- minimum beam angle in radians (default: -80°)maxangle
-- maximum beam angle in radians (default: 80°)gaussian
-- geometric rays iffalse
, Gaussian beams iftrue
(default:false
)debug
-- iftrue
, intermediate Bellhop files are made available for user inspection (default:false
)
Example:
using UnderwaterAcoustics
using AcousticsToolbox
using Plots
env = UnderwaterEnvironment(
seasurface = Vacuum,
seabed = SandyClay,
ssp = SampledSSP(0.0:20.0:40.0, [1540.0, 1510.0, 1520.0], :smooth),
bathymetry = SampledDepth(0.0:50.0:100.0, [40.0, 35.0, 38.0], :linear)
)
pm = Bellhop(env; gaussian=true)
tx = AcousticSource(0.0, -5.0, 1000.0)
rx = AcousticReceiverGrid2D(1.0, 0.1, 1000, -40.0, 0.2, 200)
x = transmissionloss(pm, tx, rx)
plot(env; receivers=rx, transmissionloss=x)
For more information on how to use the propagation models, see Propagation modeling toolkit.
Additional options available with Kraken
:
nmodes
-- maximum number of modes (default: 9999)nmedia
-- number of medium (default: 1)nmesh
-- number of mesh point to use initially (0=auto, default: 0)clow
-- lower phase speed limit in m/s (0=auto, default: 0)chigh
-- higher phase speed limit in m/s (larger values => more modes, default: 1600)debug
-- iftrue
, intermediate Kraken files are made available for user inspection (default:false
)
Example:
using UnderwaterAcoustics
using AcousticsToolbox
using Plots
env = UnderwaterEnvironment(
seasurface = Vacuum,
seabed = SandyClay,
ssp = SampledSSP(0.0:15.0:30.0, [1447.0, 1455.0, 1460.0], :smooth),
bathymetry = ConstantDepth(30.0)
)
pm = Kraken(env)
tx = AcousticSource(0.0, -5.0, 1000.0)
rx = AcousticReceiverGrid2D(1.0, 0.1, 5000, -30.0, 0.2, 150)
x = transmissionloss(pm, tx, rx)
plot(env; receivers=rx, transmissionloss=x, clims = (-60.0,0.0))
For more information on how to use the propagation models, see Propagation modeling toolkit.
Contributions in the form of bug reports, feature requests, ideas/suggestions, bug fixes, code enhancements, and documentation updates are most welcome. Please read contribution guidelines if you wish to start contributing.
The scopes active in this repository are:
- bellhop: Bellhop
- kraken: Kraken