uwacan.propagation.SeabedCriticalAngle#
- class SeabedCriticalAngle(water_depth, n=10, substrate_compressional_speed=1500, **kwargs)[source]#
Bases:
SmoothLloydMirrorThe 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
SmoothLloydMirrormodel, 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.