---
title: "Predicción del aislamiento acústico (EN 12354)"
description: "Predicción EN 12354 del aislamiento acústico in situ a partir de datos de elemento: transmisión por flancos aérea y de impactos (EN 12354-1/2), aislamiento de fachadas (EN 12354-3) y radiación al exterior (EN 12354-4)."
references:
  - type: book
    authors: ["Hopkins, C."]
    year: 2007
    title: "Sound insulation"
    publisher: "Butterworth-Heinemann"
    doi: "10.4324/9780080550473"
    note: "El tratamiento completo de la transmisión por flancos y del marco de predicción EN 12354, del índice de reducción de vibraciones a su base estadística. ISBN 978-0-7506-6526-1."
  - type: standard
    organization: "European Committee for Standardization"
    year: 2000
    title: "Building acoustics — Estimation of acoustic performance of buildings from the performance of elements — Part 1: Airborne sound insulation between rooms"
    designation: "EN 12354-1:2000"
    url: "https://knowledge.bsigroup.com/products/building-acoustics-estimation-of-acoustic-performance-in-buildings-from-the-performance-of-elements-airborne-sound-insulation-between-rooms"
    note: "La predicción simplificada de transmisión por flancos aérea (uniones del Anexo E, ejemplo resuelto H.3). La ficha de catálogo enlazada es la página de BSI Knowledge de BS EN 12354-1:2000."
  - type: standard
    organization: "European Committee for Standardization"
    year: 2000
    title: "Building acoustics — Estimation of acoustic performance of buildings from the performance of elements — Part 2: Impact sound insulation between rooms"
    designation: "EN 12354-2:2000"
    url: "https://knowledge.bsigroup.com/products/building-acoustics-estimation-of-acoustic-performance-in-buildings-from-the-performance-of-elements-impact-sound-insulation-between-rooms"
    note: "La predicción simplificada de transmisión por flancos de impactos (ejemplo resuelto E.3). La ficha de catálogo enlazada es la página de BSI Knowledge de BS EN 12354-2:2000."
  - type: standard
    organization: "European Committee for Standardization"
    year: 2000
    title: "Building acoustics — Estimation of acoustic performance of buildings from the performance of elements — Part 3: Airborne sound insulation against outdoor sound"
    designation: "EN 12354-3:2000"
    url: "https://knowledge.bsigroup.com/products/building-acoustics-estimation-of-acoustic-performance-in-buildings-from-the-performance-of-elements-airborne-sound-insulation-against-outdoor-sound"
    note: "La predicción de aislamiento acústico de fachada (ejemplo resuelto del Anexo F). La ficha de catálogo enlazada es la página de BSI Knowledge de BS EN 12354-3:2000."
  - type: standard
    organization: "European Committee for Standardization"
    year: 2000
    title: "Building acoustics — Estimation of acoustic performance of buildings from the performance of elements — Part 4: Transmission of indoor sound to the outside"
    designation: "EN 12354-4:2000"
    url: "https://knowledge.bsigroup.com/products/building-acoustics-estimation-of-acoustic-performance-in-buildings-from-the-performance-of-elements-transmission-of-indoor-sound-to-the-outside"
    note: "La predicción de radiación al exterior (ejemplo resuelto del Anexo G). La ficha de catálogo enlazada es la página de BSI Knowledge de BS EN 12354-4:2000."
---

import Video from '../../../../components/Video.astro';
import ThemeImage from '../../../../components/ThemeImage.astro';
import ReportPreview from '../../../../components/ReportPreview.astro';

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](/phonometry/es/guides/insulation-field/);
los datos de laboratorio vienen de
[Medición del aislamiento en laboratorio](/phonometry/es/guides/insulation-lab/).

## Predicción del comportamiento (EN 12354)

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 $R$ de laboratorio y el $R'$ 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.

<ThemeImage src="https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/diagram_flanking_paths_es.svg" alt="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 separador" width="92%" loading="eager" />

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

<Video
  name="anim_flanking_paths"
  width={2400}
  height={1350}
  title="Pulsos de energía por los caminos directo y de flancos"
  description="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."
/>

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

$$
R'_w = -10 \log_{10}\Big[ 10^{-R_{Dd,w}/10}
      + \sum 10^{-R_{Ff,w}/10} + \sum 10^{-R_{Df,w}/10}
      + \sum 10^{-R_{Fd,w}/10} \Big],
$$

con el camino directo $R_{Dd,w} = R_{s,w} + \Delta R_{Dd,w}$ (Fórmula 27) y cada
camino de flanco (Fórmula 28a)

$$
R_{ij,w} = \tfrac{R_{i,w} + R_{j,w}}{2} + \Delta R_{ij,w} + K_{ij}
         + 10 \log_{10}\frac{S_s}{l_0\ l_f},
$$

donde $l_0 = 1$ m es la longitud de acoplamiento de referencia, $l_f$ la longitud
de acoplamiento de la unión y $K_{ij}$ el **índice de reducción de vibraciones** de
la unión (Anexo E, empírico en la relación de masas
$M = \log_{10}(m'_{\perp,i}/m'_i)$).

<ThemeImage src="https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/prediction_flanking_demo_es.svg" alt="Í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" width="80%" />

```python
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)
```

<details>
<summary>Ver el código de esta figura</summary>

```python
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()
```

</details>

Cada camino de flanco añadido rebaja estrictamente $R'_w$ por debajo del directo
$R_{Dd,w} = 57$; `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 $K_{ij} \ge K_{ij,\min}$ 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 $K_{ij}$ por debajo del límite
hasta el mínimo:

```python
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:
$L'_{n,w} = L_{n,w,eq} - \Delta L_w + K$, con el nivel equivalente del suelo
desnudo $L_{n,w,eq} = 164 - 35 \log_{10}(m'/m'_0)$ (Anexo B), la mejora del
revestimiento $\Delta L_w$ (ISO 717-2) y la corrección por flancos $K$ de la
Tabla 1.

```python
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
```

La contrapartida aérea de ese cierre es la Fórmula (5b),
$D_{nT} = R' + 10\lg(0.32\,V/S_s)$, 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 $V/(3S)$ 53.8 dB, y ambas redondean a $D_{nT,w} = 54$ dB).

Las tres guías de aislamiento cierran un bucle: el
[laboratorio](/phonometry/es/guides/insulation-lab/) mide $R$ y $K_{ij}$
elemento a elemento y unión a unión, este modelo los ensambla en un $R'_w$
predicho, y la
[medición en campo](/phonometry/es/guides/insulation-field/) 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()`

| Parámetro | Tipo | Unidades | Rango / valor por defecto | Notas |
| :--- | :--- | :--- | :--- | :--- |
| `junction_type` | str | — | `'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) |
| `path` | str | — | `'through'` (K13) / `'corner'` (K12 = K23) / `'double_leaf'` (K24) | Rama del camino |
| `mass_ratio` | float | — | > 0 | `m'⊥,i / m'i` (Fórmula E.2) |
| `frequency` | float | Hz | por defecto `500` | `flexible_t` y las uniones de doble hoja E.7/E.8 dependen de la frecuencia |
| `r_flanking` / `r_separating` | float | dB | — | Índices ponderados del elemento de flanco / separador |
| `k_ff` / `k_fd` / `k_df` | float | dB | — | `Kij` de la unión para los tres caminos |
| `separating_area` | float | m² | > 0 | Superficie del elemento separador `Ss` |
| `coupling_length` | float | m | > 0 | Longitud de acoplamiento de la unión `lf` |
| `delta_r_ff` / `delta_r_fd` / `delta_r_df` | float | dB | por defecto `0` | Mejoras del trasdosado por camino |
| `flanking_area` | float | m² | por 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ámetros de `flanking_path()`

| Parámetro | Tipo | Unidades | Rango / defecto | Notas |
| :--- | :--- | :--- | :--- | :--- |
| `label` | str | — | — | Nombre visible del camino |
| `kind` | str | — | `'Ff'` / `'Df'` / `'Fd'` | Rama de flanco del camino |
| `r_source` / `r_receive` | float | dB | — | Índices ponderados de los elementos lado emisor / lado receptor |
| `k_ij` | float | dB | — | Índice de reducción de vibraciones de la unión para este camino |
| `separating_area` | float | m² | > 0 | Área del elemento separador `Ss` |
| `coupling_length` | float | m | > 0 | Longitud de acoplamiento `lf` |
| `delta_r` | float | dB | def.: `0` | Mejora por revestimiento en este camino |
| `kij_min` | float | dB | def.: `None` | Si 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).

### Informe de predicción EN 12354 (`.report()`)

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`).

```python
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.

<ReportPreview
	name="iso12354_airborne_prediction_example"
	title="Informe de ejemplo de predicción aérea EN 12354-1 (PDF)"
	description="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."
	caption="Ficha aérea prevista (AirbornePredictionResult.report), R'w."
/>

<ReportPreview
	name="iso12354_impact_prediction_example"
	title="Informe de ejemplo de predicción de impactos EN 12354-2 (PDF)"
	description="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)."
	caption="Ficha de impactos prevista (ImpactPredictionResult.report), L'n,w."
/>

### 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 $\tau = 10^{-R/10}$, ponderados por área según $S_i/S$ (un elemento
pequeño o un paso de aire entra a través de su diferencia de nivel normalizada del
elemento $D_{n,e}$ con el área de referencia $A_0 = 10\ \text{m}^2$):

$$
R' = -10 \log_{10}\!\Big( \sum_i \tfrac{S_i}{S}\,10^{-R_i/10}
                          + \sum_k \tfrac{A_0}{S}\,10^{-D_{n,e,k}/10} \Big).
$$

**Parte 3: exterior → interior.** A partir de $R'$ (Fórmula 10) se derivan los
índices referidos a altavoz y a tráfico $R_{45} = R'+1$ y $R_{tr,s} = R'$, y la
salida principal, la diferencia de nivel estandarizada a 2 m (Fórmula 13)

$$
D_{2m,nT} = R' + \Delta L_{fs} + 10 \log_{10}\frac{V}{6\,T_0\,S}, \qquad T_0 = 0{,}5\ \text{s},
$$

con el término de forma de la fachada $\Delta L_{fs}$ (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 $\alpha_w$). Los índices de un solo número reutilizan
EN ISO 717-1 (`weighted_rating`).

<ThemeImage src="https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/facade_prediction_es.svg" alt="Í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" width="80%" />

```python
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)
```

<details>
<summary>Ver el código de esta figura</summary>

```python
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()
```

</details>

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.

```python
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
```

<ReportPreview
	name="iso12354_facade_prediction_example"
	title="Informe de ejemplo de fachada prevista EN 12354-3 (PDF)"
	description="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."
	caption="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 $L_W = L_{p,in} + C_d - R' + 10 \log_{10}(S/S_0)$ con
$S_0 = 1$ m² y el término de difusividad del campo interior $C_d$ (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 $A_{tot}$ del Anexo E de un lado
radiante finito, $L_p = L_W - A_{tot}$.

```python
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
```

> **Nota sobre los ejemplos resueltos.** Los ejemplos resueltos de 2000 arrastran
> pequeñas inconsistencias internas de redondeo en las bandas de octava altas (el
> $R'$ impreso de la Parte 3 no concuerda con sus propios índices parciales por
> elemento a 1 k/2 k; las filas de $R'$ 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()`

| Parámetro | Tipo | Unidades | Rango / valor por defecto | Notas |
| :--- | :--- | :--- | :--- | :--- |
| `FacadeElement.area` | float | m² | > 0 para `r` / `insertion_loss` | Área del elemento $S_i$ (se ignora para `dn_e`) |
| `FacadeElement.r` / `dn_e` / `insertion_loss` | float o secuencia | dB | dar exactamente uno | Elemento de área $R_i$ / elemento pequeño $D_{n,e}$ / pérdida por inserción del hueco |
| `facade_sound_reduction(area)` | float | m² | > 0 | Área total de la fachada $S$ |
| `facade_sound_reduction(volume)` | float | m³ | > 0 | Volumen de la sala receptora $V$ (Fórmula 13) |
| `facade_sound_reduction(delta_l_fs)` | float | dB | por defecto `0` | Término de forma de la fachada $\Delta L_{fs}$ (Anexo C; consúltalo con `facade_shape_level_difference`) |
| `radiated_sound_power(lp_in)` | float o secuencia | dB | — | Nivel interior $L_{p,in}$ por banda |
| `radiated_sound_power(c_d)` | float | dB | por defecto `-6` | Término de difusividad $C_d$ (Anexo B) |
| `radiated_sound_power(r_prime_cap)` | float | dB | por defecto `None` (sin tope) | Tope de campo opcional sobre $R'$, 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 int | Hz | por defecto `None` | Centros de octava que casan con las bandas; habilita el $L_{WA}$ ponderado A |
| `facade_sound_reduction(frequencies)` | secuencia | Hz | por defecto `None`; longitud = nº de bandas | Centros de banda que se conservan en el resultado para las gráficas |
| `outdoor_attenuation(width, height, distance)` | float | m | > 0 | Lado radiante finito y distancia de recepción (Anexo E) |
| `outdoor_level(l_w, attenuation)` | float o sec. | dB | compatibles por difusión | $L_p$ 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()`.

## Véase también

- [Medición del aislamiento en campo e índices](/phonometry/es/guides/insulation-field/):
  las magnitudes in situ medidas con las que se comprueba la predicción.
- [Medición del aislamiento en laboratorio](/phonometry/es/guides/insulation-lab/):
  los índices ISO 10140 y los datos de unión ISO 10848 que consume el modelo.
- [Absorción sonora en recintos (EN 12354-6)](/phonometry/es/guides/enclosed-space-absorption/):
  el miembro de absorción de la misma familia EN 12354.
- [Rigidez dinámica de materiales resilientes (EN 29052-1)](/phonometry/es/guides/dynamic-stiffness/):
  la entrada s' del término de suelo flotante de EN 12354-2.
- Referencia de la API: [`building.building_prediction`](/phonometry/es/reference/api/building/building-prediction/) y [`building.facade_prediction`](/phonometry/es/reference/api/building/facade-prediction/).
