uwacan.propagation.SeabedCriticalAngle#

class SeabedCriticalAngle(water_depth, n=10, substrate_compressional_speed=1500, **kwargs)[source]#

Bases: SmoothLloydMirror

The seabed critical angle propagation model.

This model accounts for geometrical spreading, surface interactions, and simple bottom interactions.

Parameters:
water_depthnumeric

The water depth to use for the cylindrical spreading.

nnumeric, default 10

The geometrical spreading factor to use for the cylindrical spreading.

mnumeric, default 20

The geometrical spreading factor to use for the spherical spreading.

speed_of_soundnumeric, default 1500

The speed of sound in the water. Used to calculate wave numbers and the critical angle.

substrate_compressional_speed, numeric, default 1500

The speed of sound in the water. Used to calculate the critical angle.

Notes

The model is split in two parts, one spherical and one cylindrical. The spherical part is identical to the SmoothLloydMirror model, and gives the propagation factor:

F_sphere = SmoothLloydMirror(...).power_propagation(...)

The general idea for the cylindrical part is that power radiated towards the bottom will either stay in the water column, and thus arrive at the receiver at some point, or get transmitted into the substrate. The grazing angle below which power will be contained is the critical angle ψ. For high frequencies, the bottom retains an average factor:

hf = 2ψ

of the energy. For low frequencies, we have a retention of:

lf = 2 (kd)**2 (ψ - sin(ψ) cos(ψ))

The low-high frequency mixing and the distance propagation is then done as:

F_cylindrical = 1 / (rH) / (1 / lf + 1 / hf)

where we use the same low-high frequency mixing as for smooth Lloyd mirror, but 1 / (rH) to accommodate the cylindrical domain. The final propagation factor is the sum of the spherical and cylindrical energy:

F = F_spherical + F_cylindrical

Methods

power_propagation(distance, frequency, ...)

Calculate geometrical spreading and interactions with the surface and the bottom.

Inherited methods

compensate_propagation(received_power, ...)

Compensate the propagation of measured power.

slant_range(horizontal_distance, receiver_depth)

Compute the slant range from source to receiver.