using UnderwaterAcoustics
using Plots
= UnderwaterEnvironment(bathymetry=20, seabed=SandyClay)
env = PekerisRayTracer(env)
pm
= AcousticSource(0, -5, 1000)
tx = AcousticReceiver(100, -10)
rx = arrivals(pm, tx, rx)
rays
plot(env; xlims=(-10, 110))
plot!(tx)
plot!(rx)
plot!(rays)
PekerisRayTracer
Model | UnderwaterAcoustics.PekerisRayTracer |
Description | Ray tracer for constant depth iso-velocity environments |
Language | Julia |
Advantages | Fast, differentiable |
Limitations | Iso-velocity, range-independent |
Differentiability | ForwardDiff , Zygote , Mooncake , Enzyme |
Implementation based on mathematical description in:
- M. A. Chitre, “A high-frequency warm shallow water acoustic communications channel model and measurements”, The Journal Of The Acoustical Society Of America, vol. 122, pp. 2580–2586, November 2007 (pdf).
Example
= AcousticReceiverGrid2D(1.0:0.1:100, -20:0.1:0)
rxs = transmission_loss(pm, tx, rxs)
x
plot(env; xlims=(0,100))
plot!(rxs, x)