using UnderwaterAcoustics
using Plots
env = UnderwaterEnvironment(bathymetry=20, seabed=SandyClay)
pm = PekerisRayTracer(env)
tx = AcousticSource(0, -5, 1000)
rx = AcousticReceiver(100, -10)
rays = arrivals(pm, tx, rx)
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
rxs = AcousticReceiverGrid2D(1.0:0.1:100, -20:0.1:0)
x = transmission_loss(pm, tx, rxs)
plot(env; xlims=(0,100))
plot!(rxs, x)