Ir al contenido

underwater.seabed_reflection

Esta página aún no está disponible en tu idioma.

Plane-wave reflection at the seabed (fluid-fluid Rayleigh model).

A plane wave in the water column (density ρ1, sound speed c1) striking a fluid sediment half-space (ρ2, c2) reflects with the Rayleigh pressure reflection coefficient (Medwin & Clay, Eq. 2.6.11a). Using the grazing angle φ (measured from the interface), the angle of incidence from the normal is θ1 = 90° − φ, Snell’s law gives sinθ2 = (c2/c1)·cosφ and R = (ρ2·c2·sinφ − ρ1·c1·cosθ2) / (ρ2·c2·sinφ + ρ1·c1·cosθ2).

Lossless fluid-fluid model (real ρ/c); sediment attenuation is out of scope. Densities enter only through the impedance ratio, so any consistent unit works (kg/m³ by convention).

Auto-generated from the source docstrings by scripts/generate_api_docs.py (make api-docs). Do not edit by hand.

bottom_reflection_loss(
grazing_angle: NDArray[np.float64] | list[float] | float,
*,
rho1: float = 1000.0,
c1: float = 1500.0,
rho2: float,
c2: float,
) -> BottomLossResult

Bottom reflection loss BL = −20·lg|R| versus grazing angle (dB).

At an angle of intromission R = 0 and the loss is inf (total transmission into the sediment); that is a legitimate bottom-loss value, returned without warning.

Parameters

NameDescription
grazing_angleGrazing angle(s) φ from the interface, in degrees.
rho1Water density ρ1 (default 1000 kg/m³).
c1Sound speed in the water c1, in m/s (default 1500).
rho2Sediment density ρ2.
c2Sound speed in the sediment c2, in m/s.

Returns: A BottomLossResult.

Raises

ExceptionWhen
ValueErrorIf the inputs are invalid.
BottomLossResult(
grazing_angle: NDArray[np.float64],
reflection_loss: NDArray[np.float64],
reflection_coefficient: NDArray[np.complex128],
critical_angle: float | None,
)

Bottom reflection loss versus grazing angle (fluid-fluid Rayleigh model).

Attributes

NameDescription
grazing_angleGrazing angles, in degrees.
reflection_lossBottom loss BL = −20·lg|R| per angle, in dB.
reflection_coefficientComplex reflection coefficient per angle.
critical_angleThe critical grazing angle, in degrees, or None if the sediment is not faster than the water.
BottomLossResult.plot(
ax: Axes | None = None,
*,
language: str = 'en',
**kwargs: Any,
) -> Axes

Plot the bottom loss versus grazing angle with the critical angle.

critical_angle(c1: float, c2: float) -> float

Critical grazing angle φc = arccos(c1/c2), in degrees.

Defined only when the sediment is faster than the water (c2 > c1); at and below this grazing angle the wave is totally reflected.

Parameters

NameDescription
c1Sound speed in the water, in m/s.
c2Sound speed in the sediment, in m/s.

Returns: The critical grazing angle, in degrees.

Raises

ExceptionWhen
ValueErrorIf c2 <= c1 (no critical angle exists).
reflection_coefficient(
grazing_angle: NDArray[np.float64] | list[float] | float,
*,
rho1: float,
c1: float,
rho2: float,
c2: float,
) -> NDArray[np.complex128]

Complex plane-wave pressure reflection coefficient at the seabed.

Parameters

NameDescription
grazing_angleGrazing angle(s) φ from the interface, in degrees (0 grazing to 90 normal incidence).
rho1Water density ρ1 (any consistent unit; kg/m³ by convention).
c1Sound speed in the water c1, in m/s.
rho2Sediment density ρ2.
c2Sound speed in the sediment c2, in m/s.

Returns: The complex reflection coefficient per grazing angle.

Raises

ExceptionWhen
ValueErrorIf the inputs are invalid.
seabed_reflection(
grazing_angle: NDArray[np.float64] | list[float] | float,
*,
rho1: float = 1000.0,
c1: float = 1500.0,
rho2: float,
c2: float,
) -> SeabedReflection

Build a plottable seabed reflection-coefficient result (Rayleigh model).

Evaluates reflection_coefficient at grazing_angle for the given fluid-fluid interface and bundles the complex R, its magnitude |R|, the bottom loss BL = −20·lg|R| and the interface parameters into a SeabedReflection that exposes .plot(). The maths is unchanged; this is a thin, plottable wrapper around the existing function (the same ValueError cases apply). At an angle of intromission R = 0 and the bottom loss is inf (total transmission), returned without warning.

Parameters

NameDescription
grazing_angleGrazing angle(s) φ from the interface, in degrees (0 grazing to 90 normal incidence).
rho1Water density ρ1 (default 1000 kg/m³).
c1Sound speed in the water c1, in m/s (default 1500).
rho2Sediment density ρ2.
c2Sound speed in the sediment c2, in m/s.

Returns: A frozen SeabedReflection.

Raises

ExceptionWhen
ValueErrorIf the inputs are invalid.
SeabedReflection(
grazing_angle: NDArray[np.float64],
reflection_coefficient: NDArray[np.complex128],
magnitude: NDArray[np.float64],
bottom_loss: NDArray[np.float64],
critical_angle: float | None,
rho1: float,
c1: float,
rho2: float,
c2: float,
)

Plane-wave seabed reflection coefficient versus grazing angle.

Bundles the complex Rayleigh reflection coefficient R over a grazing-angle grid with its magnitude |R|, the bottom loss BL = −20·lg|R| and the fluid-fluid interface parameters, so the classic |R| versus grazing-angle curve can be drawn with plot. Build it with seabed_reflection; the frozen instance is a thin, plottable wrapper and re-runs none of the maths.

Attributes

NameDescription
grazing_angleGrazing angles φ from the interface, in degrees.
reflection_coefficientComplex pressure reflection coefficient R per grazing angle.
magnitudeReflection-coefficient magnitude |R| per grazing angle (1 below the critical angle for a faster sediment).
bottom_lossBottom loss BL = −20·lg|R| per grazing angle, in dB.
critical_angleThe critical grazing angle, in degrees, or None if the sediment is not faster than the water.
rho1Water density ρ1.
c1Sound speed in the water c1, in m/s.
rho2Sediment density ρ2.
c2Sound speed in the sediment c2, in m/s.
SeabedReflection.plot(
ax: Axes | None = None,
*,
language: str = 'en',
**kwargs: Any,
) -> Axes

Plot the reflection-coefficient magnitude |R| versus grazing angle.

Draws |R| on a linear grazing-angle axis (0..90°), marking the critical angle when the sediment is faster than the water. Requires matplotlib (pip install phonometry[plot]); returns the Axes and never calls plt.show.

Parameters

NameDescription
axExisting axes, or None to create a figure.
language"en" (default) or "es".
kwargsForwarded to the |R| curve plot call.

Returns: The axes.