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
PekerisRayTracer(env; max_bounces=3)

A fast differentiable ray tracer that only supports iso-velocity constant depth environments. max_bounces is the number of surface/bottom bounces to consider in the ray tracing.

Implementation based on mathematical description in:

Example

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)
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)