diff --git a/dev/index.html b/dev/index.html index be51305..24d5ea1 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,3 +1,3 @@ Home · UnderwaterAcoustics.jl

UnderwaterAcoustics.jl

Julia toolbox for underwater acoustic modeling

Highlights

  • Underwater acoustic propagation modeling with pluggable models
  • Differentiable and probabilistic underwater acoustic modeling
  • Underwater acoustics utility functions

Installation

julia>]
-pkg> add UnderwaterAcoustics

Getting started

Talks & publications

+pkg> add UnderwaterAcoustics

Getting started

Talks & publications

diff --git a/dev/pm_api.html b/dev/pm_api.html index 9f1cce6..fccea92 100644 --- a/dev/pm_api.html +++ b/dev/pm_api.html @@ -1,22 +1,22 @@ Propagation modeling API · UnderwaterAcoustics.jl

Propagation modeling API

Model database

Core interfaces

UnderwaterAcoustics.altitudeFunction
altitude(alt::Altimetry, x, y)

Get water surface altitude at location (x, y). The nominal water surface is considered to have an altitude of zero. However, the water surface may not be flat, and the Altimetry provisions for variations of altitude around the nominal altitutde of zero.

source
UnderwaterAcoustics.arrivalsFunction
arrivals(pm::PropagationModel, tx1::AcousticSource, rx1::AcousticReceiver)

Compute the arrivals from tx1 to rx1. Returns an array of Arrival structs.

source
UnderwaterAcoustics.channelmatrixFunction
channelmatrix(rec::Recorder, fs, ntaps=0; tx=1, rx=1, approx=false)
-channelmatrix(rec::Vector{<:Arrival}, fs, ntaps=0; approx=false)

Generate a sampled channel matrix at a sampling rate of fs Hz. If ntaps is zero, the number of taps of the channel matrix are chosen automatically.

If approx is true, a fast algorithm is used to generate a sparse channel matrix that assigns an arrival to the nearest sampling time.

source
UnderwaterAcoustics.checkFunction
check(pm::Type{<:PropagationModel}, env::UnderwaterEnvironment)
-check(pm::Type{<:PropagationModel}, env=missing)

Check if an propagation model is available, and can simulate the specified environment. Returns the environment if it can be simulated, or throws an error with a descriptive error message if it cannot be simulated.

This function is internally used by the propagation modeling toolbox to choose a model or offer a selection of models to the user.

source
UnderwaterAcoustics.eigenraysFunction
eigenrays(pm::PropagationModel, tx1::AcousticSource, rx1::AcousticReceiver)

Compute the eigenrays from tx1 to rx1. Returns an array of RayArrival structs.

source

Core interfaces

UnderwaterAcoustics.altitudeFunction
altitude(alt::Altimetry, x, y)

Get water surface altitude at location (x, y). The nominal water surface is considered to have an altitude of zero. However, the water surface may not be flat, and the Altimetry provisions for variations of altitude around the nominal altitutde of zero.

source
UnderwaterAcoustics.arrivalsFunction
arrivals(pm::PropagationModel, tx1::AcousticSource, rx1::AcousticReceiver)

Compute the arrivals from tx1 to rx1. Returns an array of Arrival structs.

source
UnderwaterAcoustics.channelmatrixFunction
channelmatrix(rec::Recorder, fs, ntaps=0; tx=1, rx=1, approx=false)
+channelmatrix(rec::Vector{<:Arrival}, fs, ntaps=0; approx=false)

Generate a sampled channel matrix at a sampling rate of fs Hz. If ntaps is zero, the number of taps of the channel matrix are chosen automatically.

If approx is true, a fast algorithm is used to generate a sparse channel matrix that assigns an arrival to the nearest sampling time.

source
UnderwaterAcoustics.checkFunction
check(pm::Type{<:PropagationModel}, env::UnderwaterEnvironment)
+check(pm::Type{<:PropagationModel}, env=missing)

Check if an propagation model is available, and can simulate the specified environment. Returns the environment if it can be simulated, or throws an error with a descriptive error message if it cannot be simulated.

This function is internally used by the propagation modeling toolbox to choose a model or offer a selection of models to the user.

source
UnderwaterAcoustics.eigenraysFunction
eigenrays(pm::PropagationModel, tx1::AcousticSource, rx1::AcousticReceiver)

Compute the eigenrays from tx1 to rx1. Returns an array of RayArrival structs.

source
UnderwaterAcoustics.impulseresponseFunction
impulseresponse(arrivals, fs)
 impulseresponse(arrivals, fs, ntaps; reltime, approx)
-

Convert a vector of arrivals to a sampled impulse response time series at a sampling rate of fs Hz. If ntaps is zero, the number of taps of the impulse response are chosen automatically.

If reltime is true, the impulse response start time is relative to the first arrival, otherwise it is relative to the absolute time. If approx is true, a fast algorithm is used to generate a sparse impulse response that assigns an arrival to the nearest sampling time.

source
UnderwaterAcoustics.locationFunction
location(src::AcousticSource)
-location(src::AcousticReceiver)

Get the location of an acoustic source or receiver as a 3-tuple (x, y, z).

source
UnderwaterAcoustics.phasorFunction
nominalfrequency(src::AcousticSource)

Get the complex phasor representation (amplitude & phase) of a narrowband acoustic source at the nominal frequency.

source
UnderwaterAcoustics.raysFunction
rays(pm::PropagationModel, tx1::AcousticSource, θ::Real, rmax)

Compute the rays from tx1 launched at angle θ (or all angles in θ, if it is a vector). Returns an array of RayArrival datatypes. rmax is the maximum horizontal range in meters to track the rays over.

source
UnderwaterAcoustics.recordFunction
record(src::AcousticSource, duration, fs; start=0.0)
+

Convert a vector of arrivals to a sampled impulse response time series at a sampling rate of fs Hz. If ntaps is zero, the number of taps of the impulse response are chosen automatically.

If reltime is true, the impulse response start time is relative to the first arrival, otherwise it is relative to the absolute time. If approx is true, a fast algorithm is used to generate a sparse impulse response that assigns an arrival to the nearest sampling time.

source
UnderwaterAcoustics.locationFunction
location(src::AcousticSource)
+location(src::AcousticReceiver)

Get the location of an acoustic source or receiver as a 3-tuple (x, y, z).

source
UnderwaterAcoustics.phasorFunction
nominalfrequency(src::AcousticSource)

Get the complex phasor representation (amplitude & phase) of a narrowband acoustic source at the nominal frequency.

source
UnderwaterAcoustics.raysFunction
rays(pm::PropagationModel, tx1::AcousticSource, θ::Real, rmax)

Compute the rays from tx1 launched at angle θ (or all angles in θ, if it is a vector). Returns an array of RayArrival datatypes. rmax is the maximum horizontal range in meters to track the rays over.

source
UnderwaterAcoustics.recordFunction
record(src::AcousticSource, duration, fs; start=0.0)
 record(noise::NoiseModel, duration, fs; start=0.0)
 record(model::PropagationModel, tx, rx, duration, fs; start=0.0)
-record(model::PropagationModel, tx, rx, sig; reltime=true)

Make a recording of an acoustic source or ambient noise. The start time and duration are specified in seconds, and the recording is made at a sampling rate of fs Hz.

For an recording of an acoustic source, free space propagation is assumed, and the recording is made at a nominal range of 1 meter from the acoustic center of the source.

For a recording through a propagation model, tx and rx may be single AcousticSource and AcousticReceiver, or an array each. The returned signal is always complex, irrespective of whether the source is real or complex.

When a sig is specified, the sources are assumed to transmit the sampled signal in sig. The number of channels in sig must match the number of sources. The returned signal is the same type as the input signal (real or complex). If reltime is true, the recorded signal starts at the first arrival, otherwise it starts at the beginning of the transmission.

source
UnderwaterAcoustics.recorderFunction
recorder(model::PropagationModel, tx, rx)

Create a recorder function that may be called later to make an acoustic recording of sources in tx at receviers rx. tx and rx may be single AcousticSource and AcousticReceiver, or an array each.

The recorder function may be called later with duration, fs, and optionally a start time. Alternatively, the recorder function may also be called with a sampled signal. It functions in a similar way as the record() function.

Examples:

julia> rec = recorder(pm, tx, rx);
+record(model::PropagationModel, tx, rx, sig; reltime=true)

Make a recording of an acoustic source or ambient noise. The start time and duration are specified in seconds, and the recording is made at a sampling rate of fs Hz.

For an recording of an acoustic source, free space propagation is assumed, and the recording is made at a nominal range of 1 meter from the acoustic center of the source.

For a recording through a propagation model, tx and rx may be single AcousticSource and AcousticReceiver, or an array each. The returned signal is always complex, irrespective of whether the source is real or complex.

When a sig is specified, the sources are assumed to transmit the sampled signal in sig. The number of channels in sig must match the number of sources. The returned signal is the same type as the input signal (real or complex). If reltime is true, the recorded signal starts at the first arrival, otherwise it starts at the beginning of the transmission.

source
UnderwaterAcoustics.recorderFunction
recorder(model::PropagationModel, tx, rx)

Create a recorder function that may be called later to make an acoustic recording of sources in tx at receviers rx. tx and rx may be single AcousticSource and AcousticReceiver, or an array each.

The recorder function may be called later with duration, fs, and optionally a start time. Alternatively, the recorder function may also be called with a sampled signal. It functions in a similar way as the record() function.

Examples:

julia> rec = recorder(pm, tx, rx);
 julia> s = rec(1.0, 44100.0; start=0.0);  # make a recording of 1 second at 44.1 kHz
-julia> s = rec(signal(randn(44100), 44100));  # transmit a random 1 second signal
source
UnderwaterAcoustics.soundspeedFunction
soundspeed(ssp::SoundSpeedProfile, x, y, z)

Get sound speed at location (x, y, z). If a sound speed profile is range independent, x and y may be ignored. z is generally negative, since the sea surface is the datum and z-axis points upwards.

source
UnderwaterAcoustics.sspFunction
ssp(env::UnderwaterEnvironment)::SoundSpeedProfile

Get the sound speed profile for the underwater environment.

source
UnderwaterAcoustics.transfercoefFunction
transfercoef(pm::PropagationModel, tx1::AcousticSource, rx1::AcousticReceiver; mode=:coherent)
-transfercoef(pm::PropagationModel, tx1::AcousticSource, rx::AbstractArray{<:AcousticReceiver}; mode=:coherent)

Compute the complex transfer coefficients from tx1 to rx1 or all receivers in rx. The mode may be :coherent or :incoherent.

source
UnderwaterAcoustics.transmissionlossFunction
transmissionloss(pm::PropagationModel, tx1::AcousticSource, rx1::AcousticReceiver; mode=:coherent)
-transmissionloss(pm::PropagationModel, tx1::AcousticSource, rx::AbstractArray{<:AcousticReceiver}; mode=:coherent)

Compute the transmission loss in dB from tx1 to rx1 or all receivers in rx. The mode may be :coherent or :incoherent.

source

Common models

UnderwaterAcoustics.AcousticReceiverGrid2DMethod
AcousticReceiverGrid2D(xmin, xstep, nx, zmin, zstep, nz)
-

Create a 2D Cartesian grid of omnidirectional acoustic receivers with nx × nz receviers starting (xmin, zmin) with step sizes xstep and zstep.

source
UnderwaterAcoustics.soundspeedFunction
soundspeed(ssp::SoundSpeedProfile, x, y, z)

Get sound speed at location (x, y, z). If a sound speed profile is range independent, x and y may be ignored. z is generally negative, since the sea surface is the datum and z-axis points upwards.

source
UnderwaterAcoustics.sspFunction
ssp(env::UnderwaterEnvironment)::SoundSpeedProfile

Get the sound speed profile for the underwater environment.

source
UnderwaterAcoustics.transfercoefFunction
transfercoef(pm::PropagationModel, tx1::AcousticSource, rx1::AcousticReceiver; mode=:coherent)
+transfercoef(pm::PropagationModel, tx1::AcousticSource, rx::AbstractArray{<:AcousticReceiver}; mode=:coherent)

Compute the complex transfer coefficients from tx1 to rx1 or all receivers in rx. The mode may be :coherent or :incoherent.

source
UnderwaterAcoustics.transmissionlossFunction
transmissionloss(pm::PropagationModel, tx1::AcousticSource, rx1::AcousticReceiver; mode=:coherent)
+transmissionloss(pm::PropagationModel, tx1::AcousticSource, rx::AbstractArray{<:AcousticReceiver}; mode=:coherent)

Compute the transmission loss in dB from tx1 to rx1 or all receivers in rx. The mode may be :coherent or :incoherent.

source

Common models

UnderwaterAcoustics.AcousticReceiverGrid2DMethod
AcousticReceiverGrid2D(xmin, xstep, nx, zmin, zstep, nz)
+

Create a 2D Cartesian grid of omnidirectional acoustic receivers with nx × nz receviers starting (xmin, zmin) with step sizes xstep and zstep.

source
UnderwaterAcoustics.AcousticReceiverGrid3DMethod
AcousticReceiverGrid3D(
     xmin,
     xstep,
     nx,
@@ -27,16 +27,16 @@
     zstep,
     nz
 )
-

Create a 3D Cartesian grid of omnidirectional acoustic receivers with nx × ny × nz receviers starting (xmin, ymin, zmin) with step sizes xstep, ystep, and zstep.

source
UnderwaterAcoustics.AcousticSourceMethod
AcousticSource(x, y, z, f; sourcelevel, ϕ)
-

Create a narrowband acoustic source with frequency f Hz at location (x, y, z). The sourcelevel is in µPa @ 1m. A phase ϕ may be optionlly specified.

source
UnderwaterAcoustics.AcousticSourceMethod
AcousticSource(x, z, f; sourcelevel, ϕ)
-

Create a narrowband acoustic source with frequency f Hz at location (x, y, z). The sourcelevel is in µPa @ 1m. A phase ϕ may be optionlly specified.

source
UnderwaterAcoustics.IsoSSPType
struct IsoSSP{T} <: SoundSpeedProfile

Isovelocity sound speed profile.


IsoSSP(c)

Create an isovelocity sound speed profile with sound speed c.

source
UnderwaterAcoustics.NarrowbandAcousticSourceMethod
NarrowbandAcousticSource(x, y, z, f; sourcelevel, ϕ)
-

Create a narrowband acoustic source with frequency f Hz at location (x, y, z). The sourcelevel is in µPa @ 1m. A phase ϕ may be optionlly specified.

source
UnderwaterAcoustics.NarrowbandAcousticSourceMethod
NarrowbandAcousticSource(x, z, f; sourcelevel, ϕ)
-

Create a narrowband acoustic source with frequency f Hz at location (x, z). Thesourcelevelis in µPa @ 1m. A phaseϕ` may be optionlly specified.

source
UnderwaterAcoustics.PingerMethod
Pinger(x, y, z, f; sourcelevel, phase, duration, start, interval, window)

Create a pulsed narrowband acoustic source with frequency f Hz at location (x, y, z). Additional parameters that may be specified:

  • sourcelevel in µPa @ 1m (default 180 dB)
  • phase of the narrowband signal (default 0)
  • duration of the pulse in seconds (default 20 ms)
  • start time of one of the pulses in seconds (default 0)
  • pulse repetition interval in seconds (default 1 second)
  • window type (from DSP.jl) (default nothing)
source
UnderwaterAcoustics.PingerMethod
Pinger(x, z, f; sourcelevel, phase, duration, start, interval, window)

Create a pulsed narrowband acoustic source with frequency f Hz at location (x, z). Additional parameters that may be specified:

  • sourcelevel in µPa @ 1m (default 180 dB)
  • phase of the narrowband signal (default 0)
  • duration of the pulse in seconds (default 20 ms)
  • start time of one of the pulses in seconds (default 0)
  • pulse repetition interval in seconds (default 1 second)
  • window type (from DSP.jl) (default nothing)
source
UnderwaterAcoustics.RayleighReflectionCoefType
struct RayleighReflectionCoef{T1, T2, T3} <: ReflectionModel

Reflection model for a surface with a Rayleigh reflection coefficient.


RayleighReflectionCoef(ρᵣ, cᵣ, δ)
-RayleighReflectionCoef(ρᵣ, cᵣ)

Create a reflection model for a surface with a Rayleigh reflection coefficient with relative density ρᵣ, relative sound speed cᵣ, and dimensionless attentuation δ. If attentuation δ is unspecified, it is assumed to be zero.

See reflectioncoef() for more details.

source
UnderwaterAcoustics.RedGaussianNoiseType
struct RedGaussianNoise{T} <: NoiseModel

Ambient noise model with Gaussian noise with a 1/f² power spectral density.


RedGaussianNoise(σ)

Create an ambient noise model with variance σ² and 1/f² power spectral density.

source
UnderwaterAcoustics.ReflectionCoefType
struct ReflectionCoef{T<:Number} <: ReflectionModel

Reflection model for a surface with a constant reflection coefficient.


ReflectionCoef(coef)

Create a reflection model for a surface with a constant reflection coefficient coef.

source
UnderwaterAcoustics.SampledAcousticSourceMethod
SampledAcousticSource(x, z, sig; fs, frequency)

Create a sampled acoustic source transmitting signal sig at location (x, z). The samples are assumed to be in µPa @ 1m from the source.

Additional parameters that may be specified:

  • fs is the sampling rate of signal sig
  • nominal frequency in Hz (nothing to auto-estimate)
source
UnderwaterAcoustics.SampledAcousticSourceMethod
SampledAcousticSource(x, y, z, sig; fs, frequency)

Create a sampled acoustic source transmitting signal sig at location (x, y, z). The samples are assumed to be in µPa @ 1m from the source.

Additional parameters that may be specified:

  • fs is the sampling rate of the signal sig
  • nominal frequency in Hz (nothing to auto-estimate)
source
UnderwaterAcoustics.SampledAltitudeMethod
SampledAltitude(x, altitude)
-SampledAltitude(x, altitude, interp)

Create an altimetry given discrete altitude measurements at locations given in x. interp may be either :linear or :smooth, and defaults to :linear if unspecified.

source
UnderwaterAcoustics.SampledDepthMethod
SampledDepth(x, depth)
-SampledDepth(x, depth, interp)

Create a bathymetry given discrete depth measurements at locations given in x. interp may be either :linear or :smooth, and defaults to :linear if unspecified.

source
UnderwaterAcoustics.SampledSSPMethod
SampledSSP(depth, c)
+

Create a 3D Cartesian grid of omnidirectional acoustic receivers with nx × ny × nz receviers starting (xmin, ymin, zmin) with step sizes xstep, ystep, and zstep.

source
UnderwaterAcoustics.AcousticSourceMethod
AcousticSource(x, y, z, f; sourcelevel, ϕ)
+

Create a narrowband acoustic source with frequency f Hz at location (x, y, z). The sourcelevel is in µPa @ 1m. A phase ϕ may be optionlly specified.

source
UnderwaterAcoustics.AcousticSourceMethod
AcousticSource(x, z, f; sourcelevel, ϕ)
+

Create a narrowband acoustic source with frequency f Hz at location (x, y, z). The sourcelevel is in µPa @ 1m. A phase ϕ may be optionlly specified.

source
UnderwaterAcoustics.IsoSSPType
struct IsoSSP{T} <: SoundSpeedProfile

Isovelocity sound speed profile.


IsoSSP(c)

Create an isovelocity sound speed profile with sound speed c.

source
UnderwaterAcoustics.NarrowbandAcousticSourceMethod
NarrowbandAcousticSource(x, y, z, f; sourcelevel, ϕ)
+

Create a narrowband acoustic source with frequency f Hz at location (x, y, z). The sourcelevel is in µPa @ 1m. A phase ϕ may be optionlly specified.

source
UnderwaterAcoustics.NarrowbandAcousticSourceMethod
NarrowbandAcousticSource(x, z, f; sourcelevel, ϕ)
+

Create a narrowband acoustic source with frequency f Hz at location (x, z). Thesourcelevelis in µPa @ 1m. A phaseϕ` may be optionlly specified.

source
UnderwaterAcoustics.PingerMethod
Pinger(x, y, z, f; sourcelevel, phase, duration, start, interval, window)

Create a pulsed narrowband acoustic source with frequency f Hz at location (x, y, z). Additional parameters that may be specified:

  • sourcelevel in µPa @ 1m (default 180 dB)
  • phase of the narrowband signal (default 0)
  • duration of the pulse in seconds (default 20 ms)
  • start time of one of the pulses in seconds (default 0)
  • pulse repetition interval in seconds (default 1 second)
  • window type (from DSP.jl) (default nothing)
source
UnderwaterAcoustics.PingerMethod
Pinger(x, z, f; sourcelevel, phase, duration, start, interval, window)

Create a pulsed narrowband acoustic source with frequency f Hz at location (x, z). Additional parameters that may be specified:

  • sourcelevel in µPa @ 1m (default 180 dB)
  • phase of the narrowband signal (default 0)
  • duration of the pulse in seconds (default 20 ms)
  • start time of one of the pulses in seconds (default 0)
  • pulse repetition interval in seconds (default 1 second)
  • window type (from DSP.jl) (default nothing)
source
UnderwaterAcoustics.RayleighReflectionCoefType
struct RayleighReflectionCoef{T1, T2, T3} <: ReflectionModel

Reflection model for a surface with a Rayleigh reflection coefficient.


RayleighReflectionCoef(ρᵣ, cᵣ, δ)
+RayleighReflectionCoef(ρᵣ, cᵣ)

Create a reflection model for a surface with a Rayleigh reflection coefficient with relative density ρᵣ, relative sound speed cᵣ, and dimensionless attentuation δ. If attentuation δ is unspecified, it is assumed to be zero.

See reflectioncoef() for more details.

source
UnderwaterAcoustics.RedGaussianNoiseType
struct RedGaussianNoise{T} <: NoiseModel

Ambient noise model with Gaussian noise with a 1/f² power spectral density.


RedGaussianNoise(σ)

Create an ambient noise model with variance σ² and 1/f² power spectral density.

source
UnderwaterAcoustics.ReflectionCoefType
struct ReflectionCoef{T<:Number} <: ReflectionModel

Reflection model for a surface with a constant reflection coefficient.


ReflectionCoef(coef)

Create a reflection model for a surface with a constant reflection coefficient coef.

source
UnderwaterAcoustics.SampledAcousticSourceMethod
SampledAcousticSource(x, z, sig; fs, frequency)

Create a sampled acoustic source transmitting signal sig at location (x, z). The samples are assumed to be in µPa @ 1m from the source.

Additional parameters that may be specified:

  • fs is the sampling rate of signal sig
  • nominal frequency in Hz (nothing to auto-estimate)
source
UnderwaterAcoustics.SampledAcousticSourceMethod
SampledAcousticSource(x, y, z, sig; fs, frequency)

Create a sampled acoustic source transmitting signal sig at location (x, y, z). The samples are assumed to be in µPa @ 1m from the source.

Additional parameters that may be specified:

  • fs is the sampling rate of the signal sig
  • nominal frequency in Hz (nothing to auto-estimate)
source
UnderwaterAcoustics.SampledAltitudeMethod
SampledAltitude(x, altitude)
+SampledAltitude(x, altitude, interp)

Create an altimetry given discrete altitude measurements at locations given in x. interp may be either :linear or :smooth, and defaults to :linear if unspecified.

source
UnderwaterAcoustics.SampledDepthMethod
SampledDepth(x, depth)
+SampledDepth(x, depth, interp)

Create a bathymetry given discrete depth measurements at locations given in x. interp may be either :linear or :smooth, and defaults to :linear if unspecified.

source
UnderwaterAcoustics.SampledSSPMethod
SampledSSP(depth, c)
 SampledSSP(depth, c, interp)
 SampledSSP(range, depth, c)
-SampledSSP(range, depth, c, interp)

Create a sound speed profile based on measurements at discrete depths. interp may be either :linear or :smooth, and defaults to :linear if unspecified. :smooth is currently only supported for range-independent sound speed profiles.

source
UnderwaterAcoustics.SurfaceLossType
struct SurfaceLoss{T} <: ReflectionModel

Reflection model for a water surface affected by wind.


SurfaceLoss(windspeed)

Create a reflection model for a surface affected by wind. windspeed is given in m/s.

source
UnderwaterAcoustics.WhiteGaussianNoiseType
struct WhiteGaussianNoise{T} <: NoiseModel

Ambient noise model with Gaussian noise with a flat power spectral density.


WhiteGaussianNoise(σ)

Create an white Gaussian ambient noise model with variance σ².

source

Propagation models

UnderwaterAcoustics.PekerisRayModelType
struct PekerisRayModel{T} <: PropagationModel{T}

A fast differentiable ray model that only supports isovelocity constant depth environments.


PekerisRayModel(env, rays)

Create a Pekeris ray propagation model with a maximum of rays ray arrivals.

source
+SampledSSP(range, depth, c, interp)

Create a sound speed profile based on measurements at discrete depths. interp may be either :linear or :smooth, and defaults to :linear if unspecified. :smooth is currently only supported for range-independent sound speed profiles.

source
UnderwaterAcoustics.SampledSSP1DType
struct SampledSSP1D{T1, T2, T3} <: SampledSSP

Sound speed profile based on measurements at discrete depths.

source
UnderwaterAcoustics.SampledSSP2DType
struct SampledSSP2D{T1, T2, T3, T4} <: SampledSSP

Sound speed profile based on measurements at discrete depths and ranges.

source
UnderwaterAcoustics.SurfaceLossType
struct SurfaceLoss{T} <: ReflectionModel

Reflection model for a water surface affected by wind.


SurfaceLoss(windspeed)

Create a reflection model for a surface affected by wind. windspeed is given in m/s.

source
UnderwaterAcoustics.UnderwaterEnvironmentMethod
UnderwaterEnvironment(; altimetry, bathymetry, ssp, salinity, seasurface, seabed, noise)

Create an underwater environment.

source
UnderwaterAcoustics.WhiteGaussianNoiseType
struct WhiteGaussianNoise{T} <: NoiseModel

Ambient noise model with Gaussian noise with a flat power spectral density.


WhiteGaussianNoise(σ)

Create an white Gaussian ambient noise model with variance σ².

source

Propagation models

UnderwaterAcoustics.PekerisRayModelType
struct PekerisRayModel{T} <: PropagationModel{T}

A fast differentiable ray model that only supports isovelocity constant depth environments.


PekerisRayModel(env, rays)

Create a Pekeris ray propagation model with a maximum of rays ray arrivals.

source
diff --git a/dev/pm_basic.html b/dev/pm_basic.html index ce45dd3..5b35325 100644 --- a/dev/pm_basic.html +++ b/dev/pm_basic.html @@ -134,4 +134,4 @@ 66193.3 -497239.0 -144031.0 -321312.0 -260200.0 -235680.0

To visualize the recording, we plot a spectrogram of the signal at the first receiver with the SignalAnalysis.jl package:

julia> using SignalAnalysis
-julia> specgram(s[:,1])

We can clearly see the two pingers, as well as the ambient noise generated with the noise model defined in the environment description.

+julia> specgram(s[:,1])

We can clearly see the two pingers, as well as the ambient noise generated with the noise model defined in the environment description.

diff --git a/dev/pm_envref.html b/dev/pm_envref.html index 06e6ddb..6ef15bc 100644 --- a/dev/pm_envref.html +++ b/dev/pm_envref.html @@ -1,2 +1,2 @@ -Environmental model reference · UnderwaterAcoustics.jl

Environmental model reference

Environmental model

Interface:

Standard models:

Sound speed profiles

Interface:

Standard models:

Bathymetry

Interface:

Standard models:

Altimetry

Interface:

Standard models:

Sea surface

Interface:

Standard models:

Seabed

Interface:

Standard models:

  • ReflectionCoef
  • RayleighReflectionCoef
  • const Rock
  • const Pebbles
  • const SandyGravel
  • const CoarseSand
  • const MediumSand
  • const FineSand
  • const VeryFineSand
  • const ClayeySand
  • const CoarseSilt
  • const SandySilt
  • const Silt
  • const FineSilt
  • const SandyClay
  • const SiltyClay
  • const Clay

Acoustic sources

Interface:

Standard models:

Acoustic receivers

Interface:

Standard models:

Ambient noise

Interface:

  • abstact type NoiseModel
  • record()

Standard models:

+Environmental model reference · UnderwaterAcoustics.jl

Environmental model reference

Environmental model

Interface:

Standard models:

Sound speed profiles

Interface:

Standard models:

Bathymetry

Interface:

Standard models:

Altimetry

Interface:

Standard models:

Sea surface

Interface:

Standard models:

Seabed

Interface:

Standard models:

  • ReflectionCoef
  • RayleighReflectionCoef
  • const Rock
  • const Pebbles
  • const SandyGravel
  • const CoarseSand
  • const MediumSand
  • const FineSand
  • const VeryFineSand
  • const ClayeySand
  • const CoarseSilt
  • const SandySilt
  • const Silt
  • const FineSilt
  • const SandyClay
  • const SiltyClay
  • const Clay

Acoustic sources

Interface:

Standard models:

Acoustic receivers

Interface:

Standard models:

Ambient noise

Interface:

  • abstact type NoiseModel
  • record()

Standard models:

diff --git a/dev/pm_pekeris.html b/dev/pm_pekeris.html index 165f25c..c332bfc 100644 --- a/dev/pm_pekeris.html +++ b/dev/pm_pekeris.html @@ -10,4 +10,4 @@ tx = AcousticSource(0.0, -5.0, 1000.0) rx = AcousticReceiver(100.0, -10.0) r = eigenrays(pm, tx, rx) -plot(env; sources=[tx], receivers=[rx], rays=r)

For more information on how to use the propagation models, see Propagation modeling toolkit.

+plot(env; sources=[tx], receivers=[rx], rays=r)

For more information on how to use the propagation models, see Propagation modeling toolkit.

diff --git a/dev/search.html b/dev/search.html index 996fcf3..1059011 100644 --- a/dev/search.html +++ b/dev/search.html @@ -1,2 +1,2 @@ -Search · UnderwaterAcoustics.jl

Loading search...

    +Search · UnderwaterAcoustics.jl

    Loading search...

      diff --git a/dev/tut_autodiff.html b/dev/tut_autodiff.html index a72669e..15fd649 100644 --- a/dev/tut_autodiff.html +++ b/dev/tut_autodiff.html @@ -53,4 +53,4 @@ end ir = hcat([iresp(row.range, row.depth) for row ∈ eachrow(p)]...)' -heatmap(20*log10.(abs.(ir)); clim=(-60, -30), xlabel="Delay (samples)", ylabel="Transmission #", yflip=true)

      We see the impulse response evolve over time as the probe drifts. This can then be used for channel equalization and to recover the transmitted data!

      +heatmap(20*log10.(abs.(ir)); clim=(-60, -30), xlabel="Delay (samples)", ylabel="Transmission #", yflip=true)

      We see the impulse response evolve over time as the probe drifts. This can then be used for channel equalization and to recover the transmitted data!

      diff --git a/dev/tut_turing.html b/dev/tut_turing.html index 56dca5b..b5a0004 100644 --- a/dev/tut_turing.html +++ b/dev/tut_turing.html @@ -37,4 +37,4 @@ plot(ρ -> pdf(q, [ρ, 1.2, 0.001]), 1.3, 1.7; xlabel="ρ") plot(c -> pdf(q, [1.5, c, 0.001]), 1.1, 1.3; xlabel="c") -plot(δ -> pdf(q, [1.5, 1.2, δ]), 0.0, 0.003; xlabel="δ")

      +plot(δ -> pdf(q, [1.5, 1.2, δ]), 0.0, 0.003; xlabel="δ")

      diff --git a/dev/uw_basic.html b/dev/uw_basic.html index 83434ec..140f9a9 100644 --- a/dev/uw_basic.html +++ b/dev/uw_basic.html @@ -18,18 +18,18 @@ depth, pH ) -

      Compute volume acoustic absorption coefficient in water, given:

      Implementation based on the Francois-Garrison model.

      source
      UnderwaterAcoustics.bubbleresonanceFunction
      bubbleresonance(radius)
      +

      Compute volume acoustic absorption coefficient in water, given:

      • frequency in Hz
      • distance in meters
      • salinity in ppm
      • water temperature in °C
      • depth in meters
      • pH of water

      Implementation based on the Francois-Garrison model.

      source
      UnderwaterAcoustics.bubbleresonanceFunction
      bubbleresonance(radius)
       bubbleresonance(radius, depth)
       bubbleresonance(radius, depth, γ)
       bubbleresonance(radius, depth, γ, p0)
       bubbleresonance(radius, depth, γ, p0, ρ)
      -

      Compute resonance frequency of a freely oscillating has bubble in water, given:

      • bubble radius in meters
      • depth of bubble in water in meters
      • gas ratio of specific heats 'γ', default: 1.4 (for air)
      • atmospheric pressure 'p0', default: 1.013e5
      • density of water 'ρ' in kg/m³, default: 1022.476

      This ignores surface-tension, thermal, viscous and acoustic damping effects, and the pressure-volume relationship is taken to be adiabatic. Implementation based on Medwin & Clay (1998).

      source
      UnderwaterAcoustics.dBperλMethod
      dBperλ(x)
      -

      Compute dimensionless absorption coefficient δ from dB/λ. Implementation based on APL-UW TR 9407 (1994), IV-9 equation (4).

      source
      UnderwaterAcoustics.dopplerFunction
      doppler(speed, frequency)
      +

      Compute resonance frequency of a freely oscillating has bubble in water, given:

      • bubble radius in meters
      • depth of bubble in water in meters
      • gas ratio of specific heats 'γ', default: 1.4 (for air)
      • atmospheric pressure 'p0', default: 1.013e5
      • density of water 'ρ' in kg/m³, default: 1022.476

      This ignores surface-tension, thermal, viscous and acoustic damping effects, and the pressure-volume relationship is taken to be adiabatic. Implementation based on Medwin & Clay (1998).

      source
      UnderwaterAcoustics.dBperλMethod
      dBperλ(x)
      +

      Compute dimensionless absorption coefficient δ from dB/λ. Implementation based on APL-UW TR 9407 (1994), IV-9 equation (4).

      source
      UnderwaterAcoustics.dopplerFunction
      doppler(speed, frequency)
       doppler(speed, frequency, c)
      -

      Compute Doppler frequency, given relative speed between transmitter and receiver in m/s. c is the nominal sound speed in water.

      source
      UnderwaterAcoustics.indBperλMethod
      indBperλ(δ)
      -

      Compute dB/λ from dimensionless absorption coefficient δ. Implementation based on APL-UW TR 9407 (1994), IV-9 equation (4).

      source
      UnderwaterAcoustics.reflectioncoefFunction
      reflectioncoef(θ, ρᵣ, cᵣ)
      +

      Compute Doppler frequency, given relative speed between transmitter and receiver in m/s. c is the nominal sound speed in water.

      source
      UnderwaterAcoustics.indBperλMethod
      indBperλ(δ)
      +

      Compute dB/λ from dimensionless absorption coefficient δ. Implementation based on APL-UW TR 9407 (1994), IV-9 equation (4).

      source
      UnderwaterAcoustics.reflectioncoefFunction
      reflectioncoef(θ, ρᵣ, cᵣ)
       reflectioncoef(θ, ρᵣ, cᵣ, δ)
      -

      Compute complex reflection coefficient at a fluid-fluid boundary, given:

      • angle of incidence θ (angle to the surface normal)
      • relative density of the reflecting medium to incidence medium ρᵣ
      • relative sound speed of the reflecting medium to incidence medium cᵣ
      • dimensionless absorption coefficient δ

      Implementation based on Brekhovskikh & Lysanov. Dimensionless absorption coefficient based on APL-UW Technical Report 9407.

      source
      UnderwaterAcoustics.soundspeedFunction
      soundspeed()
      +

      Compute complex reflection coefficient at a fluid-fluid boundary, given:

      • angle of incidence θ (angle to the surface normal)
      • relative density of the reflecting medium to incidence medium ρᵣ
      • relative sound speed of the reflecting medium to incidence medium cᵣ
      • dimensionless absorption coefficient δ

      Implementation based on Brekhovskikh & Lysanov. Dimensionless absorption coefficient based on APL-UW Technical Report 9407.

      source
      UnderwaterAcoustics.soundspeedFunction
      soundspeed()
       soundspeed(temperature)
       soundspeed(temperature, salinity)
       soundspeed(
      @@ -40,8 +40,8 @@
           cgas,
           reldensity
       )
      -

      Compute sound speed in water in m/s, given:

      • water temperature in °C
      • salinity in ppm
      • depth in meters
      • void fraction (voidfrac) in bubbly water
      • sound speed in gas (cgas), if voidfrac > 0
      • ratio of density of water to gas (reldensity), if voidfrac > 0

      Implementation based on Mackenzie (1981), Wood (1964) and Buckingham (1997).

      source
      UnderwaterAcoustics.surfacelossMethod
      surfaceloss(windspeed, frequency, θ)
      -

      Compute surface reflection coefficient, given:

      • windspeed in m/s
      • frequency in Hz
      • angle of incidence θ (angle to the surface normal)

      Implementation based on the APL-UW Technical Report 9407 II-21.

      source
      UnderwaterAcoustics.waterdensityFunction
      waterdensity()
      +

      Compute sound speed in water in m/s, given:

      • water temperature in °C
      • salinity in ppm
      • depth in meters
      • void fraction (voidfrac) in bubbly water
      • sound speed in gas (cgas), if voidfrac > 0
      • ratio of density of water to gas (reldensity), if voidfrac > 0

      Implementation based on Mackenzie (1981), Wood (1964) and Buckingham (1997).

      source
      UnderwaterAcoustics.surfacelossMethod
      surfaceloss(windspeed, frequency, θ)
      +

      Compute surface reflection coefficient, given:

      • windspeed in m/s
      • frequency in Hz
      • angle of incidence θ (angle to the surface normal)

      Implementation based on the APL-UW Technical Report 9407 II-21.

      source
      UnderwaterAcoustics.waterdensityFunction
      waterdensity()
       waterdensity(temperature)
       waterdensity(temperature, salinity)
      -

      Compute density of water (kg/m^3), given temperature in °C and salinity in ppm.

      Implementation based on Fofonoff (1985 - IES 80).

      source
      +

      Compute density of water (kg/m^3), given temperature in °C and salinity in ppm.

      Implementation based on Fofonoff (1985 - IES 80).

      source