Ir al contenido

Predicción del aislamiento acústico (EN 12354)

Normas aplicables: EN 12354Referencias: Hopkins 2007

Un índice de laboratorio describe un elemento aislado; un edificio también transmite el sonido por cada camino de flancos. Esta página cubre la predicción EN 12354 del comportamiento in situ a partir de datos de elemento de laboratorio: los modelos de flancos aéreo y de impactos de EN 12354-1/2 con sus índices de reducción de vibraciones de unión, y el aislamiento de fachada y la radiación al exterior de EN 12354-3/4. Las magnitudes medidas con las que se comprueba el modelo están en Medición del aislamiento en campo e índices; los datos de laboratorio vienen de Medición del aislamiento en laboratorio.

¿Cómo predigo el aislamiento acústico con EN 12354 en Python?

Sección titulada «¿Cómo predigo el aislamiento acústico con EN 12354 en Python?»

Construye los tres caminos de flanco de cada unión con building.flanking_element() y combínalos con building.predicted_airborne_insulation(r_direct=57.0, flanking_paths=paths). Para el ejemplo del anexo H.3 de EN 12354-1 que se usa abajo devuelve r_prime_w = 52,2 dB, es decir = 52 dB, y nombra el camino dominante. El aislamiento a impactos pasa por predicted_impact_insulation().

Un índice de laboratorio describe un elemento de forma aislada, pero el sonido que un edificio transmite realmente también viaja alrededor del cerramiento (por el suelo, por la fachada, a través de las paredes de flanco) y se vuelve a radiar en la sala receptora. Esta transmisión por flancos es toda la diferencia entre el de laboratorio y el de campo. EN 12354 predice el índice aparente in situ a partir de los índices de laboratorio de los elementos más la transmisión vibratoria de sus uniones.

El camino directo Dd a través del elemento separador y los tres caminos de flanco Ff, Df y Fd en cada unión entre un elemento de flanco y el elemento separadorEl camino directo Dd a través del elemento separador y los tres caminos de flanco Ff, Df y Fd en cada unión entre un elemento de flanco y el elemento separador

Cada unión entre un elemento de flanco y el elemento separador lleva tres caminos, (flanco→flanco), (directo→flanco) y (flanco→directo), junto al único camino directo .

Los pulsos de energía salen de la sala emisora por el camino directo Dd y los caminos de flanco Ff, Fd y Df, encogiéndose en cada elemento y unión, y la etiqueta de cada camino se ilumina cuando su pulso vuelve a radiar en la sala receptora.

Descargar la animación (WebM)

Los pulsos de energía salen de la sala emisora por el camino directo Dd y los caminos de flanco Ff, Fd y Df, encogiéndose en cada elemento y unión, y la etiqueta de cada camino se ilumina cuando su pulso vuelve a radiar en la sala receptora.

Descargar la animación (WebM)

El modelo simplificado de un solo número los combina energéticamente (Fórmula 26):

con el camino directo (Fórmula 27) y cada camino de flanco (Fórmula 28a)

donde m es la longitud de acoplamiento de referencia, la longitud de acoplamiento de la unión y el índice de reducción de vibraciones de la unión (Anexo E, empírico en la relación de masas ).

Índices de reducción acústica por camino para el ejemplo del Anexo H.3 de EN 12354-1 y la fracción de energía transmitida de cada camino, mostrando el camino directo dominando en R'w = 52 dBÍndices de reducción acústica por camino para el ejemplo del Anexo H.3 de EN 12354-1 y la fracción de energía transmitida de cada camino, mostrando el camino directo dominando en R'w = 52 dB
import numpy as np
from phonometry import building
# EN 12354-1 Anexo H.3: una pared separadora Rs,w = 57 dB, área Ss = 11.5 m², con
# cuatro elementos de flanco. El modelo simplificado lee el Kij de cada unión a
# 500 Hz a partir de la relación de masas m'perp / m' (Anexo E); aquí la unión
# rígida en cruz del suelo (la relación de masas está redondeada, de ahí 12.5 vs Anexo 12.4):
print(round(building.junction_vibration_reduction("rigid_cross", "through", 1.61), 1)) # 12.5 KFf
print(round(building.junction_vibration_reduction("rigid_cross", "corner", 1.61), 1)) # 8.9 KFd = KDf
# Construye los tres caminos de flanco (Ff, Df, Fd) de cada elemento a partir del
# Kij tabulado del Anexo H, luego combina el camino directo Dd energéticamente (Fórmula 26).
elements = [ # (nombre, Rw, KFf, KFd = KDf, longitud de acoplamiento lf)
("floor", 49, 12.4, 8.9, 4.50),
("ceiling", 46, 14.4, 9.2, 4.50),
("facade", 42, 12.6, 6.7, 2.55),
("int-wall", 33, 33.5, 15.7, 2.55),
]
paths = []
for name, rw, k_ff, k_fd, lf in elements:
paths += building.flanking_element(label=name, r_flanking=rw, r_separating=57,
k_ff=k_ff, k_fd=k_fd, k_df=k_fd,
separating_area=11.5, coupling_length=lf)
res = building.predicted_airborne_insulation(r_direct=57.0, flanking_paths=paths)
print(round(res.r_prime_w, 1)) # 52.2 -> R'w = 52 dB
print(res.dominant.label, round(res.dominant.fraction, 2)) # Dd 0.33 (domina el directo)
res.plot() # fracción de energía transmitida por camino, de mayor a menor (requiere matplotlib)
Ver el código de esta figura
import matplotlib.pyplot as plt
from phonometry import building
# Construye los tres caminos de flanco (Ff, Df, Fd) de cada elemento a partir del
# Kij tabulado del Anexo H, luego combina el camino directo Dd energéticamente (Fórmula 26).
elements = [ # (nombre, Rw, KFf, KFd = KDf, longitud de acoplamiento lf)
("floor", 49, 12.4, 8.9, 4.50),
("ceiling", 46, 14.4, 9.2, 4.50),
("facade", 42, 12.6, 6.7, 2.55),
("int-wall", 33, 33.5, 15.7, 2.55),
]
paths = []
for name, rw, k_ff, k_fd, lf in elements:
paths += building.flanking_element(label=name, r_flanking=rw, r_separating=57,
k_ff=k_ff, k_fd=k_fd, k_df=k_fd,
separating_area=11.5, coupling_length=lf)
res = building.predicted_airborne_insulation(r_direct=57.0, flanking_paths=paths)
# Índice de reducción acústica por camino y fracción de energía transmitida de cada
# camino para el resultado del Anexo H.3 calculado arriba.
labels = [p.label for p in res.paths]
r_w = [p.r_w for p in res.paths]
frac = [100.0 * p.fraction for p in res.paths]
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(9, 6), sharex=True)
ax1.bar(labels, r_w, color="tab:blue")
ax1.axhline(res.r_prime_w, ls="--", color="k", label=f"R'w = {res.r_prime_w:.1f} dB")
ax1.set_ylabel("Rij,w del camino [dB]"); ax1.legend()
ax2.bar(labels, frac, color="tab:orange")
ax2.set_ylabel("Fracción de energía [%]"); ax2.set_xlabel("Camino de transmisión")
for ax in (ax1, ax2):
ax.tick_params(axis="x", rotation=45)
fig.suptitle("EN 12354-1 Anexo H.3 — transmisión por flancos")
fig.tight_layout()
plt.show()

Cada camino de flanco añadido rebaja estrictamente por debajo del directo ; res.paths expone la fracción de energía transmitida de cada camino, de modo que el camino dominante queda visible. flanking_element es una función de conveniencia que construye de una vez los tres caminos de una unión; el constructor de camino único que hay detrás, flanking_path, construye un camino Ff, Df o Fd cada vez (Fórmula 28a). La Cláusula 4.4.2 también impone un límite inferior a partir de la geometría de la unión (Fórmula 29). Pasa el área del elemento de flanco a flanking_element(..., flanking_area=...) y la saturación se aplica automáticamente camino a camino; o calcula el límite con junction_min_vibration_reduction y pásalo a flanking_path(..., kij_min=...), que eleva un por debajo del límite hasta el mínimo:

from phonometry import building
# Kij,min = 10 lg[lf·l0·(1/Si + 1/Sj)]; los elementos grandes dan un límite bajo
# (aquí negativo), así que un Kij tabulado realista rara vez se satura; pero
# los elementos pequeños y ligeros pueden superarlo (p. ej. lf = 4 m,
# S = 1.5 m² da 7.3 dB, por encima del suelo de 5 dB de las uniones ligeras).
print(round(building.junction_min_vibration_reduction(coupling_length=4.5,
s_i=11.5, s_j=11.5), 1)) # -1.1

La contrapartida a impactos (EN 12354-2, Fórmula 21) es una resta directa: , con el nivel equivalente del suelo desnudo (Anexo B), la mejora del revestimiento (ISO 717-2) y la corrección por flancos de la Tabla 1.

from phonometry import building
# EN 12354-2 Anexo E.3: un forjado de hormigón de 0.14 m (m' = 322 kg/m²) con un
# suelo flotante (ΔLw = 33 dB), salas una sobre otra, masa media de flanco 145 kg/m².
ln_eq = building.equivalent_impact_level(322.0) # 164 - 35 lg(m')
k = building.impact_flanking_correction(322.0, 145.0) # Tabla 1 (sep 322, flk 145)
imp = building.predicted_impact_insulation(ln_w_eq=ln_eq, delta_l_w=33.0, k_correction=k)
print(round(ln_eq, 1), k, round(imp.l_prime_n_w, 1)) # 76.2 2 45.2 -> L'n,w = 45 dB
# Fórmula (3) exacta: L'nT,w = L'n,w - 10 lg(0.032 V). El redondeo del propio
# Anexo E.3 a 10 lg(V/30) queda 0.18 dB por debajo; ambos dan L'nT,w = 43 dB.
print(round(building.standardized_impact_level(imp.l_prime_n_w, 50.0), 1)) # 43.2 L'nT,w
imp.plot() # los términos de la Fórmula (21) como barras: Ln,w,eq - dLw + K -> L'n,w (requiere matplotlib)
La predicción de impactos del Anexo E.3 de EN 12354-2 como sus términos de la Fórmula 21: el nivel equivalente del forjado desnudo de 76,2 dB, la mejora de menos 33 dB del suelo flotante, la corrección de flancos de más 2 dB y el nivel de impactos aparente previsto resultante de 45,2 dBLa predicción de impactos del Anexo E.3 de EN 12354-2 como sus términos de la Fórmula 21: el nivel equivalente del forjado desnudo de 76,2 dB, la mejora de menos 33 dB del suelo flotante, la corrección de flancos de más 2 dB y el nivel de impactos aparente previsto resultante de 45,2 dB

Todo el modelo simplificado de EN 12354-2 es una resta: el forjado masivo desnudo parte de dB, el suelo flotante recupera 33 dB y la corrección de flancos devuelve 2 dB, quedando en dB.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import building
# EN 12354-2 Anexo E.3: forjado de hormigón de 0,14 m (m' = 322 kg/m2),
# suelo flotante con delta-Lw = 33 dB, masa media de flancos de 145 kg/m2.
ln_eq = building.equivalent_impact_level(322.0)
k = building.impact_flanking_correction(322.0, 145.0)
imp = building.predicted_impact_insulation(ln_w_eq=ln_eq, delta_l_w=33.0,
k_correction=k)
# Una línea: los términos de la Fórmula (21) como barras:
imp.plot(language="es")
plt.show()
# A mano, desde los campos del resultado:
labels = ["Ln,w,eq", "-dLw", "+K", "L'n,w"]
values = [imp.ln_w_eq, -imp.delta_l_w, imp.k_correction, imp.l_prime_n_w]
fig, ax = plt.subplots()
ax.bar(np.arange(4), values)
ax.axhline(0.0, color="k", lw=0.8)
ax.set_xticks(np.arange(4), labels)
ax.set_ylabel("Nivel / corrección [dB]")
ax.set_title(f"L'n,w = {imp.l_prime_n_w:.1f} dB (EN 12354-2 Anexo E.3)")
plt.show()

La contrapartida aérea de ese cierre es la Fórmula (5b), , expuesta como standardized_level_difference: cierra el ejemplo del Anexo H.3 (standardized_level_difference(52.2, 50.0, 11.5) da 53,6 dB, la cadena impresa con 53,8 dB, y ambas redondean a dB).

Las tres guías de aislamiento cierran un bucle: el laboratorio mide y elemento a elemento y unión a unión, este modelo los ensambla en un predicho, y la medición en campo comprueba el resultado construido. Cuando el valor medido queda muy por debajo de la predicción, busca un defecto de ejecución en la vía dominante que informa el modelo: un puente rígido a través de una unión resiliente, un trasdosado ausente, una fuga alrededor del elemento separador.

Parámetros de junction_vibration_reduction() / flanking_element()

Sección titulada «Parámetros de junction_vibration_reduction() / flanking_element()»
ParámetroTipoUnidadesRango / valor por defectoNotas
junction_typestr'rigid_cross' / 'rigid_t' / 'flexible_t' / 'lightweight_facade' / 'lightweight_double_homogeneous' / 'lightweight_double_coupled' / 'corner' / 'thickness_change'Geometría de la unión (Anexo E.3-E.9)
pathstr'through' (K13) / 'corner' (K12 = K23) / 'double_leaf' (K24)Rama del camino
mass_ratiofloat> 0m'⊥,i / m'i (Fórmula E.2)
frequencyfloatHzpor defecto 500flexible_t y las uniones de doble hoja E.7/E.8 dependen de la frecuencia
r_flanking / r_separatingfloatdBÍndices ponderados del elemento de flanco / separador
k_ff / k_fd / k_dffloatdBKij de la unión para los tres caminos
separating_areafloat> 0Superficie del elemento separador Ss
coupling_lengthfloatm> 0Longitud de acoplamiento de la unión lf
delta_r_ff / delta_r_fd / delta_r_dffloatdBpor defecto 0Mejoras del trasdosado por camino
flanking_areafloatpor defecto NoneÁrea del elemento de flanco SF; activa la saturación automática a Kij,min (Cláusula 4.4.2 / Fórmula 29)
ParámetroTipoUnidadesRango / defectoNotas
labelstrNombre visible del camino
kindstr'Ff' / 'Df' / 'Fd'Rama de flanco del camino
r_source / r_receivefloatdBÍndices ponderados de los elementos lado emisor / lado receptor
k_ijfloatdBÍndice de reducción de vibraciones de la unión para este camino
separating_areafloat> 0Área del elemento separador Ss
coupling_lengthfloatm> 0Longitud de acoplamiento lf
delta_rfloatdBdef.: 0Mejora por revestimiento en este camino
kij_minfloatdBdef.: NoneSi se da, k_ij se acota inferiormente a este mínimo de la Fórmula (29)

predicted_airborne_insulation() devuelve un AirbornePredictionResult (r_prime_w, r_direct_w, paths de PathContribution, dominant); predicted_impact_insulation() un ImpactPredictionResult (l_prime_n_w, ln_w_eq, delta_l_w, k_correction). El modelo simplificado lleva una desviación típica declarada de unos 2 dB (Cláusula 5).

Ambos resultados de predicción generan un informe de predicción de una página mediante el método report(path). A diferencia de las fichas de medición, el resultado informado es una estimación del comportamiento in situ a partir de los datos de laboratorio de los elementos más la transmisión por flancos de las uniones; la hoja lo indica de forma explícita y se rotula como predicción, nunca como medición. AirbornePredictionResult.report() genera la ficha del índice de reducción acústica aparente previsto (la tabla de vías de transmisión junto al gráfico de fracción de energía por vía, con R'w en un recuadro); ImpactPredictionResult.report() genera la ficha del nivel de impactos aparente previsto (la tabla de términos de la fórmula (21) junto al gráfico de términos, con L'n,w en un recuadro). Cada una nombra la EN/ISO 12354-1/-2 y la parte de índice ISO 717 en su línea de base, imprime la desviación típica del modelo (~2 dB) y, cuando se da un requirement, añade un veredicto CUMPLE/NO CUMPLE (el índice aéreo cumple igualando o superándolo, y el de impactos igualándolo o quedando por debajo).

verbose=True añade a la tabla aérea la fracción de energía transmitida de cada vía. Los metadatos, language="es" y el extra phonometry[report] se comportan igual que en las fichas de medición; los campos aplicables de ReportMetadata son el elemento separador (specimen), la superficie del separador o el suelo (area), la geometría de los recintos (source_volume, receiving_volume), la masa del suelo desnudo (mass_per_area, impactos), el fabricante (manufacturer), el recinto o la instalación de ensayo (test_room), la identidad del calculista/laboratorio (client, laboratory, operator, report_id, test_date) y un resumen en texto libre de la construcción de flancos y las hipótesis del modelo (notes).

from phonometry import building, ReportMetadata
# Predicción aérea (EN 12354-1 Anexo H.3): un tabique separador Rs,w = 57 dB
# flanqueado por cuatro elementos -> R'w = 52 dB.
paths = []
for label, rw, kff, kfd, lf in [
("suelo", 49.0, 12.4, 8.9, 4.5), ("techo", 46.0, 14.4, 9.2, 4.5),
("fachada", 42.0, 12.6, 6.7, 2.55), ("tabique interior", 33.0, 33.5, 15.7, 2.55),
]:
ff, df, fd = building.flanking_element(
label=label, r_flanking=rw, r_separating=57.0,
k_ff=kff, k_fd=kfd, k_df=kfd, separating_area=11.5, coupling_length=lf)
paths += [ff, df, fd]
air = building.predicted_airborne_insulation(r_direct=57.0, flanking_paths=paths)
air.report("Rpw_prediccion.pdf", language="es", metadata=ReportMetadata(
specimen="Tabique separador, Rs,w = 57 dB", area=11.5,
source_volume=53.0, receiving_volume=50.0, requirement=50.0,
notes="Flancos: suelo/techo/fachada/tabique interior.")) # R'w = 52 dB
air.report("Rpw_prediccion_vias.pdf", verbose=True, language="es")
# Predicción de impactos (EN 12354-2 Anexo E.3): un forjado de hormigón
# (m' = 322 kg/m²) con suelo flotante (ΔLw = 33 dB) -> L'n,w = 45 dB.
ln_eq = building.equivalent_impact_level(322.0)
k = building.impact_flanking_correction(322.0, 145.0)
imp = building.predicted_impact_insulation(ln_w_eq=ln_eq, delta_l_w=33.0, k_correction=k)
imp.report("Lnw_prediccion.pdf", language="es",
metadata=ReportMetadata(mass_per_area=322.0, requirement=53.0)) # L'n,w = 45 dB

Ambas fichas de ejemplo se regeneran con make reports y se mantienen renderizadas en el repositorio; haz clic en cualquier vista previa para abrir el PDF.

Informe de ejemplo de predicción aérea EN 12354-1 (PDF)

Informe de predicción de aislamiento acústico a ruido aéreo entre recintos de una página (EN 12354-1 Anexo H.3): la cabecera de metadatos (elemento separador, superficie, volúmenes de los recintos), la tabla de vías de transmisión (la vía directa y el índice ponderado Rij,w de cada vía de flanco) junto al gráfico de barras de fracción de energía por vía, el R'w previsto = 52 dB en un recuadro, el enunciado de predicción con la desviación típica del modelo (~2 dB) y un veredicto CUMPLE frente al requisito de 50 dB.

Descargar el informe (PDF)

Ficha aérea prevista (AirbornePredictionResult.report), R'w.
Informe de ejemplo de predicción de impactos EN 12354-2 (PDF)

Informe de predicción de aislamiento acústico a ruido de impactos de un suelo de una página (EN 12354-2 Anexo E.3): la cabecera de metadatos, la tabla de términos de la fórmula (21) (el nivel equivalente del suelo desnudo Ln,w,eq, la mejora del revestimiento ΔLw y la corrección por flancos K) junto al gráfico de barras de términos, el L'n,w previsto = 45 dB en un recuadro, el enunciado de predicción y un veredicto CUMPLE frente al requisito de 53 dB (un nivel de impactos menor es mejor).

Descargar el informe (PDF)

Ficha de impactos prevista (ImpactPredictionResult.report), L'n,w.

Aislamiento de fachada y potencia radiada (EN 12354-3 / -4)

Sección titulada «Aislamiento de fachada y potencia radiada (EN 12354-3 / -4)»

Las partes 3 y 4 predicen los dos sentidos a través del cerramiento del edificio, ambos a partir de la misma suma energética de los factores de transmisión de los elementos , ponderados por área según (un elemento pequeño o un paso de aire entra a través de su diferencia de nivel normalizada del elemento con el área de referencia ):

Parte 3: exterior → interior. A partir de (Fórmula 10) se derivan los índices referidos a altavoz y a tráfico y , y la salida principal, la diferencia de nivel estandarizada a 2 m (Fórmula 13)

con el término de forma de la fachada (Anexo C; 0 dB para una fachada plana reflectante; facade_shape_level_difference lo consulta en la tabla de la Figura C.2 para galerías, balcones y terrazas, interpolando sobre la absorción del intradós ). Los índices de un solo número reutilizan EN ISO 717-1 (weighted_rating).

Índices de reducción acústica parciales por elemento y la reducción aparente de la fachada R' y la diferencia de nivel estandarizada D2m,nT resultantes para el ejemplo resuelto del Anexo F de EN 12354-3, con la entrada de aire limitando las bandas bajasÍndices de reducción acústica parciales por elemento y la reducción aparente de la fachada R' y la diferencia de nivel estandarizada D2m,nT resultantes para el ejemplo resuelto del Anexo F de EN 12354-3, con la entrada de aire limitando las bandas bajas
from phonometry import building
# EN 12354-3 Anexo F: una fachada de 11.3 m² (V = 50 m³, plana con ΔLfs = 0) de una
# doble hoja, una ventana, un pequeño tragaluz y una entrada de aire con
# tratamiento acústico (un elemento Dn,e).
elements = [
building.FacadeElement("wall", area=6.0, r=[41, 46, 52, 58, 64]), # octava 125-2000
building.FacadeElement("window", area=4.5, r=[23, 22, 30, 36, 37]),
building.FacadeElement("skylight", area=0.5, r=[24, 27, 30, 33, 30]),
building.FacadeElement("air inlet", dn_e=[28, 23, 25, 38, 44]), # elemento pequeño
]
fac = building.facade_sound_reduction(elements, area=11.3, volume=50.0,
frequencies=[125, 250, 500, 1000, 2000], bands="octave")
print(fac.r_tr_s_w, fac.c_tr, fac.d_2m_nt_w) # 31 -3 33 (R'tr,s,w / Ctr / D2m,nT,w)
fac.plot() # índices parciales por elemento con R' y D2m,nT superpuestos (requiere matplotlib)
Ver el código de esta figura
import numpy as np
import matplotlib.pyplot as plt
from phonometry import building
# EN 12354-3 Anexo F: una fachada de 11.3 m² (V = 50 m³, plana con ΔLfs = 0) de una
# doble hoja, una ventana, un pequeño tragaluz y una entrada de aire con
# tratamiento acústico (un elemento Dn,e).
elements = [
building.FacadeElement("wall", area=6.0, r=[41, 46, 52, 58, 64]), # octava 125-2000
building.FacadeElement("window", area=4.5, r=[23, 22, 30, 36, 37]),
building.FacadeElement("skylight", area=0.5, r=[24, 27, 30, 33, 30]),
building.FacadeElement("air inlet", dn_e=[28, 23, 25, 38, 44]), # elemento pequeño
]
fac = building.facade_sound_reduction(elements, area=11.3, volume=50.0,
frequencies=[125, 250, 500, 1000, 2000], bands="octave")
x = np.arange(5)
fig, ax = plt.subplots(figsize=(9, 5.5))
for name, rp in fac.element_r.items():
ax.plot(x, rp, "--", alpha=0.6, marker=".", label=f"Rp — {name}")
ax.plot(x, fac.r_prime, "k-", lw=2.5, marker="o", label="R′ (fachada)")
ax.plot(x, fac.d_2m_nt, lw=2, marker="s", label="D2m,nT")
ax.set_xticks(x); ax.set_xticklabels([125, 250, 500, 1000, 2000])
ax.set_xlabel("Frecuencia [Hz]"); ax.set_ylabel("Índice / diferencia de nivel [dB]")
ax.set_title("Aislamiento acústico de fachada EN 12354-3 (Anexo F)")
ax.legend(ncol=2); ax.grid(alpha=0.4)
fig.tight_layout(); plt.show()

La predicción de fachada también escribe un informe de predicción de una página mediante un método report(path), con la misma maquetación que las fichas de predicción a ruido aéreo y de impactos. FacadePredictionResult.report() representa la tabla de elementos de la fachada (el índice parcial ponderado Rp,w de cada elemento) junto a la gráfica por elemento / R' / D2m,nT, el número único previsto D2m,nT,w en un recuadro (con R'tr,s,w y Ctr), la declaración de predicción y, cuando se aporta un requirement, un veredicto APTO/NO APTO (la diferencia de niveles cumple si es igual o mayor). verbose=True añade la fracción de energía sonora transmitida por cada elemento, que señala el elemento limitante (aquí la entrada de aire, no la pared). El informe necesita los índices de número único de ISO 717-1, así que construye el resultado sobre las 5 bandas de octava o las 16 de tercio de octava. Los campos aplicables de ReportMetadata describen la situación prevista: specimen (el conjunto de elementos de la fachada), area (la superficie expuesta de la fachada), el volumen del recinto receptor receiving_volume, la situación exterior/de tráfico en test_room, además de los campos de identidad del calculista / laboratorio (client, manufacturer, measurement_standard, laboratory, operator, report_id, test_date), un resumen libre de la forma de la fachada y del modelo en notes y el objetivo D2m,nT,w en requirement. Los metadatos, language="es" y el extra phonometry[report] se comportan como en las fichas de medición.

from phonometry import building, ReportMetadata
# EN 12354-3 Anexo F, fachada -> D2m,nT,w = 33 dB (R'tr,s,w = 31, Ctr = -3).
elements = [
building.FacadeElement("Masonry wall", area=6.0, r=[41, 46, 52, 58, 64]),
building.FacadeElement("Glazing", area=4.5, r=[23, 22, 30, 36, 37]),
building.FacadeElement("Roof light", area=0.5, r=[24, 27, 30, 33, 30]),
building.FacadeElement("Air inlet", dn_e=[28, 23, 25, 38, 44]),
]
fac = building.facade_sound_reduction(elements, area=11.3, volume=50.0,
frequencies=[125, 250, 500, 1000, 2000], bands="octave")
fac.report("D2mnT_prediction.pdf", metadata=ReportMetadata(
specimen="Masonry wall + window + roof light + air inlet", area=11.3,
receiving_volume=50.0, requirement=30.0,
notes="Fachada plana, ΔLfs = 0 dB (Anexo C).")) # D2m,nT,w = 33 dB
Informe de ejemplo de fachada prevista EN 12354-3 (PDF)

Informe de una página de aislamiento acústico de fachada previsto (EN 12354-3 Anexo F): la cabecera de metadatos (conjunto de elementos de la fachada, superficie expuesta, volumen del recinto receptor, situación de tráfico), la tabla de elementos de la fachada (el índice parcial ponderado Rp,w de cada elemento) junto a la gráfica por elemento y R' / D2m,nT, el número único previsto D2m,nT,w = 33 dB en un recuadro (con R'tr,s,w = 31 y Ctr = -3), la declaración de predicción indicando la desviación típica del modelo de unos 2 dB y un veredicto APTO frente al requisito de 30 dB.

Descargar el informe (PDF)

Ficha de fachada prevista (FacadePredictionResult.report), D2m,nT,w.

Parte 4: interior → exterior. El nivel de potencia acústica radiada por un segmento (Fórmula 2) es con m² y el término de difusividad del campo interior (Anexo B; −6 dB difuso ideal, −5 dB industrial medio). Los huecos son elementos cuya «R» es la pérdida por inserción del silenciador (un hueco desnudo es 0 dB). El nivel exterior se obtiene de la atenuación simplificada del Anexo E de un lado radiante finito, .

from phonometry import building
# EN 12354-4 Anexo G, lado 1: un segmento de pared de hormigón de 10×20 m con una
# puerta industrial de 6×4 m, nivel interior Lp,in, Cd = -5 dB. El tope de 40 dB
# sobre R' es una nota al pie del ejemplo del Anexo G (fugas en obra), no parte
# de la Fórmula (2)/(3): pásalo explícitamente para reproducir el Anexo G;
# por defecto no se aplica ningún tope.
bands = [63, 125, 250, 500, 1000, 2000, 4000, 8000]
seg = building.radiated_sound_power(
[building.FacadeElement("wall", area=176.0, r=[32, 36, 36, 33, 39, 49, 57, 63]),
building.FacadeElement("door", area=24.0, r=[21, 23, 28, 30, 30, 30, 30, 30])],
lp_in=[70, 74, 76, 72, 70, 67, 62, 57], area=200.0, c_d=-5.0,
r_prime_cap=40.0, octave_bands=bands)
print(round(seg.l_w[0], 1), round(seg.l_w[1], 1)) # 59.8 61.2 (LW a 63/125 Hz)
# Nivel exterior a 5 m frente al centro del lado de 60×10 m (LWA = 62.9 dB(A)).
a_tot = building.outdoor_attenuation(width=60.0, height=10.0, distance=5.0)
print(round(a_tot, 1), round(building.outdoor_level(62.9, a_tot), 1)) # 26.3 36.6
seg.plot() # LW radiada por octava con la línea de LWA ponderada A (requiere matplotlib)
Nivel de potencia acústica radiada por banda de octava del segmento de muro con puerta industrial del Anexo G de EN 12354-4, con el valor único ponderado A dibujado como línea discontinua sobre las barrasNivel de potencia acústica radiada por banda de octava del segmento de muro con puerta industrial del Anexo G de EN 12354-4, con el valor único ponderado A dibujado como línea discontinua sobre las barras

El segmento del lado 1 del Anexo G: el muro domina la superficie pero la más débil de la puerta gobierna la potencia radiada, así que el espectro de octavas se mantiene plano donde el muro solo caería. La línea discontinua es el valor único ponderado A formado a partir de las octavas.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import building
# EN 12354-4 Anexo G, lado 1: un segmento de muro de hormigón de 10×20 m con
# una puerta industrial de 6×4 m, nivel interior Lp,in y Cd = -5 dB.
bands = [63, 125, 250, 500, 1000, 2000, 4000, 8000]
seg = building.radiated_sound_power(
[building.FacadeElement("muro", area=176.0, r=[32, 36, 36, 33, 39, 49, 57, 63]),
building.FacadeElement("puerta", area=24.0, r=[21, 23, 28, 30, 30, 30, 30, 30])],
lp_in=[70, 74, 76, 72, 70, 67, 62, 57], area=200.0, c_d=-5.0,
r_prime_cap=40.0, octave_bands=bands)
# Una línea: LW por octava con la línea de LWA ponderada A:
seg.plot(language="es")
plt.show()
# A mano, desde los campos del resultado:
x = np.arange(len(bands))
fig, ax = plt.subplots()
ax.bar(x, seg.l_w, label="LW radiada por octava")
ax.axhline(seg.l_w_dba, ls="--", color="tab:red",
label=f"LWA = {seg.l_w_dba:.1f} dB(A)")
ax.set_xticks(x, [str(b) for b in bands])
ax.set_xlabel("Frecuencia [Hz]")
ax.set_ylabel("Nivel de potencia acústica radiada [dB re 1 pW]")
ax.set_title("Potencia acústica radiada EN 12354-4 (Anexo G)")
ax.legend()
plt.show()

Nota sobre los ejemplos resueltos. Los ejemplos resueltos de 2000 arrastran pequeñas inconsistencias internas de redondeo en las bandas de octava altas (el impreso de la Parte 3 no concuerda con sus propios índices parciales por elemento a 1 k/2 k; las filas de de la Parte 4 por encima de 500 Hz no concuerdan con sus entradas de la Tabla G.2). La implementación es fiel a las fórmulas: reproduce exactamente las bandas bajas, todos los índices de un solo número y toda la propagación del Anexo E.

Parámetros de FacadeElement / facade_sound_reduction() / radiated_sound_power()

Sección titulada «Parámetros de FacadeElement / facade_sound_reduction() / radiated_sound_power()»
ParámetroTipoUnidadesRango / valor por defectoNotas
FacadeElement.areafloat> 0 para r / insertion_lossÁrea del elemento (se ignora para dn_e)
FacadeElement.r / dn_e / insertion_lossfloat o secuenciadBdar exactamente unoElemento de área / elemento pequeño / pérdida por inserción del hueco
facade_sound_reduction(area)float> 0Área total de la fachada
facade_sound_reduction(volume)float> 0Volumen de la sala receptora (Fórmula 13)
facade_sound_reduction(delta_l_fs)floatdBpor defecto 0Término de forma de la fachada (Anexo C; consúltalo con facade_shape_level_difference)
radiated_sound_power(lp_in)float o secuenciadBNivel interior por banda
radiated_sound_power(c_d)floatdBpor defecto -6Término de difusividad (Anexo B)
radiated_sound_power(r_prime_cap)floatdBpor defecto None (sin tope)Tope de campo opcional sobre , nota al pie del ejemplo del Anexo G (usa 40 dB), no parte de la Fórmula (2)/(3)
radiated_sound_power(octave_bands)sec. de intHzpor defecto NoneCentros de octava que casan con las bandas; habilita el ponderado A
facade_sound_reduction(frequencies)secuenciaHzpor defecto None; longitud = nº de bandasCentros de banda que se conservan en el resultado para las gráficas
outdoor_attenuation(width, height, distance)floatm> 0Lado radiante finito y distancia de recepción (Anexo E)
outdoor_level(l_w, attenuation)float o sec.dBcompatibles por difusión exterior de uno o varios lados (Fórmula E.1)

facade_sound_reduction() devuelve un FacadePredictionResult (r_prime, r_45, r_tr_s, d_2m_nt, element_r, y los números únicos r_tr_s_w / d_2m_nt_w / c_tr); radiated_sound_power() un RadiatedPowerResult (l_w, r_prime, l_w_dba). Ambos exponen .plot().