Ir al contenido

Emisión de la fuente de tráfico viario CNOSSOS-EU

Normas aplicables: OJ L 5EUR 25379 ENISO 9613

Todo mapa estratégico de ruido trazado en la Unión Europea desde 2021 parte de los mismos dos números: cuánto ruido hace un vehículo en cada banda de octava y cuántos pasan por hora. El Anexo II de la Directiva 2002/49/CE, sustituido por los métodos CNOSSOS-EU, los convierte en una potencia acústica direccional por metro de línea fuente, que la etapa de propagación lleva luego hasta el receptor.

Esta guía cubre la fuente viaria, el apartado 2.2 del Anexo II con la base de coeficientes del Apéndice F. La fuente ferroviaria (2.3, Apéndice G) y el modelo de propagación CNOSSOS-EU (2.5) van aparte.

El Anexo II es un blanco móvil y equivocarse en la superposición de instrumentos es la forma más fácil de publicar una tabla incorrecta. Hay tres en juego:

InstrumentoQué le hace a la fuente viaria
Directiva (UE) 2015/996 de la ComisiónSustituye el Anexo II completo. Aporta las fórmulas 2.2.1 a 2.2.20 y las Tablas F-1 a F-4.
Corrección de errores del DO L 5, 10.1.2018Corrige el 2.2.1: las potencias acústicas se calculan “para cada banda de octava de 63 Hz a 8 kHz”, no de 125 Hz a 4 kHz como imprimía el texto original. El Apéndice F siempre cubrió de 63 Hz a 8 kHz, así que el texto sin corregir contradecía sus propias tablas.
Directiva Delegada (UE) 2021/1226 de la ComisiónSustituye por completo la Tabla F-1 y la Tabla F-4, funde en una sola las antiguas filas 4a y 4b de la Tabla F-4 e imprime la ponderación A por bandas de octava que se usa en 2.5.5.

La biblioteca implementa el resultado consolidado. Las Tablas F-2 (neumáticos con clavos) y F-3 (cruces) nunca se han modificado. La modificación de 2021 no es cosmética: la fuente viaria vigente es unos 2,5 a 3,5 dB(A) más ruidosa que la publicada en 2015, así que toda comparación con bibliografía anterior a 2021 arrastra ese desfase.

Cada vehículo es una fuente puntual a 0,05 m sobre el pavimento, que radia uniformemente; la primera reflexión en la calzada ya está dentro de la potencia acústica, y por eso el método la llama magnitud de semicampo libre. Un flujo de tráfico es una línea fuente incoherente, idealmente una por carril en el eje del carril.

Para cada categoría de vehículo y banda de octava , la fórmula (2.2.1) convierte la potencia acústica de un vehículo en potencia por metro de línea:

con en vehículos por hora y en km/h. La potencia del vehículo es a su vez la suma energética de un término de rodadura y otro de propulsión (2.2.2), salvo para los vehículos de dos ruedas de la categoría 4, que no tienen rodadura alguna y se quedan solo con la propulsión (2.2.3):

La Tabla [2.2.a] define cinco categorías de vehículo: 1 vehículos ligeros, 2 vehículos pesados medios, 3 vehículos pesados, 4 vehículos de dos ruedas a motor y 5 la categoría «abierta», reservada para tipos de vehículo todavía sin definir. La categoría 4 se divide en las subclases 4a ciclomotores y 4b motocicletas, que circulan en modos de conducción muy distintos, de modo que la base de coeficientes lleva cinco filas: 1, 2, 3, 4a y 4b. Las cuatro primeras categorías son obligatorias y la 5 es opcional; no tiene coeficientes en el Apéndice F y aquí no se modeliza.

Potencia por metro de línea fuente en bandas de octava de una vía urbana: barras grises para el total y líneas con marcadores para las aportaciones de ligeros, pesados medios, pesados y motocicletas, con los pesados por encima de los ligeros de 125 Hz a 500 Hz y los ligeros recuperando la delantera a 1 kHzPotencia por metro de línea fuente en bandas de octava de una vía urbana: barras grises para el total y líneas con marcadores para las aportaciones de ligeros, pesados medios, pesados y motocicletas, con los pesados por encima de los ligeros de 125 Hz a 500 Hz y los ligeros recuperando la delantera a 1 kHz

Los vehículos ligeros llevan el grueso del flujo, pero 45 pesados por hora se imponen igualmente en las frecuencias medias: el espectro por metro enseña exactamente dónde manda cada categoría.

Ver el código de esta figura
import matplotlib.pyplot as plt
from phonometry import (
JunctionType, RoadSurface, RoadTraffic, RoadVehicleCategory, road_source_power,
)
traffic = [
RoadTraffic(RoadVehicleCategory.LIGHT, 1200.0, 50.0),
RoadTraffic(RoadVehicleCategory.MEDIUM_HEAVY, 90.0, 50.0),
RoadTraffic(RoadVehicleCategory.HEAVY, 45.0, 50.0),
RoadTraffic(RoadVehicleCategory.MOTORCYCLES, 60.0, 50.0),
]
result = road_source_power(
traffic, surface=RoadSurface.THIN_LAYER_A, temperature=12.0, gradient=3.0,
junction_distance=60.0, junction_type=JunctionType.CROSSING,
)
print(result.total_line_power.round(1))
# [89.1 82.7 81.3 80.2 80.4 76.2 71.7 66. ] dB re 1 pW por metro de línea
print(round(float(result.a_weighted_line_power), 1)) # 84.2 dB(A) por metro
result.plot()
plt.show()

Cuánto vale una fuente viaria. Esta arteria urbana, 1 200 vehículos ligeros, 90 pesados medios, 45 pesados y 60 motocicletas por hora a 50 km/h, sale a 84,2 dB(A) por metro de línea; el enlace de autopista en circulación libre de la sección 6 (1 000 ligeros y 120 pesados por hora a 90 y 80 km/h) llega a 88,6 dB(A) por metro. Esas son las dos magnitudes contra las que contrastar un resultado propio. La aritmética que hay detrás merece retenerse: duplicar el flujo suma exactamente 3 dB, mientras que reducir a la mitad la velocidad suma 3 dB al término de flujo y resta del término de rodadura, de modo que ambos se cancelan en parte y un enlace urbano queda solo unos pocos decibelios por debajo de uno de autopista. El espectro dice qué mecanismo manda: la autopista tiene su máximo en 1 kHz porque lleva la rodadura, y la arteria tiene su máximo en 63 Hz y se mantiene más plana, porque a 50 km/h con vehículos pesados y un cruce a 60 m ha tomado el mando el término de propulsión. La comprobación que puede hacer cualquier lector sobre las dos: a_weighted_line_power tiene que coincidir con la suma energética ponderada A de los valores por banda impresos, usando la CNOSSOS_A_WEIGHTING por bandas de octava de la sección 6.

Planta y sección de una arteria urbana de dos carriles modelizada con CNOSSOS-EU. En planta, una línea fuente recorre el centro de cada carril, una de las líneas está dividida en tramos de 20 m con el tramo central rotulado con su potencia de línea más diez log de la longitud del tramo y su fuente puntual equivalente marcada en el centro, un cruce regulado por semáforo queda con la distancia x de 60 m acotada hacia atrás a lo largo de la vía y un pequeño gráfico en línea del decaimiento max(1 menos x partido por 100, 0) al lado, y una fachada de vivienda se sitúa a 25 m del carril más próximo con el receptor marcado sobre ella. En sección, la fuente puntual queda a 0,05 m sobre el pavimento, el receptor a 4 m del suelo en la fachada, y la pendiente s de la vía está dibujada con las mitades ascendente y descendente de un flujo bidireccional rotuladas por separadoPlanta y sección de una arteria urbana de dos carriles modelizada con CNOSSOS-EU. En planta, una línea fuente recorre el centro de cada carril, una de las líneas está dividida en tramos de 20 m con el tramo central rotulado con su potencia de línea más diez log de la longitud del tramo y su fuente puntual equivalente marcada en el centro, un cruce regulado por semáforo queda con la distancia x de 60 m acotada hacia atrás a lo largo de la vía y un pequeño gráfico en línea del decaimiento max(1 menos x partido por 100, 0) al lado, y una fachada de vivienda se sitúa a 25 m del carril más próximo con el receptor marcado sobre ella. En sección, la fuente puntual queda a 0,05 m sobre el pavimento, el receptor a 4 m del suelo en la fachada, y la pendiente s de la vía está dibujada con las mitades ascendente y descendente de un flujo bidireccional rotuladas por separado

Todos los argumentos de road_source_power son magnitudes definidas en el Anexo II, y equivocarse en uno es un error silencioso: la llamada funciona y el mapa queda desviado varios decibelios. De aquí se lee cada uno.

ArgumentoQué significaDe dónde se leeLa trampa
RoadTraffic.flow_rate ()Vehículos de la categoría por horaPromedio anual por hora, por periodo temporal (día / tarde / noche), por clase de vehículo y por línea fuente, a partir de aforos o de un modelo de tráfico (2.2.1)Un aforo de hora punta. es un promedio anual del periodo, que es lo que convierte el resultado en un ingrediente del
RoadTraffic.speed ()Velocidad representativa de la categoría En la mayoría de los casos, la menor entre el máximo legal del tramo de vía y el máximo legal de la categoría de vehículo; donde no haya datos de medida locales, el máximo legal de la categoría (2.2.1)Suponer que hace falta una media medida. No hace falta: el valor por defecto de la norma es el límite legal, y los vehículos pesados suelen tener uno más bajo que el del tramo
temperature ()Temperatura del aireLa temperatura del aire promedio anual del periodo, a partir de datos meteorológicos de largo plazo (2.2.10)El valor del día de la campaña. Con dB/°C, una media anual de 12 °C frente a una tarde de 20 °C son 0,6 dB en el término de rodadura de los ligeros
RoadTraffic.studded_fraction, studded_months (, )Cuota de flota y temporadaLa proporción media de vehículos ligeros por hora con neumáticos con clavos durante los meses en que los llevan, y el número de esos meses; el propio método forma (2.2.7)Pasar la cuota promediada al año, que aplica dos veces
junction_distance ()Distancia al cruceMedida a lo largo de la vía desde la fuente puntual hasta la intersección más próxima de esta línea fuente con otra línea fuente (2.2.5)Medir hasta la línea de detención o hasta el bordillo. Es el cruce de líneas, y solo afectan los últimos 100 m
junction_type ()1 cruce con semáforo, 2 glorietaLa regulación del cruce, no su formaUn cruce con prioridad no es ninguno de los dos: la corrección está definida para semáforos y glorietas
gradient ()Pendiente longitudinal con signo, %El modelo del terreno a lo largo de la línea fuente, saturando en ±12 %Aplicar un solo signo a un flujo bidireccional. La norma exige partir el flujo por la mitad y corregir una mitad en subida y la otra en bajada
surfaceTipo de pavimentoEl inventario de firmes, emparejado con una fila de la Tabla F-4 y su rango de velocidad declaradoUsar una fila fuera de su rango de validez
geometríaLínea fuente y receptorUna línea por carril en el centro del carril (también se admite una línea por calzada, o una para una vía de doble sentido), con la fuente puntual a 0,05 m sobre el pavimento; los puntos receptores de la Directiva están a 4 m del sueloSituar la fuente en el bordillo, o a la altura de la carrocería

Dos consecuencias que conviene enunciar sin rodeos. La primera, que la temperatura tiene que pertenecer al mismo periodo que y : un flujo de noche emparejado con una media anual de temperatura y una velocidad de noche es lo que convierte la potencia de línea resultante en un ingrediente del y no en una instantánea de una tarde. La segunda, que la línea fuente es un objeto de modelado y no una marca vial: moverla del centro del carril al bordillo cambia todas las distancias de propagación aguas abajo.

El ruido de rodadura es el ruido neumático-calzada. Crece logarítmicamente con la velocidad a partir de la velocidad de referencia :

donde la corrección reúne cuatro efectos independientes (2.2.5): el pavimento, los neumáticos con clavos, el cruce y la temperatura del aire.

La temperatura del aire (2.2.10) es una recta, aplicada por igual a las ocho bandas: , con para los ligeros y para las dos categorías pesadas. El aire frío endurece los neumáticos y hace más ruidosa la calzada, así que la corrección es positiva por debajo de 20 °C.

Los neumáticos con clavos (2.2.6 a 2.2.9) solo se aplican a la categoría 1. El exceso por neumático se satura por debajo de 50 km/h y por encima de 90 km/h, y la corrección de parque lo pondera por la fracción del año en que los clavos están en circulación, :

Los cruces (2.2.17, 2.2.18) suman el mismo decaimiento lineal a los dos términos: para el ruido de rodadura y para el de propulsión, con la distancia en metros de la fuente puntual a la intersección más próxima de su línea fuente con otra línea fuente, y el tipo de cruce: 1 para un cruce regulado por semáforo y 2 para una glorieta. Los dos se atribuyen por igual a todas las bandas de octava. Los coeficientes de rodadura son negativos (el tráfico junto a un cruce va más despacio) y los de propulsión positivos (va acelerando), y la norma declara explícitamente que los dos son nulos a partir de m.

Tres paneles que dan el cambio ponderado A de la potencia de línea fuente que produce cada corrección de la sección 3, todos calculados sobre un flujo de 1000 vehículos por hora. Izquierda: la temperatura del aire barrida de menos 10 a más 40 grados Celsius, una recta que vale unos 2,1 dB a menos 10 para los vehículos ligeros y unos 0,5 dB para los pesados, cruzando el cero en la referencia de 20 grados. Centro: la corrección por neumáticos con clavos frente a la velocidad para dos cuotas de flota, plana por debajo de 50 km/h, con máximo cerca de 50 km/h y plana otra vez por encima de 90 km/h. Derecha: la corrección por cruce frente a la distancia al cruce de 0 a 120 m, negativa tanto para un cruce con semáforo como para una glorieta, más profunda para la glorieta en el propio cruce, e idénticamente nula a partir de 100 mTres paneles que dan el cambio ponderado A de la potencia de línea fuente que produce cada corrección de la sección 3, todos calculados sobre un flujo de 1000 vehículos por hora. Izquierda: la temperatura del aire barrida de menos 10 a más 40 grados Celsius, una recta que vale unos 2,1 dB a menos 10 para los vehículos ligeros y unos 0,5 dB para los pesados, cruzando el cero en la referencia de 20 grados. Centro: la corrección por neumáticos con clavos frente a la velocidad para dos cuotas de flota, plana por debajo de 50 km/h, con máximo cerca de 50 km/h y plana otra vez por encima de 90 km/h. Derecha: la corrección por cruce frente a la distancia al cruce de 0 a 120 m, negativa tanto para un cruce con semáforo como para una glorieta, más profunda para la glorieta en el propio cruce, e idénticamente nula a partir de 100 m

Las tres correcciones de esta sección, cada una dibujada como lo que de verdad le hace a la potencia de línea. El término de temperatura es el único exactamente lineal y el único que cambia de signo; el de clavos es una banda saturante entre 50 y 90 km/h; y el de cruce no es monótono, porque el coeficiente negativo de rodadura y el positivo de propulsión decaen a la vez: en un cruce con semáforo la reducción más profunda está en torno a 50 m, no en el propio cruce.

Ver el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
# `road_source_power`, `RoadTraffic`, `RoadVehicleCategory` y `JunctionType`
# los importa el fragmento de la figura de arriba.
def a_line(**kwargs):
return float(road_source_power(**kwargs).a_weighted_line_power)
ligeros = [RoadTraffic(RoadVehicleCategory.LIGHT, 1000.0, 50.0)]
pesados = [RoadTraffic(RoadVehicleCategory.HEAVY, 1000.0, 50.0)]
temps = np.linspace(-10.0, 40.0, 60)
fig, (t_ax, s_ax, j_ax) = plt.subplots(1, 3, figsize=(13, 4.2))
for flujo, name in [(ligeros, "Ligeros (1)"), (pesados, "Pesados (3)")]:
ref = a_line(traffic=flujo)
t_ax.plot(temps, [a_line(traffic=flujo, temperature=t) - ref for t in temps],
label=name)
t_ax.set(xlabel="Temperatura del aire tau [°C]",
ylabel="Cambio en la potencia de línea [dB(A)]")
t_ax.legend()
velocidades = np.linspace(20.0, 130.0, 60)
for share in (0.2, 0.5):
s_ax.plot(velocidades, [
a_line(traffic=[RoadTraffic(RoadVehicleCategory.LIGHT, 1000.0, v,
studded_fraction=share)],
studded_months=4.0)
- a_line(traffic=[RoadTraffic(RoadVehicleCategory.LIGHT, 1000.0, v)])
for v in velocidades], label=f"Qstud,ratio = {share:g}, Ts = 4 meses")
s_ax.set(xlabel="Velocidad v [km/h]",
ylabel="Cambio en la potencia de línea [dB(A)]")
s_ax.legend(fontsize="small")
xs = np.linspace(0.0, 120.0, 60)
ref = a_line(traffic=ligeros)
for junction, name in [(JunctionType.CROSSING, "Cruce con semáforo"),
(JunctionType.ROUNDABOUT, "Glorieta")]:
j_ax.plot(xs, [a_line(traffic=ligeros, junction_distance=float(x),
junction_type=junction) - ref for x in xs], label=name)
j_ax.set(xlabel="Distancia al cruce |x| [m]",
ylabel="Cambio en la potencia de línea [dB(A)]")
j_ax.legend(fontsize="small")
plt.show()

El ruido de propulsión es el del grupo motopropulsor: motor, escape, transmisión y admisión. Es lineal con la velocidad, no logarítmico, porque a baja velocidad el motor trabaja más por unidad de distancia recorrida:

Dónde se cruzan las dos leyes de velocidad es lo que da a la fuente viaria su comportamiento: por debajo del cruce la fuente es un motor, por encima es un neumático.

Potencia acústica ponderada A de un solo vehículo frente a la velocidad de 20 a 130 km/h para ligeros y pesados, con las componentes de rodadura y propulsión en trazo discontinuo y punteado y la velocidad de cruce marcada en cada parPotencia acústica ponderada A de un solo vehículo frente a la velocidad de 20 a 130 km/h para ligeros y pesados, con las componentes de rodadura y propulsión en trazo discontinuo y punteado y la velocidad de cruce marcada en cada par

Un vehículo ligero está dominado por el neumático desde unos 25 km/h; uno pesado solo a partir de unos 60 km/h, y por eso un camión sigue siendo un motor a velocidades urbanas.

Ver el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import (
CNOSSOS_A_WEIGHTING, road_propulsion_noise, road_rolling_noise,
road_vehicle_sound_power,
)
weights = np.asarray(CNOSSOS_A_WEIGHTING)
a_weighted = lambda bands: 10.0 * np.log10(np.sum(10.0 ** ((bands + weights) / 10.0)))
speeds = np.linspace(20.0, 130.0, 221)
fig, ax = plt.subplots()
for category, name in [("1", "Vehículos ligeros (1)"), ("3", "Vehículos pesados (3)")]:
rolling = [a_weighted(road_rolling_noise(category, v)) for v in speeds]
propulsion = [a_weighted(road_propulsion_noise(category, v)) for v in speeds]
total = [a_weighted(road_vehicle_sound_power(category, v)) for v in speeds]
ax.plot(speeds, total, lw=2.4, label=f"{name} - total")
ax.plot(speeds, rolling, ls="--", lw=1.2, label=f"{name} - rodadura")
ax.plot(speeds, propulsion, ls=":", lw=1.2, label=f"{name} - propulsión")
ax.set_xlabel("Velocidad v [km/h]")
ax.set_ylabel("Potencia acústica ponderada A [dB(A) re 1 pW]")
ax.legend(fontsize="small")
plt.show()

La pendiente de la vía (2.2.13 a 2.2.16) es la única corrección cuya forma publicada es genuinamente asimétrica, y la asimetría no es un desliz de transcripción. Para los ligeros la rama de bajada no lleva factor de velocidad, mientras que las dos categorías pesadas sí lo llevan y con desplazamientos de velocidad distintos:

CategoríaBajada ( por debajo del codo)Banda planaSubida
1−6 % a 2 %
2−4 % a 0 %
3−4 % a 0 %

La categoría 4 no lleva corrección por pendiente. La pendiente se satura en el 12 % en ambos sentidos. El ruido de bajada viene del freno motor y el de subida de la carga, así que las dos ramas son positivas. Para un flujo bidireccional, divide el flujo en dos y corrige una mitad en subida y la otra en bajada.

La corrección ponderada A por pendiente de la vía al ruido de propulsión frente a la pendiente con signo de menos 14 a más 14 por ciento, a 50 y 80 km/h, para las categorías de vehículo 1, 2 y 3. Cada curva es plana dentro de su propia banda muerta, sube con pendiente pronunciada por el lado de bajada y menos pronunciada por el de subida, y deja de cambiar más allá de más o menos 12 por ciento, donde la pendiente satura; la rama de bajada de los vehículos ligeros es la única que no se mueve con la velocidadLa corrección ponderada A por pendiente de la vía al ruido de propulsión frente a la pendiente con signo de menos 14 a más 14 por ciento, a 50 y 80 km/h, para las categorías de vehículo 1, 2 y 3. Cada curva es plana dentro de su propia banda muerta, sube con pendiente pronunciada por el lado de bajada y menos pronunciada por el de subida, y deja de cambiar más allá de más o menos 12 por ciento, donde la pendiente satura; la rama de bajada de los vehículos ligeros es la única que no se mueve con la velocidad

La asimetría es una forma, no una errata. Cada categoría tiene su propia banda plana (de −6 % a +2 % para los ligeros, de −4 % a 0 % para las dos clases de pesados), cada una satura en ±12 %, y las dos ramas suben: en bajada el motor frena y en subida trabaja. A 80 km/h un descenso del 14 % vale 6,0 dB(A) a un vehículo ligero y 11,2 dB(A) a uno pesado, mientras que la misma subida vale 5,3 y 12,0 dB(A), y la rama de bajada de los ligeros es la única de las seis que no escala con la velocidad.

Ver el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
# `road_propulsion_noise` y `CNOSSOS_A_WEIGHTING` los importa el fragmento de la
# figura de las leyes de velocidad de más arriba.
weights = np.asarray(CNOSSOS_A_WEIGHTING)
a_weighted = lambda bands: 10.0 * np.log10(np.sum(10.0 ** ((bands + weights) / 10.0)))
pendientes = np.linspace(-14.0, 14.0, 141)
fig, ax = plt.subplots()
for category in ("1", "2", "3"):
for speed, style in [(50.0, "--"), (80.0, "-")]:
plano = a_weighted(road_propulsion_noise(category, speed))
ax.plot(pendientes,
[a_weighted(road_propulsion_noise(category, speed, gradient=s)) - plano
for s in pendientes], style, label=f"Categoría {category}, {speed:g} km/h")
ax.set_xlabel("Pendiente de la vía s [%]")
ax.set_ylabel("Corrección del ruido de propulsión [dB(A)]")
ax.legend(fontsize="small")
plt.show()

Por debajo de 20 km/h el vehículo deja de hacerse más silencioso. El apartado 2.2.1 declara, después tanto de la (2.2.2) como de la (2.2.3), que para velocidades inferiores a 20 km/h la potencia acústica toma su valor de 20 km/h: las regresiones tabuladas se ajustaron sobre tráfico en circulación libre y no se extrapolan a una cola. El término de flujo conserva la velocidad real, así que las dos mitades de la (2.2.1) tiran en sentidos opuestos y la potencia de línea tiene un mínimo. Para 1 000 vehículos ligeros por hora sobre el pavimento de referencia, road_source_power devuelve 81,5 dB(A) por metro a 50 km/h, 76,2 a 20 km/h, 79,2 a 10 km/h y 82,2 a 5 km/h: la misma vía se vuelve más ruidosa por metro a medida que la corriente se frena por debajo de ese mínimo, simplemente porque hay más vehículos en cada metro de ella. Un lector que no conozca ese mínimo no puede distinguir eso de un efecto de congestión modelizado.

Conviene decir, por tanto, qué no representa el modelo: los ciclos de aceleración y frenado, el ralentí en una cola y el ruido de propulsión de la conducción de parada y arranque, para lo que la corrección por cruce sobre los últimos 100 m es un sustituto deliberadamente grosero. Los tramos congestionados se modelizan normalmente a su velocidad media de recorrido con esa corrección aplicada.

5. El pavimento (2.2.19, 2.2.20 y Tabla F-4)

Sección titulada «5. El pavimento (2.2.19, 2.2.20 y Tabla F-4)»

La Tabla F-4 da, para el pavimento de referencia y para cada uno de los catorce pavimentos con nombre, un coeficiente por banda de octava y un coeficiente de velocidad , por categoría de vehículo, con el rango de velocidad en que la fila se declara válida. El pavimento entra de forma distinta en cada término:

Un pavimento absorbente reduce el ruido de propulsión; uno ruidoso no lo aumenta. Esa asimetría es deliberada: la calzada puede absorber el sonido del motor que se radia hacia ella, pero una textura rugosa solo genera ruido de neumático, y el ruido de neumático ya es el término de rodadura.

from phonometry import RoadSurface, road_surface_coefficients
row = road_surface_coefficients(RoadSurface.TWO_LAYER_ZOAB_FINE)
row.speed_range # (80.0, 130.0) km/h, el rango de validez impreso
row.alpha["1"] # alpha por banda de octava para vehículos ligeros
row.beta["1"] # -0.1, el coeficiente de velocidad
Coeficiente de pavimento alpha por banda de octava para vehículos ligeros frente a la frecuencia, para cinco filas de la Tabla F-4 que cubren todo el rango, más el pavimento de referencia todo ceros dibujado como una línea plana en 0 dB. Las dos filas de mezcla bituminosa porosa de doble capa quedan varios decibelios por debajo de la referencia en las bandas medias y altas, las capas finas algo por debajo, y el pavimento de elementos rígidos bastante por encima, con el rango de velocidad declarado de cada curva impreso en la leyendaCoeficiente de pavimento alpha por banda de octava para vehículos ligeros frente a la frecuencia, para cinco filas de la Tabla F-4 que cubren todo el rango, más el pavimento de referencia todo ceros dibujado como una línea plana en 0 dB. Las dos filas de mezcla bituminosa porosa de doble capa quedan varios decibelios por debajo de la referencia en las bandas medias y altas, las capas finas algo por debajo, y el pavimento de elementos rígidos bastante por encima, con el rango de velocidad declarado de cada curva impreso en la leyenda

El pavimento de referencia es la línea cero, así que cada curva se lee directamente como «más ruidoso o más silencioso que la referencia de CNOSSOS»: la mezcla bituminosa porosa de doble capa queda 6,3 dB por debajo a 1 kHz, y los elementos rígidos no colocados en espina de pez quedan 31,4 dB por encima a 63 Hz. El rango de velocidad declarado que aparece en la leyenda forma parte de la fila: una mezcla porosa validada de 80 a 130 km/h no es un juego de coeficientes para una calle de 30 km/h, la fila de referencia es la única sin rango, y el método no ofrece interpolación entre filas.

Ver el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
# `RoadSurface` y `road_surface_coefficients` se importan justo arriba.
bands = np.array([63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0])
fig, ax = plt.subplots()
for surface in (RoadSurface.REFERENCE, RoadSurface.TWO_LAYER_ZOAB_FINE,
RoadSurface.ONE_LAYER_ZOAB, RoadSurface.THIN_LAYER_A,
RoadSurface.SMA_NL8, RoadSurface.HARD_ELEMENTS_NOT_HERRINGBONE):
row = road_surface_coefficients(surface)
# La fila de referencia no lleva rango de velocidad: es válida por definición.
span = ("todas las velocidades" if row.speed_range is None
else "{:g}-{:g} km/h".format(*row.speed_range))
ax.semilogx(bands, row.alpha["1"], label=f"{surface.value} ({span})")
ax.axhline(0.0, color="k", lw=0.8)
ax.set_xlabel("Frecuencia central de banda de octava [Hz]")
ax.set_ylabel("Coeficiente de pavimento alpha, categoría 1 [dB]")
ax.legend(fontsize="small")
plt.show()

El pavimento de referencia de la primera fila es todo ceros: es el promedio virtual de una mezcla bituminosa densa 0/11 y una mezcla bituminosa discontinua tipo SMA 0/11, de entre dos y siete años, en estado de mantenimiento representativo, seca, sin neumáticos con clavos, a 20 °C y en llano. Exactamente en esas condiciones toda corrección del 2.2 se anula de forma idéntica, así que a la velocidad de referencia , donde también se anulan los dos términos de velocidad, las potencias acústicas son los coeficientes y de la Tabla F-1.

6. Entregar la fuente a un modelo de propagación

Sección titulada «6. Entregar la fuente a un modelo de propagación»

La etapa de emisión produce una potencia por metro. Trocear esa línea en fuentes puntuales equivalentes queda, en palabras del apartado 2.5.3, «fuera del alcance de la presente metodología»: una fuente puntual que representa un tramo de longitud lleva simplemente , que es aritmética y se ofrece como tal.

import numpy as np
from phonometry import (
PropagationGeometry, RoadTraffic, RoadVehicleCategory,
line_source_segment_power, predicted_receiver_level, road_source_power,
)
result = road_source_power([
RoadTraffic(RoadVehicleCategory.LIGHT, 1000.0, 90.0),
RoadTraffic(RoadVehicleCategory.HEAVY, 120.0, 80.0),
])
segment = line_source_segment_power(result.total_line_power, 20.0) # tramo de 20 m
# Un tramo, el que queda justo enfrente de un receptor a 100 m de la carretera.
levels = predicted_receiver_level(
segment,
PropagationGeometry(100.0, result.source_height, 4.0),
frequencies=result.frequencies,
)
# La carretera es la suma energética de sus tramos: 1 km a cada lado, en pasos de 20 m.
energy = np.zeros_like(levels)
for x in np.arange(-990.0, 1000.0, 20.0): # centros de tramo a lo largo de la vía
energy += 10 ** (predicted_receiver_level(
segment,
PropagationGeometry(float(np.hypot(100.0, x)), result.source_height, 4.0),
frequencies=result.frequencies,
) / 10)
road = 10 * np.log10(energy)

Dos reglas hacen defendible un troceado, y ninguna de las dos es método: el 2.5.3 declara el reparto fuera de alcance, así que esto es práctica de ingeniería. Cada tramo tiene que ser bastante corto como para que la fuente puntual de su centro represente al tramo entero: la ISO 9613-2 solo admite una fuente puntual equivalente cuando la distancia de propagación supera el doble de la mayor dimensión de la fuente, de modo que un tramo visto desde 100 m puede medir decenas de metros y uno visto desde 10 m no. Y la carretera tiene que modelarse lo bastante lejos en ambos sentidos como para que las colas dejen de importar: más allá de unas diez veces la distancia perpendicular, añadir tramos cambia el total en menos de una décima de decibelio, y por eso 1 km a cada lado basta a 100 m aquí. Los dos espectros se leen en dB(A) dos párrafos más abajo: 52,9 dB(A) para el tramo aislado frente a 64,7 dB(A) para la carretera, una diferencia de 11,8 dB que es enteramente la aritmética de arriba.

Conviene ver qué es esto y qué no. CNOSSOS-EU tiene su propio método de propagación en el apartado 2.5 del Anexo II, y no es la ISO 9613-2: difieren en el modelo de suelo, en el tratamiento de la difracción y en la forma de combinar las condiciones favorables y las homogéneas. Encadenar una emisión CNOSSOS con la propagación ISO 9613-2 de esta biblioteca es una estimación de ingeniería legítima, pero no es la cadena normativa CNOSSOS y no debe declararse como tal.

Para el total ponderado A, usa la ponderación por bandas de octava que la propia Directiva imprime en el 2.5.5 modificado, en lugar de recalcularla:

from phonometry import CNOSSOS_A_WEIGHTING
CNOSSOS_A_WEIGHTING # (-26.2, -16.1, -8.6, -3.2, 0.0, 1.2, 1.0, -1.1)
result.a_weighted_line_power
# Los dos espectros en el receptor del troceado de arriba, ponderados A:
weight = np.asarray(CNOSSOS_A_WEIGHTING)
print(round(float(10 * np.log10(np.sum(10 ** ((levels + weight) / 10)))), 1))
# 52.9 dB(A) - un tramo de 20 m, no la carretera
print(round(float(10 * np.log10(np.sum(10 ** ((road + weight) / 10)))), 1))
# 64.7 dB(A) - la misma carretera, sumada sobre 2 km: 11.8 dB más

El Apéndice F se llama base de datos, y no tabla de constantes, porque los Estados miembros pueden sustituir sus valores por otros medidos a escala nacional, y porque las mismas ecuaciones ya se han evaluado con dos juegos de coeficientes distintos (el de 2015 y el de 2021). Los dos objetos de coeficientes se pueden reemplazar:

import dataclasses
from phonometry import ROAD_COEFFICIENTS
# Una fila nacional medida para vehículos ligeros y el resto del Apéndice F tal cual.
national = dataclasses.replace(
ROAD_COEFFICIENTS,
rolling_a={
**ROAD_COEFFICIENTS.rolling_a,
"1": (83.4, 89.0, 88.1, 93.6, 100.4, 96.9, 87.0, 76.5),
},
)

Una base sustituida tiene que cubrir todas las categorías del tráfico con el que se use: pedir una categoría que no lleva lanza ValueError en lugar de fallar más adelante.

Ese mecanismo es además lo que ancla la implementación: la Comisión Europea publicó un juego de prueba de 4 875 casos de emisión viaria calculados con los coeficientes de 2015, y alimentar las ecuaciones implementadas con esa base superada (no con las tablas de 2021 que la biblioteca trae por defecto) reproduce todos los niveles publicados por banda con 0,005 dB, dentro de los dos decimales que imprime el juego de prueba.

  • Cubierto

    El apartado 2.2 del Anexo II de la Directiva 2002/49/CE en el texto consolidado: la potencia de línea del flujo de tráfico (2.2.1), la potencia del vehículo (2.2.2, 2.2.3), el ruido de rodadura con sus correcciones por neumáticos con clavos y temperatura (2.2.4 a 2.2.10), el ruido de propulsión con la corrección por pendiente (2.2.11 a 2.2.16), la corrección por cruce (2.2.17, 2.2.18) y el efecto del pavimento (2.2.19, 2.2.20), junto con toda la base de datos del Apéndice F, a través de road_source_power, road_vehicle_sound_power, road_rolling_noise, road_propulsion_noise y road_surface_coefficients.

  • No cubierto

    La fuente ferroviaria (2.3 y Apéndice G), la fuente industrial (2.4 y Apéndice H), la fuente aeronáutica (2.6 y 2.7) y el método de propagación CNOSSOS-EU del apartado 2.5, que es un modelo distinto del de la ISO 9613-2 implementado en esta biblioteca. La categoría de vehículo abierta 5 no tiene coeficientes en el Apéndice F y por eso no se modeliza. Cómo se trocea una línea fuente en fuentes puntuales lo declara fuera de alcance el propio método.