Ir al contenido

Esta página calcula en forma cerrada lo que el mar le hace a un nivel sonoro, sin simular ningún campo. Al terminarla sabrás poner un número a la pérdida de propagación de un trayecto, elegir los modelos de absorción y de velocidad del sonido que le convienen a tu agua, seguir los cuatro regímenes de aguas someras de Weston conforme el lecho marino le va quitando el mando a la geometría, equilibrar una ecuación del sonar pasiva o activa e invertirla para obtener un alcance de detección, evaluar la pérdida por reflexión en el fondo que fija esos regímenes y construir un espectro de ruido ambiental con los términos de viento, térmico y de tráfico marítimo. Los niveles de referencia en que se expresa cada resultado están en la página de Acústica submarina; cuando la refracción y los contornos deciden la respuesta, toman el relevo los métodos numéricos.

Son dos magnitudes, y la ISO 18405 las mantiene separadas. La pérdida de propagación es la diferencia entre el nivel de fuente en una dirección especificada y el nivel de presión acústica cuadrático medio en una posición especificada, , referida a 1 m² (apartado 3.4.1.4). La pérdida por transmisión es la reducción de un nivel especificado entre dos puntos especificados (apartado 3.4.1.3). La ecuación del sonar necesita la magnitud referida a la fuente, así que lo que esta página calcula es una pérdida de propagación, y así se llama la función. La norma desaconseja usar cualquiera de los dos nombres como sinónimo del otro, en las dos direcciones, y por eso buena parte de la literatura llama a esta magnitud pérdida por transmisión y esta biblioteca ha dejado de hacerlo. Cualquiera de las dos magnitudes hay que declararla con el tiempo de promediado y el margen de frecuencia a los que se aplica. Los regímenes de Weston de más abajo son la misma magnitud en el mismo eje.

La pérdida de propagación es

La divergencia geométrica es (esférico), (cilíndrico) o esférico hasta una distancia de transición y cilíndrico más allá de esta ("practical"). El coeficiente de absorción de volumen (dB/km) procede de Francois-Garrison (model="francois-garrison", 1982, el valor por defecto y la referencia), Ainslie-McColm ("ainslie-mccolm", 1998) o Thorp ("thorp", 1967, solo frecuencia); los dos primeros coinciden dentro de un ~10 % entre 100 Hz y 1 MHz.

Pérdida de propagación submarina frente a la distancia a 10 kHz, con las contribuciones de divergencia geométrica y absorción de volumen dibujadas por separado, la pérdida creciente hacia abajoPérdida de propagación submarina frente a la distancia a 10 kHz, con las contribuciones de divergencia geométrica y absorción de volumen dibujadas por separado, la pérdida creciente hacia abajo

Los dos términos se intercambian los papeles con la distancia, y por eso se dibujan aparte. Hasta la transición de 1 km la pérdida es divergencia y casi nada más: 61,0 dB en total frente a 60,1 dB de divergencia. Pasada la transición, la ley de divergencia se reduce a la mitad, , y el término toma el relevo del crecimiento: a 20 km, los 92,0 dB totales son 73,0 dB de divergencia más 19,0 dB de absorción a 0,95 dB/km. A 10 kHz la absorción no llega a superar a la divergencia en todo este intervalo; a 100 kHz lo habría hecho dentro del primer kilómetro.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import underwater
# 10 kHz a 10 °C, 35 ppt y 100 m de profundidad; divergencia "practical" con R0 = 1000 m.
ranges = np.linspace(10.0, 20_000.0, 400)
pl = underwater.propagation_loss(ranges, 10e3, law="practical",
transition_range=1000.0, temperature=10.0,
salinity=35.0, depth=100.0)
print(f"alpha = {pl.absorption_coefficient:.2f} dB/km") # alpha = 0.95 dB/km
pl.plot(language="es") # PL total con las contribuciones de divergencia y absorción
plt.show()
import numpy as np
from phonometry import underwater
ranges = np.linspace(10.0, 20_000.0, 400)
pl = underwater.propagation_loss(ranges, 10e3, law="practical", transition_range=1000.0,
temperature=10.0, salinity=35.0, depth=100.0)
print(round(pl.absorption_coefficient, 3), round(float(pl.pl[-1]), 1))
# 0.95 dB/km, 92.0 dB a 20 km
# El mismo caso con los otros dos modelos de absorción, para que la
# afirmación de concordancia de arriba sea comprobable y no un enunciado:
for model in ("ainslie-mccolm", "thorp"):
other = underwater.propagation_loss(ranges, 10e3, law="practical",
transition_range=1000.0, temperature=10.0,
salinity=35.0, depth=100.0, model=model)
print(model, round(other.absorption_coefficient, 3)) # 0.973 / 1.15
pl.plot() # PL frente a distancia con la separación divergencia/absorción

Dos argumentos de esa llamada deciden más de lo que parece. depth es solo la profundidad a la que se evalúa el coeficiente de absorción (una profundidad representativa del trayecto, porque cae con la presión) y no es la profundidad del agua ni fija la ley de divergencia. es la distancia a la que el frente de onda ha llenado el conducto, así que es del orden de la profundidad del agua en una guía somera, o del espesor del canal en un conducto SOFAR: un canal de 100 m pide un cercano a 100 m, no los 1 km usados arriba, que corresponden a un trayecto de aguas profundas. La elección no es cosmética. Frente a la figura de mérito de 87 dB que se trabaja más abajo, la divergencia solo esférica sitúa la detección en 8,7 km y la ley práctica con m en 15,8 km: el mismo océano, siete kilómetros de diferencia.

El modelo de absorción importa menos, y vale la pena ver cuánto menos.

A la izquierda, el coeficiente de absorción de volumen de 10 hercios a 1 megahercio para los modelos de Francois-Garrison, Ainslie-McColm y Thorp a 10 grados Celsius, 35 partes por mil y 100 metros, con las regiones de relajación del ácido bórico, del sulfato de magnesio y del agua pura anotadas sobre la curva de referencia; a la derecha, la desviación de los otros dos modelos respecto a Francois-Garrison en tanto por ciento, con una banda sombreada de más menos diez por cientoA la izquierda, el coeficiente de absorción de volumen de 10 hercios a 1 megahercio para los modelos de Francois-Garrison, Ainslie-McColm y Thorp a 10 grados Celsius, 35 partes por mil y 100 metros, con las regiones de relajación del ácido bórico, del sulfato de magnesio y del agua pura anotadas sobre la curva de referencia; a la derecha, la desviación de los otros dos modelos respecto a Francois-Garrison en tanto por ciento, con una banda sombreada de más menos diez por ciento

Ainslie-McColm se queda dentro del ±10 % de la referencia de Francois-Garrison en toda la banda, que es lo que lo hace un sustituto legítimo. Thorp no: va un 20 % alto por debajo de unos pocos cientos de hercios y se desploma por encima de ~60 kHz, porque es un ajuste solo en frecuencia con agua a 4 °C cerca de 1000 m cocido dentro y sin temperatura, salinidad ni profundidad que darle.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
freqs = np.logspace(1.0, 6.0, 500)
env = {"temperature": 10.0, "salinity": 35.0, "depth": 100.0}
alpha = {m: np.asarray(underwater.seawater_absorption(freqs, model=m, **env))
for m in ("francois-garrison", "ainslie-mccolm", "thorp")}
fig, (ax_a, ax_r) = plt.subplots(1, 2, figsize=(13.5, 5.4))
for name, style in (("francois-garrison", "-"), ("ainslie-mccolm", "--"),
("thorp", ":")):
ax_a.loglog(freqs, alpha[name], style, label=name)
if name != "francois-garrison":
ax_r.semilogx(freqs, 100.0 * (alpha[name] / alpha["francois-garrison"] - 1.0),
style, label=name)
ax_a.set(xlabel="Frecuencia [Hz]", ylabel="alpha [dB/km]")
ax_r.set(xlabel="Frecuencia [Hz]", ylabel="Desviación respecto a Francois-Garrison [%]",
ylim=(-70, 90))
for ax in (ax_a, ax_r):
ax.grid(True, which="both", alpha=0.3)
ax.legend()
plt.show()

Fijar a mano la ley de divergencia funciona en mar abierto, pero en aguas someras la ley cambia con la distancia a medida que el fondo toma el mando. La teoría de flujo de energía de Weston, tal como la expone Ainslie §9.1.1.2, deriva los cuatro regímenes sucesivos y las distancias en que se relevan, solo a partir de la reflectividad del fondo:

RégimenFactor de propagación Ley de pérdidaTermina en
Esférico
Cilíndrico
Descamado de modos
Modo únicoEc. (9.54), exponencialmás pronunciada que

Aquí es la distancia, la profundidad del agua, el número de onda acústico en la columna de agua, el ángulo rasante crítico que fijan las velocidades del sonido del agua y del sedimento, el gradiente de pérdida por reflexión en neperios por radián () y la profundidad efectiva de Weston: el nivel poco por debajo del fondo real en el que parece situarse un contorno de presión nula, de modo que y las dos letras no son intercambiables (que es todo el contenido de la nota de errata de más abajo).

weston_propagation_loss compone la pérdida y devuelve además la ley propia de cada régimen; el campo boundaries lleva las tres distancias de transición junto con la frecuencia de corte de la guía de ondas y el número de modos propagantes. Lo que devuelve es una pérdida por propagación : el cociente incoherente, promediado en distancia, entre las presiones cuadráticas medias recibida y de fuente, con el término de absorción sumado aparte. Para las geometrías de esta página es directamente comparable con la pérdida de propagación de arriba y con el resultado modal promediado en profundidad (la diferencia entre las dos magnitudes de la ISO 18405 es la convención de distancia de referencia, no la física), y por eso ambas se dibujan en el mismo eje.

Los cuatro regímenes de propagación de Weston en aguas someras a 250 Hz sobre arena media con 50 m de columna de agua: la pérdida compuesta sigue la divergencia esférica hasta unos 43 m, la cilíndrica hasta 412 m, la ley de descamado de modos 15 lg r hasta unos 20 km y después la caída exponencial de modo único, con cada ley individual dibujada para compararLos cuatro regímenes de propagación de Weston en aguas someras a 250 Hz sobre arena media con 50 m de columna de agua: la pérdida compuesta sigue la divergencia esférica hasta unos 43 m, la cilíndrica hasta 412 m, la ley de descamado de modos 15 lg r hasta unos 20 km y después la caída exponencial de modo único, con cada ley individual dibujada para comparar

Aquí no se ha elegido nada: las tres transiciones en 42,7 m, 411,8 m y 20,1 km salen del lecho marino y de nada más, a través del ángulo crítico de 33,6° y del gradiente de pérdida por reflexión de 0,278 Np/rad de la arena media con 50 m de columna de agua. La compuesta es la envolvente inferior de las cuatro leyes a trazos, así que la pérdida se empina por etapas: 32,6 dB en la primera frontera, 42,4 dB en la segunda y 67,7 dB en la tercera. La arena es la razón de que los dos regímenes intermedios existan siquiera: un lecho más duro aleja las transiciones y uno más blando descama los modos antes.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import underwater
# 50 m de agua sobre arena media (Ainslie Tabla 9.1) a 250 Hz.
ranges = np.logspace(1.0, 5.3, 500)
res = underwater.weston_propagation_loss(ranges, 250.0, 50.0, seabed="sand",
source_depth=10.0, receiver_depth=25.0)
b = res.boundaries
print(f"psi_c = {np.degrees(b.critical_angle):.1f} grados, eta = {b.reflection_loss_gradient:.2f} Np/rad")
res.plot(language="es") # pérdida compuesta con la ley de cada régimen y las fronteras
plt.show()
from phonometry import underwater
b = underwater.weston_regime_boundaries(250.0, 50.0, seabed="sand")
print(b.cylindrical_to_mode_stripping) # r_CS, en metros
print(b.cutoff_frequency, b.mode_count) # la propagación guiada exige f > f_c
print(underwater.reflection_loss_gradient("sand")) # 0.278 Np/rad

Al ser un resultado incoherente, el flujo describe el campo promediado en distancia, y eso es justo lo que lo convierte en referencia para los métodos numéricos de propagación submarina. Con el ángulo crítico a 90° y el gradiente de pérdida a cero, la rama cilíndrica se reduce a , el límite exacto de muchos modos de una guía ideal; la pérdida por modos normales promediada en profundidad y distancia cae sobre ella dentro de un decibelio.

sea_water_sound_speed(T, S, depth, model=…) usa la ecuación UNESCO / Chen-Millero (model="unesco", el valor por defecto, en la forma Wong & Zhu 1995 ITS-90), Del Grosso ("del_grosso", fíjate en el guion bajo, al contrario que en los modelos de absorción de arriba, con guion), Mackenzie ("mackenzie") o Medwin ("medwin"), todas de 1974-1981. La profundidad se convierte a presión con Leroy & Parthiot (1998). Dentro del dominio que comparten las cuatro, coinciden dentro de 1 m/s: 0,98 m/s a 25 °C, 35 ‰ y 1000 m, y 0,52 m/s en todo el kilómetro superior del perfil dibujado más abajo, así que la elección va de rango de validez, no de exactitud. El valor de verificación canónico de Mackenzie es 1550,744 m/s a 25 °C, 35 ‰, 1000 m. La forma de seis términos de Medwin es la más basta de la familia y la que está detrás de las reglas clásicas m/s por °C y m/s por metro; está ajustada hasta unos 1000 m en aguas someras y cálidas, y llevada a 5000 m se separa de las otras casi 6 m/s, que es el único desacuerdo grande de la familia y es por entero cuestión de usarla fuera de su dominio.

Perfil de velocidad del sonido en agua de mar con la ecuación UNESCO: capa de mezcla cálida, termoclina, eje del canal sonoro en el mínimo y la velocidad creciendo con la presión en profundidadPerfil de velocidad del sonido en agua de mar con la ecuación UNESCO: capa de mezcla cálida, termoclina, eje del canal sonoro en el mínimo y la velocidad creciendo con la presión en profundidad

Por encima del eje manda la temperatura y por debajo la presión, y el punto de retorno es el canal sonoro. En este perfil la velocidad cae de 1515,79 m/s en la superficie a un mínimo de 1486,05 m/s a 775 m, donde el agua ya ha alcanzado su temperatura profunda, y vuelve a subir hasta 1517,85 m/s a 3000 m solo por presión, en agua isoterma. Toda la excursión son 32 m/s, alrededor del 2 %, que es la razón de que en el océano profundo sea la refracción, y no la absorción, la que decide adónde va el sonido.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import underwater
# Capa de mezcla cálida, termoclina hasta 4 °C y capa profunda isoterma.
depths = np.linspace(0.0, 3000.0, 121)
temps = 4.0 + 14.0 / (1.0 + (np.maximum(depths - 80.0, 0.0) / 250.0) ** 2)
profile = underwater.sound_speed_profile(depths, temps, 35.0, model="unesco")
profile.plot(language="es") # velocidad del sonido frente a profundidad, mínimo en el eje del canal
plt.show()
import numpy as np
from phonometry import underwater
c = underwater.sea_water_sound_speed(25.0, 35.0, 1000.0, model="mackenzie") # 1550,744
depths = np.linspace(0.0, 3000.0, 121)
temps = 4.0 + 14.0 / (1.0 + (np.maximum(depths - 80.0, 0.0) / 250.0) ** 2)
profile = underwater.sound_speed_profile(depths, temps, 35.0, model="unesco")
profile.plot() # velocidad del sonido frente a profundidad
A la izquierda, el perfil de velocidad del sonido calculado con las ecuaciones UNESCO, Del Grosso, Mackenzie y Medwin sobre el mismo perfil de temperatura y salinidad desde la superficie hasta 5000 metros, con las cuatro curvas indistinguibles a esa escala; a la derecha, la diferencia de cada una respecto a UNESCO frente a la profundidad en un eje de más menos siete metros por segundo, con las profundidades más allá del límite de validez de mil metros de Medwin sombreadas y con Medwin apartándose casi seis metros por segundo a 5000 metrosA la izquierda, el perfil de velocidad del sonido calculado con las ecuaciones UNESCO, Del Grosso, Mackenzie y Medwin sobre el mismo perfil de temperatura y salinidad desde la superficie hasta 5000 metros, con las cuatro curvas indistinguibles a esa escala; a la derecha, la diferencia de cada una respecto a UNESCO frente a la profundidad en un eje de más menos siete metros por segundo, con las profundidades más allá del límite de validez de mil metros de Medwin sombreadas y con Medwin apartándose casi seis metros por segundo a 5000 metros

A la escala del perfil las cuatro ecuaciones son una sola curva. El panel de diferencias es el útil: Del Grosso y Mackenzie se quedan dentro de 0,85 m/s de UNESCO en toda la columna, y las cuatro dentro de 0,52 m/s hasta 1000 m. La única desviación grande es la de Medwin por debajo de su propio límite de validez, que es un error de dominio y no un desacuerdo entre modelos.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
depths = np.linspace(0.0, 5000.0, 251)
temps = 4.0 + 14.0 / (1.0 + (np.maximum(depths - 80.0, 0.0) / 250.0) ** 2)
models = ("unesco", "del_grosso", "mackenzie", "medwin")
profiles = {m: np.asarray(underwater.sound_speed_profile(
depths, temps, 35.0, model=m).sound_speed) for m in models}
fig, (ax_c, ax_d) = plt.subplots(1, 2, figsize=(13.0, 6.2))
for m in models:
ax_c.plot(profiles[m], depths, label=m)
if m != "unesco":
ax_d.plot(profiles[m] - profiles["unesco"], depths, label=m)
ax_d.axhspan(1000.0, 5000.0, color="0.9", zorder=0) # Medwin fuera de dominio
for ax in (ax_c, ax_d):
ax.invert_yaxis()
ax.grid(True, alpha=0.3)
ax.legend()
ax_c.set(xlabel="Velocidad del sonido c [m/s]", ylabel="Profundidad [m]")
ax_d.set(xlabel="Diferencia respecto a UNESCO [m/s]", ylabel="Profundidad [m]",
xlim=(-7, 7))
plt.show()

Cada fragmento de código de esta página lleva su océano escrito a mano, y una campaña no. La temperatura, la salinidad y la profundidad que consumen sea_water_sound_speed y sound_speed_profile salen de un lance de CTD tomado cerca de la campaña tanto en el tiempo como en el espacio; el sustituto habitual es un XBT con una salinidad supuesta, y el apartado 8.1.3 de la ISO 18406 incluye el perfil de velocidad del sonido entre los datos auxiliares que registra una campaña precisamente por esto. Qué modelo le conviene a qué sensor se deduce de ahí: Mackenzie toma la profundidad directamente, así que le va bien una profundidad de ecosonda, mientras que UNESCO y Del Grosso convierten por dentro la profundidad a presión mediante Leroy & Parthiot.

Los parámetros del fondo tampoco son constantes libres. La clase de seabed de los regímenes de Weston y la , de la reflexión de Rayleigh salen de una muestra por draga o de una campaña de sísmica somera, y el esquema de clasificación empleado hay que declararlo con el resultado (Folk o similar, como exige la norma de hincado). El término de viento de Wenz espera una velocidad de viento con su altura de medida y su periodo de promediado registrados, no una lectura suelta del puente; y un espectro ambiental medido solo sustituye a la curva de Wenz donde queda claramente por encima del ruido propio del sistema de registro, que en un sistema corriente se acerca a los niveles de estado de la mar cero cerca de 63 Hz y 125 Hz. Por último, , y son propiedades del array receptor y del detector, no del mar: vienen de la especificación del array y de la estadística de detección, y ninguna medida oceanográfica los va a producir.

El mínimo de actúa como una guía de ondas (el canal SOFAR): los frentes de onda que se apartan del eje se refractan de vuelta hacia él, mientras que el sonido generado fuera del canal se fuga hacia el fondo, como muestra la simulación siguiente con un gradiente exagerado a propósito. Este atrapamiento es la razón de que el sonido de baja frecuencia pueda cruzar océanos enteros.

Dos simulaciones FDTD 2D de un pulso de baja frecuencia en un canal sonoro submarino tipo SOFAR, con el perfil c(z) dibujado junto a cada campo. Lanzado en el eje del canal a 400 m de profundidad, los frentes de onda se refractan una y otra vez de vuelta hacia el mínimo de velocidad del sonido y quedan atrapados; lanzado cerca de la superficie a 150 m, la energía cruza el canal y se fuga hacia el fondo. Los segundos finales funden a un mapa de energía integrada en el tiempo, que muestra el historial completo del recorrido de cada simulación.

Descargar la animación (WebM)

Dos simulaciones FDTD 2D de un pulso de baja frecuencia en un canal sonoro submarino tipo SOFAR, con el perfil c(z) dibujado junto a cada campo. Lanzado en el eje del canal a 400 m de profundidad, los frentes de onda se refractan una y otra vez de vuelta hacia el mínimo de velocidad del sonido y quedan atrapados; lanzado cerca de la superficie a 150 m, la energía cruza el canal y se fuga hacia el fondo. Los segundos finales funden a un mapa de energía integrada en el tiempo, que muestra el historial completo del recorrido de cada simulación.

Descargar la animación (WebM)

A escala oceánica real el eje del canal queda hacia los 1200 m, y las llegadas atrapadas son rayos que ciclan en torno al mínimo de velocidad a lo largo de decenas de kilómetros.

El canal SOFAR: un perfil de velocidad del sonido del Atlántico Norte con 1524 m/s en superficie, un mínimo cercano a 1492 m/s en el eje del canal a 1200 m y 1527 m/s en el fondo a 4800 m, junto a trayectorias de rayos de una fuente en el eje que oscilan en torno al mínimo de velocidad y quedan atrapadas sin tocar la superficie ni el fondoEl canal SOFAR: un perfil de velocidad del sonido del Atlántico Norte con 1524 m/s en superficie, un mínimo cercano a 1492 m/s en el eje del canal a 1200 m y 1527 m/s en el fondo a 4800 m, junto a trayectorias de rayos de una fuente en el eje que oscilan en torno al mínimo de velocidad y quedan atrapadas sin tocar la superficie ni el fondo

La ecuación del sonar da el exceso de señal (detección cuando ) y la figura de mérito (la máxima pérdida de propagación admisible en ):

o limitada por reverberación con en lugar de .

Esas dos formas son dos geometrías. En el caso pasivo el blanco radia y el sonido viaja en un solo sentido; en el activo radia el sonar, el blanco retrodispersa hacia él una fracción de lo que le llega, y la pérdida se paga dos veces, que es la razón de que aparezca duplicada y de que exista siquiera el término . La reverberación no es ruido ambiental: es la propia emisión del sonar dispersada de vuelta por la superficie, el volumen y el fondo, así que escala con el nivel emitido y sustituye a en vez de sumarse a él.

Las dos geometrías del sonar: la pasiva, con un blanco que radia, una pérdida de propagación de ida, un campo de ruido ambiental isótropo, un array receptor con su índice de directividad y un detector con su umbral de detección; y la activa monoestática, con emisor y receptor en un mismo punto, pérdidas de propagación de ida y de vuelta, una fuerza del blanco dibujada como un lóbulo retrodispersado, y dispersión en la superficie, el volumen y el fondo que alimenta un nivel de reverberación que sustituye al término de ruidoLas dos geometrías del sonar: la pasiva, con un blanco que radia, una pérdida de propagación de ida, un campo de ruido ambiental isótropo, un array receptor con su índice de directividad y un detector con su umbral de detección; y la activa monoestática, con emisor y receptor en un mismo punto, pérdidas de propagación de ida y de vuelta, una fuerza del blanco dibujada como un lóbulo retrodispersado, y dispersión en la superficie, el volumen y el fondo que alimenta un nivel de reverberación que sustituye al término de ruido Ecuación del sonar pasivo: el exceso de señal cae con la pérdida de propagación y cruza el cero, el límite de detección, en la figura de méritoEcuación del sonar pasivo: el exceso de señal cae con la pérdida de propagación y cruza el cero, el límite de detección, en la figura de mérito

Una recta de pendiente −1, y su ordenada en el origen es todo el diseño. El exceso de señal cae decibelio a decibelio con la pérdida de propagación y cruza el cero en = 140 − (60 − 15) − 8 = 87,0 dB, así que el sonar detecta allí donde el canal pierde menos de 87 dB y en ningún otro sitio. Todos los términos desplazan la recta verticalmente y ninguno cambia su pendiente: 6 dB más de ganancia de array compran exactamente 6 dB más de pérdida admisible, que la curva de propagación convierte después en una distancia.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import underwater
pl = np.linspace(40.0, 120.0, 400)
se = underwater.passive_sonar_equation(source_level=140.0, propagation_loss=pl,
noise_level=60.0, directivity_index=15.0,
detection_threshold=8.0)
print(f"figura de mérito = {se.figure_of_merit:.1f} dB") # figura de mérito = 87.0 dB
se.plot(language="es") # exceso de señal frente a pérdida de propagación, cruce por cero en la FOM
plt.show()
import numpy as np
from phonometry import underwater
pl = np.linspace(40.0, 120.0, 400)
se = underwater.passive_sonar_equation(source_level=140.0, propagation_loss=pl,
noise_level=60.0, directivity_index=15.0,
detection_threshold=8.0)
print(se.figure_of_merit)
se.plot() # exceso de señal frente a pérdida de propagación

Los términos, una vez: el nivel de fuente del blanco, la pérdida de propagación de ida, el nivel de ruido en el receptor, el índice de directividad (ganancia de array), el umbral de detección y, para la forma activa, la fuerza del blanco.

Hay dos referencias en juego, y la ISO 18405 las mantiene separadas. Los niveles de banda y de banda ancha (el nivel ambiental en una banda, , y tal como se usa en la ecuación del sonar) son re 1 µPa. Las densidades espectrales, que es lo que devuelven ocean_ambient_noise y ship_source_spectrum, son re 1 µPa²/Hz. Un nivel de fuente lleva además un metro cuadrado que viene de su distancia de referencia, lo que la ISO 18405 escribe re 1 µPa²m² (equivalentemente, «dB re 1 µPa a 1 m»).

Todos los términos tienen que referirse al mismo ancho de banda. La ecuación del sonar es un balance de niveles, así que mezclar un nivel de fuente de banda ancha con un nivel espectral de ruido ambiental introduce un error de , decenas de decibelios con cualquier ancho de banda útil, y la función no puede detectarlo porque recibe decibelios pelados. Como los modelos de ambiental y de tráfico marítimo de aquí son por hercio, la disciplina más simple es trabajar por hercio en todo y dejar que el ancho de banda de proceso entre por ; la alternativa suma a una señal de banda ancha y al ruido (para un tono, solo al ruido, que es toda la ganancia de proceso). El resultado del buque lleva los niveles de banda de decidécada junto a su densidad justo para esta conversión.

La figura de mérito se expresa más abajo como «dB re m²»: Ainslie la escribe como un factor de propagación máximo y no como una pérdida, y el factor de propagación tiene unidades de m², así que el mismo número que se lee como pérdida de propagación máxima admisible en decibelios se lee como figura de mérito re 1 m².

Como la figura de mérito es la pérdida de propagación máxima admisible, invertir una ley de pérdida en da el alcance de detección, la distancia a la que la probabilidad de detección es del 50 %. detection_range invierte la pérdida en forma cerrada de más arriba, que crece monótonamente con la distancia y por tanto tiene un único cruce; detection_range_from_curve lee el cruce sobre cualquier curva calculada, incluida la pérdida oscilante de una guía real, donde puede haber varios.

from phonometry import underwater
# Ejemplo de sonar activo CW de Ainslie: FOM = 82,7 dB re m2 a 50 kHz -> r50 ~ 1,3 km.
res = underwater.detection_range(82.7, 50e3)
print(res.detection_range) # metros
res.plot(language="es") # PL frente a FOM con el cruce marcado

Esa llamada arrastra cuatro valores por defecto implícitos: law="spherical", 10 °C, 35 ‰ y profundidad de superficie, con absorción de Francois-Garrison. Solo el supuesto de divergencia mueve la respuesta casi un factor dos, así que es una elección que hay que tomar a propósito y no una que se hereda; y a 50 kHz, donde manda la absorción, la temperatura y la profundidad que se le pasan tampoco son decorativas. Echa mano de detection_range_from_curve siempre que la pérdida venga de un método numérico en vez de una ley.

A la izquierda, la pérdida de propagación en forma cerrada del ejemplo activo de 50 kilohercios de Ainslie cruzando una sola vez una figura de mérito de 82,7 decibelios, a 1319 metros; a la derecha, una pérdida de propagación de modos normales a 30 hercios en una guía de 100 metros cruzando ocho veces una figura de mérito de 60 decibelios entre 1 y 6 kilómetros, con el primer cruce y el último marcadosA la izquierda, la pérdida de propagación en forma cerrada del ejemplo activo de 50 kilohercios de Ainslie cruzando una sola vez una figura de mérito de 82,7 decibelios, a 1319 metros; a la derecha, una pérdida de propagación de modos normales a 30 hercios en una guía de 100 metros cruzando ocho veces una figura de mérito de 60 decibelios entre 1 y 6 kilómetros, con el primer cruce y el último marcados

La pérdida en forma cerrada crece monótonamente, así que el cruce es único y detection_range puede devolverlo. La pérdida de una guía real oscila: aquí la misma figura de mérito se cruza ocho veces entre 4 y 6 km, y detection_range_from_curve devuelve por defecto el primero de ellos, 4,4 km. La pérdida vuelve a caer por debajo de la figura de mérito hasta tan lejos como 5,9 km, así que citar 4,4 km como «el» alcance de detección es una convención y no un hecho, y hay que decirlo en el informe.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
fig, (ax_c, ax_m) = plt.subplots(1, 2, figsize=(13.5, 5.4))
underwater.detection_range(82.7, 50e3).plot(ax=ax_c, language="es")
ranges = np.linspace(200.0, 6000.0, 1200)
modes = underwater.normal_modes(30.0, [0.0, 100.0], [1500.0, 1500.0],
source_depth=25.0, receiver_depth=60.0,
ranges_m=ranges, n_depth_points=800)
pl = np.asarray(modes.propagation_loss)
ax_m.plot(ranges / 1000.0, pl, label="PL de modos normales (30 Hz, 100 m)")
ax_m.axhline(60.0, linestyle="--", label="Figura de mérito = 60 dB")
print(underwater.detection_range_from_curve(60.0, ranges, pl)) # primer cruce
ax_m.invert_yaxis()
ax_m.set(xlabel="Distancia [km]", ylabel="Pérdida de propagación [dB]")
ax_m.legend()
plt.show()

Una onda plana que incide en el fondo se refleja con el coeficiente de reflexión de Rayleigh fluido–fluido (Medwin & Clay). Para un fondo más rápido () existe un ángulo rasante crítico , el mismo que fija las fronteras de los regímenes de Weston de arriba, por debajo del cual la onda se refleja totalmente (, pérdida nula). La pérdida es .

La reflexión total por debajo de es una propiedad de la idealización fluido-fluido sin pérdidas, no de ningún fondo marino real. Un sedimento real absorbe, así que queda un poco por debajo de la unidad a cualquier ángulo, y en aguas someras esa pequeña diferencia es toda la respuesta: un rayo solo llega a larga distancia después de muchos rebotes, así que unas centésimas de decibelio por reflexión se acumulan hasta ser la dependencia dominante con la distancia. Esa cantidad acumulada es exactamente lo que parametriza el gradiente de pérdida por reflexión de Weston. Lee las dos cosas juntas: la curva de Rayleigh para localizar el ángulo crítico y la forma de la pérdida por encima de él, y el gradiente de Weston cuando la pregunta es hasta dónde llega el sonido.

Pérdida por reflexión en el fondo frente al ángulo rasante para un fondo arenoso rápido: pérdida nula por debajo del ángulo rasante crítico, creciendo bruscamente por encimaPérdida por reflexión en el fondo frente al ángulo rasante para un fondo arenoso rápido: pérdida nula por debajo del ángulo rasante crítico, creciendo bruscamente por encima

Un rayo que se mantiene rasante no paga nada, y uno empinado lo paga casi todo. Para este par de agua sobre arena el ángulo crítico es de 24,62°: por debajo la pérdida es idénticamente nula, y un grado por encima la curva ya está subiendo, pasando por 5,21 dB a 30°, 7,89 dB a 45° y 9,05 dB en incidencia normal. Ese escalón es lo que convierte la propagación en aguas someras en un problema de filtrado angular: tras unos pocos rebotes solo sobreviven los rayos subcríticos, que es el descamado de modos que describen los regímenes de Weston.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import underwater
# Reflexión de Rayleigh fluido-fluido: agua sobre un fondo arenoso rápido.
psi = np.linspace(0.0, 90.0, 361)
bl = underwater.bottom_reflection_loss(psi, rho1=1000.0, c1=1500.0,
rho2=1900.0, c2=1650.0)
print(f"ángulo crítico = {bl.critical_angle:.1f} deg") # ángulo crítico = 24.6 deg
bl.plot(language="es") # pérdida en el fondo frente al ángulo rasante
plt.show()
import numpy as np
from phonometry import underwater
psi = np.linspace(0.0, 90.0, 361) # ángulo rasante desde la interfase, grados
bl = underwater.bottom_reflection_loss(psi, rho1=1000.0, c1=1500.0, # agua
rho2=1900.0, c2=1650.0) # arena
print(bl.critical_angle) # 24.6°
bl.plot() # pérdida por reflexión frente al ángulo rasante

El complemento seabed_reflection agrupa el reflection_coefficient complejo, su magnitude , el bottom_loss (dB) y los parámetros de la interfase en un SeabedReflection cuyo .plot() dibuja directamente el módulo del coeficiente de reflexión (unidad por debajo del ángulo crítico y decreciente hasta el valor de incidencia normal a ).

Módulo del coeficiente de reflexión del fondo frente al ángulo rasante para un fondo arenoso rápido: reflexión total por debajo del ángulo rasante crítico, decreciendo hasta el valor de incidencia normal por encimaMódulo del coeficiente de reflexión del fondo frente al ángulo rasante para un fondo arenoso rápido: reflexión total por debajo del ángulo rasante crítico, decreciendo hasta el valor de incidencia normal por encima

La misma interfase que la pérdida de arriba, leída como amplitud. vale exactamente 1 hasta 24,62° y a partir de ahí cae deprisa: 0,403 a 45° y 0,353 en incidencia normal, la razón de impedancias de onda plana de los dos medios. La idealización sin pérdidas es lo que deja plana la parte subcrítica; un sedimento real, que absorbe, la baja unas centésimas por debajo de la unidad, cosa invisible en este eje y término dominante al cabo de cincuenta rebotes.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import underwater
# Módulo del coeficiente de reflexión de Rayleigh: agua sobre un fondo arenoso rápido.
psi = np.linspace(0.0, 90.0, 361)
sr = underwater.seabed_reflection(psi, rho1=1000.0, c1=1500.0,
rho2=1900.0, c2=1650.0)
print(f"|R| en incidencia normal = {sr.magnitude[-1]:.3f}") # 0.353
sr.plot(language="es") # módulo del coeficiente de reflexión frente al ángulo rasante
plt.show()
import numpy as np
from phonometry import underwater
psi = np.linspace(0.0, 90.0, 361) # ángulo rasante desde la interfase, grados
sr = underwater.seabed_reflection(psi, rho1=1000.0, c1=1500.0, # agua
rho2=1900.0, c2=1650.0) # arena
print(sr.magnitude[-1]) # 0.353 = |R| en incidencia normal
sr.plot() # |R| frente al ángulo rasante (necesita matplotlib)

Las dos curvas de arriba se leen a un ángulo cada vez, y al lecho marino no se le llega nunca con un solo ángulo: una fuente radia todos los ángulos a la vez, y cuál de ellos incide dónde es cuestión de geometría. El clip de abajo construye esa geometría a partir de una sola ráfaga de 100 Hz a 36 m por encima del fondo. Su frente en expansión toca el lecho justo debajo de la fuente con y el punto de contacto corre después hacia fuera, barriendo el ángulo rasante hacia abajo, a través de los 24,62° y hasta unos pocos grados en el borde del encuadre: así se recorre entera la curva , una vez, en orden y de una sola tirada. La escena se ejecuta luego dos veces, sin cambiar nada más que los dos números que describen el sedimento.

Una ráfaga de 100 Hz a 36 metros por encima de un fondo marino plano, simulada dos veces: sobre la arena rápida de las figuras de arriba y sobre un fango lento. A medida que el contacto del frente en expansión con el fondo barre hacia fuera, el ángulo rasante va cayendo, y sobre la arena el haz que entra en el sedimento se apaga justo donde el rayo crítico de 24,62 grados llega al fondo, y no queda más que una piel evanescente brillante que no se lleva nada; sobre el fango el sonido entra en todos los ángulos hasta el borde mismo del encuadre. Un eje inferior va rellenando el flujo neto de energía medido a través del fondo por detrás del punto de contacto y aterriza sobre la forma cerrada.

Descargar la animación (WebM)

Una ráfaga de 100 Hz a 36 metros por encima de un fondo marino plano, simulada dos veces: sobre la arena rápida de las figuras de arriba y sobre un fango lento. A medida que el contacto del frente en expansión con el fondo barre hacia fuera, el ángulo rasante va cayendo, y sobre la arena el haz que entra en el sedimento se apaga justo donde el rayo crítico de 24,62 grados llega al fondo, y no queda más que una piel evanescente brillante que no se lleva nada; sobre el fango el sonido entra en todos los ángulos hasta el borde mismo del encuadre. Un eje inferior va rellenando el flujo neto de energía medido a través del fondo por detrás del punto de contacto y aterriza sobre la forma cerrada.

Descargar la animación (WebM)

Sobre la arena la transmisión termina en el rayo crítico y lo que queda en el sedimento es una piel evanescente: brilla y no se lleva nada. Medido sobre la propia interfase (el neto de por metro de lecho marino, al que un campo evanescente no aporta nada), el neto de la arena más allá del rayo crítico es el −4,9 % de lo que entró dentro de él, frente al 0 % de la forma cerrada, y el signo no es un error de redondeo: pasado el alcance crítico el flujo neto se invierte, porque la onda lateral que nace en el punto crítico corre a lo largo de la interfase por dentro del sedimento y vuelve a radiar hacia arriba, al agua. El fango se lleva el +28,3 % más allá de ese mismo alcance frente al +29,7 % previsto, y su curva sencillamente sigue cayendo por la derecha del panel. Esa diferencia, pagada otra vez en cada rebote, es lo que acumula el gradiente de pérdida por reflexión de Weston.

Dos cosas que el clip a propósito no enseña. En él no hay superficie del mar: con una sola interfase la imagen tiene una familia de rayos y un solo alcance crítico, mientras que una guía de ondas real añade una familia reflejada en la superficie cuya imagen queda más alta y cuyo alcance crítico propio cae más lejos. Y es un único rebote, así que el filtrado angular se ve, pero la acumulación a lo largo de muchos rebotes, el descamado de modos de la tabla de Weston, no; esa es la magnitud que viene a sustituir.

El nivel espectral de ruido ambiental es la suma energética de las componentes físicas de Wenz: el ruido de viento / superficie por la «regla de los cincos» (el ancla histórica de 25 dB a 1 kHz con 5 nudos es re 20 µPa, es decir ~51 dB re 1 µPa; estrictamente válida en ~500 Hz–5 kHz) y el ruido térmico de Mellen (dominante por encima de ~50 kHz). El rango amplio del ejemplo mantiene la curva de viento más allá de ~5 kHz solo como extrapolación para mostrar el cruce con el térmico. El espectro de tráfico puede aportarlo quien llama.

La «regla de los cincos» es una regla mnemotécnica que conviene desmenuzar, porque de ella sale toda la rama de viento: una caída de unos 5 dB por octava, anclada en un viento de 5 nudos y 1 kHz, donde la cifra histórica es 25 dB re 20 µPa, de ahí que ocean_ambient_noise devuelva ahí 51 dB re 1 µPa²/Hz. Lee el espectro en tres bandas. Por debajo de un par de cientos de hercios, un emplazamiento real lo domina normalmente el tráfico marítimo, que este modelo deja a quien llama, así que ahí la curva de viento es un suelo y no una predicción. Entre unos cientos de hercios y unos pocos kilohercios el ruido de viento manda de verdad y el modelo se gana el sueldo: a 1 kHz da 51 dB con 5 nudos frente a 64 dB en un temporal de 30 nudos, así que la velocidad del viento es el único mando y mueve la banda media más de una década de estado de la mar. Por encima de decenas de kilohercios no hay quien le gane al ruido térmico de Mellen, que fija el suelo absoluto de cualquier medida con hidrófono: 25 dB re 1 µPa²/Hz a 100 kHz, haya viento o no. Un total compuesto fuera de aproximadamente 30-100 dB re 1 µPa²/Hz entre 100 Hz y 100 kHz es un error de entrada y no un océano insólito.

Niveles espectrales de ruido ambiental de Wenz para dos velocidades de viento, con el ruido de viento cayendo 5 dB por octava y el ruido térmico creciendo por encima de unos 50 kHzNiveles espectrales de ruido ambiental de Wenz para dos velocidades de viento, con el ruido de viento cayendo 5 dB por octava y el ruido térmico creciendo por encima de unos 50 kHz

La regla de los cincos, medida: entre 500 Hz y 5 kHz la rama de viento cae 5,02 dB por octava, y pasar de 5 a 20 nudos la levanta 10,03 dB a 1 kHz, de 51,1 dB a 61,1 dB. Los dos mecanismos van luego en sentidos opuestos, así que el total tiene un mínimo: el ruido térmico llega a 25,3 dB a 100 kHz y con 5 nudos está ya a menos de 0,7 dB del total ahí, mientras que con 20 nudos sigue ganando el viento. Nada de lo que hay en esta figura es un suelo por debajo del cual pudiera bajar un hidrófono más silencioso: la rama térmica es el agua misma.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import underwater
# Ruido ambiental de Wenz (regla de los cincos + térmico de Mellen) a dos vientos.
freqs = np.logspace(2, 5.5, 300)
fig, ax = plt.subplots()
for u in (5.0, 20.0):
noise = underwater.ocean_ambient_noise(freqs, wind_speed_knots=u)
ax.semilogx(noise.frequency, noise.spectrum_level, label=f"Total ({u:.0f} kn)")
ax.semilogx(freqs, underwater.thermal_noise_spectrum(freqs), ":", label="Térmico")
ax.set(xlabel="Frecuencia [Hz]", ylabel="Nivel espectral [dB re 1 µPa²/Hz]")
ax.legend()
ax.grid(True, which="both", alpha=0.3)
plt.show()
import numpy as np
from phonometry import underwater
freqs = np.logspace(2, 5.5, 300)
noise = underwater.ocean_ambient_noise(freqs, wind_speed_knots=15.0)
noise.plot() # espectro compuesto con las componentes viento/térmico

Cuando no hay espectro medido, el nivel de fuente de un buque puede estimarse a partir de su clase, velocidad y eslora con JOMOPANS-ECHO (MacGillivray & de Jong 2021, por defecto, validado contra 1862 medidas), RANDI 3.1 o Wales & Heitmeyer (2002).

Espectros de nivel de fuente predichos por JOMOPANS-ECHO para un portacontenedores, un crucero y un remolcador, con los buques de carga mostrando una joroba de baja frecuencia por debajo de 100 HzEspectros de nivel de fuente predichos por JOMOPANS-ECHO para un portacontenedores, un crucero y un remolcador, con los buques de carga mostrando una joroba de baja frecuencia por debajo de 100 Hz

La clase, la velocidad y la eslora son las únicas entradas, y abarcan 45 dB. El portacontenedores alcanza su máximo de 174,3 dB re 1 µPa²/Hz a 31,6 Hz, el crucero 158,7 dB a 25,1 Hz, y el remolcador, lento y corto, 129,5 dB y más arriba, a 125,9 Hz. De ahí salen dos cosas: la energía de la flota está por debajo de 100 Hz, que es justo donde el modelo de viento del apartado anterior es más flojo, y un número único de «ruido de tráfico marítimo» no significa nada sin la clase. Estos son niveles de fuente a 1 m; el fragmento de más abajo muestra lo que cuesta olvidarlo.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
from phonometry import underwater
# Espectros de fuente JOMOPANS-ECHO para tres clases de buque (velocidad, eslora).
fig, ax = plt.subplots()
for vessel_class, speed, length in (("containership", 18.0, 300.0),
("cruise", 17.1, 250.0),
("tug", 3.7, 30.0)):
s = underwater.ship_source_spectrum(speed, length, vessel_class=vessel_class)
ax.semilogx(s.frequency, s.source_psd,
label=f"{vessel_class} ({speed:.0f} kn, {length:.0f} m)")
ax.set(xlabel="Frecuencia [Hz]",
ylabel="Densidad espectral de fuente [dB re 1 µPa²/Hz a 1 m]")
ax.legend()
ax.grid(True, which="both", alpha=0.3)
plt.show()
import numpy as np
from phonometry import underwater
ship = underwater.ship_source_spectrum(18.0, 300.0, vessel_class="containership")
ship.plot() # densidad espectral de fuente frente a frecuencia
print(underwater.VESSEL_CLASSES) # las 13 clases de buque de JOMOPANS-ECHO
# `source_psd` es un nivel de FUENTE a 1 m; el término `shipping` de la suma
# ambiental es un nivel espectral RECIBIDO en la posición de escucha. La
# propagación es el paso entre ambos: aquí, ese buque a 2 km.
pl = np.array([float(underwater.propagation_loss(
2000.0, float(f), law="practical", transition_range=1000.0).pl[0])
for f in ship.frequency])
received = ship.source_psd - pl
noise = underwater.ocean_ambient_noise(ship.frequency, wind_speed_knots=10.0,
shipping=received)
print(round(float(np.interp(100.0, ship.frequency, noise.spectrum_level)), 1))
# 97.6 dB re 1 uPa^2/Hz a 100 Hz, frente a 72.7 solo con el viento. Pasar
# ship.source_psd directamente imprimiría 160.6: un nivel de fuente no es uno
# recibido, y el error es la pérdida de propagación entera.

Ni siquiera eso es más que una estimación de un solo buque. El ruido de tráfico marítimo medido en un emplazamiento es la suma sobre todo el campo de tráfico, así que un término realista integra muchos buques sobre sus distancias y clases, que es la razón por la que ocean_ambient_noise deja el espectro de tráfico a quien llama en vez de construir uno por dentro. Una sola comprobación de plausibilidad se lleva casi todo el valor: un espectro ambiental compuesto por encima de unos 120 dB re 1 µPa²/Hz es un error de unidades o de geometría, no un mar ruidoso.

Todas las formas cerradas anteriores dejan de bastar cuando la refracción y los contornos deciden la respuesta: un mínimo de velocidad del sonido que atrapa energía, reflexiones en la superficie y el fondo en aguas someras, o una distancia de detección que oscila con la elección de la ley de divergencia. En ese punto el campo hay que calcularlo, y los métodos numéricos del módulo (modos normales, trazado de rayos y ecuación parabólica), junto con la guía para elegir entre ellos y estas formas cerradas, tienen su propia guía: Métodos numéricos de propagación submarina.

  • Cubierto

    La terminología de la ISO 18405:2017 (pérdida por propagación, nivel de fuente, niveles re 1 µPa) sustenta cada magnitud de esta página. propagation_loss y seawater_absorption implementan la divergencia geométrica más los modelos de absorción de Francois-Garrison (1982, por defecto), Ainslie-McColm (1998) y Thorp (1967). sea_water_sound_speed y sound_speed_profile implementan las ecuaciones de velocidad del sonido UNESCO/Chen-Millero (forma ITS-90 de Wong y Zhu de 1995, por defecto), Del Grosso (1974), Mackenzie (1981) y Medwin (1975), con la conversión de profundidad a presión de Leroy y Parthiot (1998). weston_propagation_loss y weston_regime_boundaries implementan los cuatro regímenes de flujo de energía de Weston y sus distancias de transición (Ainslie sección 9.1.1.2, Tabla 9.1). passive_sonar_equation y active_sonar_equation implementan las ecuaciones del sonar pasivo y activo monoestático (Urick, vía Etter 2003), y detection_range / detection_range_from_curve invierten una pérdida de propagación en la figura de mérito. seabed_reflection y bottom_reflection_loss implementan el coeficiente de reflexión de Rayleigh fluido-fluido y el ángulo crítico (Medwin & Clay). ocean_ambient_noise suma el ruido de viento de Wenz por la «regla de los cincos» y el ruido térmico de Mellen. ship_source_spectrum implementa los modelos de nivel de fuente JOMOPANS-ECHO (por defecto), RANDI 3.1 y Wales & Heitmeyer (2002).

  • No cubierto

    El modelo de fondo es solo reflexión de Rayleigh fluido-fluido sin pérdidas, así que la atenuación del sedimento queda fuera de alcance. active_sonar_equation es solo monoestática: no hay geometría biestática. ocean_ambient_noise deja fuera la banda de turbulencia de baja frecuencia y cualquier modelo integrado de tráfico marítimo lejano; hay que aportar un espectro de tráfico propio, por ejemplo con ship_source_spectrum de arriba. Los métodos numéricos del campo (normal_modes, ray_trace, parabolic_equation) se cubren en Métodos numéricos de propagación submarina.

  • Ainslie, M. A. (2010). Principles of Sonar Performance Modelling. Springer/Praxis. https://doi.org/10.1007/978-3-540-87662-5Los regímenes de propagación en aguas someras de Weston (sección 9.1.1.2, Ecuaciones 9.42 a 9.61 y Tabla 9.1), la fórmula de velocidad del sonido de Medwin (Ecuación 1.2) y los siete ejemplos numéricos de sonar resueltos de los capítulos 3 y 11 que fijan la sección de la ecuación del sonar.
  • Ainslie, M. A. y McColm, J. G. (1998). A simplified formula for viscous and chemical absorption in sea water. The Journal of the Acoustical Society of America, 103(3), 1671-1672. https://doi.org/10.1121/1.421258El modelo de absorción simplificado y legible ("ainslie-mccolm").
  • Carey, W. M. y Evans, R. B. (2011). Ocean ambient noise: Measurement and theory. Springer. https://doi.org/10.1007/978-1-4419-7832-5El anclaje de la "regla de los cincos" del viento y la derivación del ruido térmico de Mellen.
  • Chen, C.-T. y Millero, F. J. (1977). Speed of sound in seawater at high pressures. The Journal of the Acoustical Society of America, 62(5), 1129-1135. https://doi.org/10.1121/1.381646La ecuación de velocidad del sonido UNESCO, el estándar internacional.
  • Del Grosso, V. A. (1974). New equation for the speed of sound in natural waters (with comparisons to other equations). The Journal of the Acoustical Society of America, 56(4), 1084-1091. https://doi.org/10.1121/1.1903388La ecuación alternativa de velocidad del sonido basada en presión ("del_grosso").
  • Francois, R. E. y Garrison, G. R. (1982). Sound absorption based on ocean measurements: Part I: Pure water and magnesium sulfate contributions. The Journal of the Acoustical Society of America, 72(3), 896-907. https://doi.org/10.1121/1.388170Las componentes de agua pura y sulfato de magnesio del modelo de absorción por defecto de la sección de pérdida de propagación.
  • Francois, R. E. y Garrison, G. R. (1982). Sound absorption based on ocean measurements. Part II: Boric acid contribution and equation for total absorption. The Journal of the Acoustical Society of America, 72(6), 1879-1890. https://doi.org/10.1121/1.388673El término de ácido bórico y la ecuación completa de absorción total de Francois-Garrison, el modelo por defecto implementado.
  • International Organization for Standardization. (2017). Underwater acoustics — Terminology (ISO 18405:2017). Las definiciones normalizadas (pérdida por propagación, nivel de fuente, nivel de presión acústica re 1 µPa) tras las magnitudes de esta página.
  • Leroy, C. C. y Parthiot, F. (1998). Depth-pressure relationships in the oceans and seas. The Journal of the Acoustical Society of America, 103(3), 1346-1352. https://doi.org/10.1121/1.421275La conversión de profundidad a presión que alimenta las ecuaciones UNESCO y Del Grosso.
  • MacGillivray, A. y de Jong, C. (2021). A reference spectrum model for estimating source levels of marine shipping based on automated identification system data. Journal of Marine Science and Engineering, 9(4), 369. https://doi.org/10.3390/jmse9040369El modelo de nivel de fuente de buques JOMOPANS-ECHO (acceso abierto); su calculadora del archivo S1 es el oráculo de validación.
  • Mackenzie, K. V. (1981). Nine-term equation for sound speed in the oceans. The Journal of the Acoustical Society of America, 70(3), 807-812. https://doi.org/10.1121/1.386920La ecuación de nueve términos basada en profundidad y su valor de comprobación de 1550,744 m/s.
  • Medwin, H. y Clay, C. S. (1998). Fundamentals of acoustical oceanography. Academic Press. ISBN 978-0-12-487570-8. El coeficiente de reflexión de Rayleigh fluido-fluido y el ángulo rasante crítico de la sección de reflexión en el fondo.
  • Thorp, W. H. (1967). Analytic description of the low-frequency attenuation coefficient. The Journal of the Acoustical Society of America, 42(1), 270. https://doi.org/10.1121/1.1910566La fórmula de absorción de baja frecuencia dependiente solo de la frecuencia ("thorp").
  • Urick, R. J. (1983). Principles of underwater sound (3.ª ed.). McGraw-Hill. Reimpreso en 1996 por Peninsula Publishing. ISBN 978-0-932146-62-5. Ficha en Open Library (https://openlibrary.org/books/OL9317725M). El marco de la ecuación del sonar (exceso de señal, figura de mérito).
  • Wales, S. C. y Heitmeyer, R. M. (2002). An ensemble source spectra model for merchant ship-radiated noise. The Journal of the Acoustical Society of America, 111(3), 1211-1231. https://doi.org/10.1121/1.1427355El modelo de espectro de conjunto de buques mercantes de la sección de tráfico marítimo.
  • Wenz, G. M. (1962). Acoustic ambient noise in the ocean: Spectra and sources. The Journal of the Acoustical Society of America, 34(12), 1936-1956. https://doi.org/10.1121/1.1909155El estudio de ruido ambiental que sustenta las componentes eólica y térmica de la sección de ruido ambiental oceánico.
  • Wong, G. S. K. y Zhu, S. (1995). Speed of sound in seawater as a function of salinity, temperature, and pressure. The Journal of the Acoustical Society of America, 97(3), 1732-1736. https://doi.org/10.1121/1.413048La reformulación ITS-90 de los coeficientes UNESCO, la forma implementada.