<!-- canonical: https://jmrplens.github.io/phonometry/es/buildings/design/insulation-prediction/ -->
Source: https://jmrplens.github.io/phonometry/es/buildings/design/insulation-prediction/

Un índice de laboratorio describe un elemento aislado; un edificio también
transmite sonido por todas las trayectorias por flancos. Esta página cubre la
predicción EN 12354 del comportamiento in situ entre recintos a partir de datos
de elemento de laboratorio: el modelo aéreo de EN 12354-1 con sus índices de
reducción vibratoria de unión, el modelo de impactos de EN 12354-2 y las
fichas de predicción de ambos. Las partes tercera y cuarta de la misma
familia, que cruzan el cerramiento del edificio en lugar de un tabique
interior, están en
[Aislamiento acústico de
fachadas](/phonometry/es/buildings/insulation/facade-insulation/).
Las magnitudes medidas con las que se contrasta el modelo viven en
[Medición del aislamiento en campo (ISO 16283)](/phonometry/es/buildings/insulation/insulation-field/);
los datos de entrada de laboratorio vienen de
[Medición del aislamiento en
laboratorio](/phonometry/es/buildings/insulation/insulation-lab/).

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

Construye las tres trayectorias por flancos de cada unión con
`building.flanking_element()` y combínalas 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 $R'_\mathrm{w}$ = 52 dB, y nombra la trayectoria dominante.
El aislamiento a impactos pasa por `predicted_impact_insulation()`.

## 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 el recinto receptor. 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.

Cada unión entre un elemento de flanco y el elemento separador lleva tres
trayectorias, $Ff$ (flanco→flanco), $Df$ (directo→flanco) y $Fd$ (flanco→directo),
junto a la única trayectoria directa $Dd$.

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

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

con la trayectoria directa $R_\mathrm{Dd,w} = R_\mathrm{s,w} + \Delta R_\mathrm{Dd,w}$ (Fórmula 27) y cada
trayectoria por flancos (Fórmula 28a)

$$
R_{ij,\mathrm{w}} = \tfrac{R_{i,\mathrm{w}} + R_{j,\mathrm{w}}}{2} + \Delta R_{ij,\mathrm{w}} + K_{ij}
         + 10 \log_{10}\frac{S_\mathrm{s}}{l_0\ l_\mathrm{f}},
$$

donde $l_0 = 1$ m es la longitud de acoplamiento de referencia, $l_\mathrm{f}$ la longitud
de acoplamiento de la unión y $K_{ij}$ el **índice de reducción vibratoria** de
la unión.

### Cómo leer $K_{ij}$

$K_{ij}$ es una propiedad de la unión sola, y ese es todo su sentido. Es el
promedio de las dos diferencias de nivel de velocidad medidas a través de la
unión, corregido por la longitud de acoplamiento y por las longitudes de
absorción equivalentes de los dos elementos, así que la misma unión lleva el
mismo $K_{ij}$ se construya en el edificio que se construya — que es lo que
permite que exista un catálogo de tipos de unión. Cuanto mayor, mejor: $K_{ij}$
entra en la Fórmula (28a) con signo más, así que un valor alto es una unión que
no deja pasar la vibración. Los órdenes de magnitud conviene llevarlos en la
cabeza. Una unión rígida en cruz de masas parecidas anda por 8–13 dB y una unión
rígida en T unos 3 dB por debajo (el Anexo E.3.2/E.3.3 da
$K_{13} = 8{,}7 + 17{,}1M + 5{,}7M^2$ y $5{,}7 + 14{,}1M + 5{,}7M^2$); las
uniones en esquina y de cambio de espesor del Anexo E.3.6 bajan a $15M - 3$ dB
(con suelo en $-2$ dB) y $5M^2 - 5$ dB, así que con la relación de masas del
ejemplo resuelto devuelven 0,1 dB y $-4{,}8$ dB — una unión que no esconde nada;
y una unión con capa elástica intermedia o de doble hoja ligera puede pasar de
20 dB (la misma relación de masas por un `flexible_t` da 20,9 dB). Ese extremo
superior es lo que hace casi invisible a la pared interior del ejemplo resuelto
de más abajo: es el elemento más débil de la lista, con $R_\mathrm{w}$ = 33 dB, y sin
embargo los 33,5 dB tabulados para su $K_\mathrm{Ff}$ sacan su trayectoria Ff de la suma
por completo. En este modelo, un elemento malo detrás de una unión buena gana a
un elemento bueno detrás de una unión mala. Para el modelo simplificado, los
valores del Anexo E se leen una sola vez, a 500 Hz, y hacen las veces de una
magnitud que solo es aproximadamente independiente de la frecuencia.

El argumento de masas es donde encallan los lectores. Los ajustes del Anexo E son
cuadráticos en $M = \lg(m'_{\perp,i}/m'_i)$ — el **logaritmo** decimal de la
relación de masas, con $m'_i$ el elemento que lleva la trayectoria y
$m'_{\perp,i}$ el elemento perpendicular de la unión (Fórmula E.3). La biblioteca
toma la **relación de masas en sí** y forma $M$ internamente, así que
`mass_ratio=1.61` significa que el elemento perpendicular pesa 1,61 veces más por
unidad de superficie. Se acepta cualquier número positivo, así que pasar un valor
ya logaritmado devuelve una respuesta verosímil pero equivocada:
`junction_vibration_reduction("rigid_cross", "through", 0.2068)` devuelve
$-0{,}3$ dB donde la respuesta es 12,5 dB. Y como $m'_i$ es el elemento *de la
trayectoria de transmisión*, la misma unión tiene una relación de masas distinta
para $K_{13}$ y para $K_{12}$ — la relación es por trayectoria, no por unión.

Cada dibujo de arriba se corresponde con un par de argumentos
`(junction_type, path)`, y la rama de trayectoria importa tanto como el tipo de
unión: sobre la misma cruz rígida del ejemplo resuelto, `path='through'` da
12,5 dB y `path='corner'`, 8,9 dB.

*Arriba, los índices por trayectoria; abajo, la fracción de energía transmitida.
La trayectoria directa es el mayor contribuyente individual, con el 33 %, y aun
así dos tercios de lo que llega al recinto receptor ha rodeado la pared — que son
los 5 dB entre $R_\mathrm{s,w} = 57$ dB y $R'_\mathrm{w} = 52$ dB. La línea discontinua es el
$R'_\mathrm{w}$ ensamblado, que queda necesariamente por debajo de todas las trayectorias
individuales.*

```python

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 las tres trayectorias por flancos (Ff, Df, Fd) de cada elemento a partir del
# Kij tabulado del Anexo H, luego combina la trayectoria directa 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 trayectoria, de mayor a menor (requiere matplotlib)
```

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

```python

from phonometry import building

# Construye las tres trayectorias por flancos (Ff, Df, Fd) de cada elemento a partir del
# Kij tabulado del Anexo H, luego combina la trayectoria directa 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 trayectoria y fracción de energía transmitida de cada
# trayectoria 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 de la trayectoria [dB]"); ax1.legend()
ax2.bar(labels, frac, color="tab:orange")
ax2.set_ylabel("Fracción de energía [%]"); ax2.set_xlabel("Trayectoria 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 trayectoria por flancos añadida rebaja estrictamente $R'_\mathrm{w}$ por debajo de
la directa
$R_\mathrm{Dd,w} = 57$; `res.paths` expone la fracción de energía transmitida de cada
trayectoria, de modo que la trayectoria dominante queda visible.

**Lee el reparto como un presupuesto, porque ese es el rendimiento práctico de
todo el modelo.** La trayectoria directa es aquí el mayor contribuyente
individual y aun así solo lleva el 33 % de la energía transmitida: dos tercios de
lo que llega ha rodeado la pared. Así que perfeccionar el elemento separador —
hacerlo infinitamente bueno, no solo mejor — elimina como mucho un tercio del
total, que son $-10\lg(1 - 0{,}33) = 1{,}8$ dB. Especificar una partición más
pesada en esta construcción sería dinero tirado; el forjado, el techo y la
fachada llevan el resto, y un detalle de unión o un trasdosado sobre *ellos* es
lo que mueve la respuesta. La regla se generaliza: la mejor mejora alcanzable
arreglando una trayectoria es $-10\lg(1 - \text{su fracción de energía})$ dB, así
que una trayectoria por debajo de un 10 % del total vale como mucho 0,5 dB y no
merece la pena tocarla, mientras que una al 50 % vale 3 dB y una al 80 %, 7 dB.
Ordena las trayectorias, gasta en lo alto de la lista y para cuando la siguiente
esté por debajo de un decibelio.

`flanking_element` es una función de conveniencia que construye de una vez las
tres trayectorias de una unión; el constructor de trayectoria única que hay
detrás, `flanking_path`, construye una trayectoria `Ff`, `Df` o `Fd` cada vez
(Fórmula 28a). El apartado 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 trayectoria a trayectoria; 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.

¿Y por qué hay un límite inferior? $K_{ij}$ está definido respecto de las
longitudes de absorción equivalentes de los dos elementos, así que en elementos
pequeños la propia normalización limita cuánto aislamiento de unión se puede
reclamar: la energía que llega a un elemento pequeño y poco amortiguado no tiene
dónde disiparse salvo de vuelta por la unión por la que vino. El límite sube,
por tanto, conforme los elementos se encogen o la longitud de acoplamiento crece.
En elementos a escala de vivienda suele ser negativo y estar inactivo; una
predicción en la que la saturación *sí* actúa es señal de que se está aplicando
un valor tabulado del Anexo E fuera de la geometría sobre la que se ajustó.

```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 mínimo 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
```

### Dos trasdosados sobre una misma trayectoria no se suman

`delta_r_ff`, `delta_r_fd`, `delta_r_df` y el `delta_r` de `flanking_path` son
cada uno la mejora **combinada** de una trayectoria entera, no la magnitud global
de un trasdosado. Una trayectoria tiene normalmente dos extremos, y los dos
pueden ir trasdosados: un trasdosado de pared en el lado emisor y un techo
suspendido en el lado receptor están los dos sobre la misma trayectoria $Ff$. No
se suman. La Fórmula (22) de ISO 12354-1:2017 para la trayectoria directa y la
Fórmula (23) para cada trayectoria por flancos dan las dos

$$
\Delta R_{ij,\mathrm{w}} = \Delta R_{i,\mathrm{w}} + \frac{\Delta R_{j,\mathrm{w}}}{2}
\quad\text{o}\quad
\Delta R_{j,\mathrm{w}} + \frac{\Delta R_{i,\mathrm{w}}}{2}\ \text{dB},
$$

con la regla que decide cuál de las dos: **se toma la mitad del valor del
trasdosado de valor menor; ahora bien, si los dos trasdosados tienen valor
negativo, se toma la mitad del valor del trasdosado de valor mayor.** Así que dos
trasdosados de +12 dB y +6 dB dan 12 + 3 = 15 dB, no 18; y dos de $-4$ dB y
$-9$ dB dan $-9 - 2 = -11$ dB, porque con los dos negativos el que se parte por la
mitad es el *menos* negativo. La regla de signos invierte cuál de los dos se
parte por la mitad, y es la parte en la que sigue equivocándose un lector atento.

La física que hay detrás de esa mitad es que dos trasdosados en serie sobre la
misma trayectoria vibratoria no son independientes: el segundo actúa sobre un
campo que el primero ya ha reducido, así que su magnitud global completa — medida
sobre un elemento desnudo — no está disponible por segunda vez. El apartado 4.3.3
de ISO 12354-2 lleva la misma regla allí donde coexisten un revestimiento de
suelo y un trasdosado del lado receptor. La trayectoria directa toma su propio
$\Delta R_\mathrm{Dd,w}$ combinado a través de `delta_r_direct`.

La contrapartida a impactos (EN 12354-2, Fórmula 21) es una resta directa:
$L'_\mathrm{n,w} = L_\mathrm{n,w,eq} - \Delta L_\mathrm{w} + K$, con el nivel equivalente del suelo
desnudo $L_\mathrm{n,w,eq} = 164 - 35 \log_{10}(m'/m'_0)$ (Anexo B), la mejora del
revestimiento $\Delta L_\mathrm{w}$ (ISO 717-2) y la corrección por flancos $K$ de la
Tabla 1.

**Comprueba qué edición cita tu reglamento.** El modelo anterior es el de
EN 12354-2:2000, que condensa toda la transmisión por flancos en la única
corrección tabulada $K$ que se lee a partir de la masa del elemento separador y
de la masa media de los flancos. ISO 12354-2:2017 reorganizó ese mismo modelo
simplificado en fórmulas explícitas trayectoria a trayectoria
— $L_\mathrm{n,d,w} = L_\mathrm{n,eq,0,w} - \Delta L_\mathrm{w} - \Delta L_\mathrm{d,w}$ (15) para la trayectoria
directa y, para cada trayectoria por flancos,
$L_{\mathrm{n},ij,\mathrm{w}} = L_\mathrm{n,eq,0,w} - \Delta L_\mathrm{w} + (R_{i,\mathrm{w}} - R_{j,\mathrm{w}})/2 - \Delta R_{j,\mathrm{w}} -
K_{ij} - 10\log_{10}(S_i/l_0 l_{ij})$ (16) —, de modo que **la corrección de
la Tabla 1 no está en el texto vigente en absoluto**, aunque la física de fondo
y la declaración de exactitud no hayan cambiado. La edición de 2017 declara
además un campo de aplicación que el texto de 2000 dejaba implícito
(apartado 4.3.1): el modelo simplificado se restringe a 100 Hz–3150 Hz y, para
construcciones ligeras, a la vía del nivel de impactos normalizado por flancos
medido $L_{\mathrm{nf},ij}$ de la Fórmula (17). La vía por bandas de frecuencia de
[Predicción detallada por bandas](/phonometry/es/buildings/design/detailed-prediction/)
está anclada en las ediciones de 2017 de principio a fin.

**Qué son las dos masas de entrada y dónde se acaba la forma cerrada.** El
$164 - 35\lg(m'/m'_0)$ del Anexo B no es una teoría: es una regresión ajustada a
forjados **pesados homogéneos** medidos entre **100 y 600 kg/m²**, y
`equivalent_impact_level` lanza un `UserWarning` cuando se le llama fuera de esa
franja. Dentro funciona porque el nivel de impactos de una losa masiva desnuda lo
fijan su masa y el factor de pérdidas aproximadamente constante de la
construcción de fábrica. Fuera falla porque un forjado ligero o nervado radia a
través de sus propias resonancias y no como una placa homogénea amortiguada — así
que la forma cerrada no significa nada para un forjado de placa alveolar, de
viguetas y bovedillas o de entramado de madera, tenga la masa que tenga, y es una
extrapolación para una bóveda de 900 kg/m². La $m'$ que pide es la masa del
**forjado estructural desnudo**, sin revestimiento y sin techo; el efecto del
revestimiento es $\Delta L_\mathrm{w}$ y se resta aparte.

La masa de flancos es, otra vez, una magnitud distinta: la **media aritmética
sobre los elementos de flanco homogéneos del recinto receptor que no llevan
ninguna capa adicional**. Una pared de flanco trasdosada queda fuera de la media,
no entra en ella con su masa desnuda. La propia Tabla 1 se aplica al caso de
salas una sobre otra del ejemplo del Anexo E.3, y es una *búsqueda discreta del
valor tabulado más próximo*, no una interpolación: 145 kg/m² y 150 kg/m²
devuelven los dos $K$ = 2 dB, y las masas fuera de 100–900 kg/m² (separador) o de
100–500 kg/m² (flancos) se saturan en el extremo más cercano en lugar de
extrapolarse. Todo junto, un edificio ligero queda fuera de esta vía simplificada
de impactos entera y necesita la vía del nivel de impactos normalizado por
flancos medido que prescribe la edición de 2017.

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

# La búsqueda es discreta: la siguiente masa de flancos tabulada da el mismo K.
print(building.impact_flanking_correction(322.0, 150.0))          # 2, sin cambio

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

*Todo el modelo simplificado de EN 12354-2 es una resta: el forjado masivo
desnudo parte de $L_\mathrm{n,w,eq} = 76{,}2$ dB, el suelo flotante recupera 33 dB
y la corrección de flancos devuelve 2 dB, quedando en $L'_\mathrm{n,w} = 45$ dB.*

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

```python

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

</details>

La contrapartida aérea de ese cierre es la Fórmula (5b),
$D_\mathrm{nT} = R' + 10\log_{10}(0{,}32\,V/S_\mathrm{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_\mathrm{nT,w} = 54$ dB).

Las tres guías de aislamiento cierran un bucle: el
[laboratorio](/phonometry/es/buildings/insulation/insulation-lab/) mide $R$ y $K_{ij}$
elemento a elemento y unión a unión, este modelo los ensambla en un $R'_\mathrm{w}$
predicho, y la
[medición en campo](/phonometry/es/buildings/insulation/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 trayectoria dominante de la 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'` ($K_{13}$) / `'corner'` ($K_{12} = K_{23}$) / `'double_leaf'` ($K_{24}$) | Rama de la trayectoria |
| `mass_ratio` | float | — | > 0 | $m'_{\perp,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 | — | $K_{ij}$ de la unión para las tres trayectorias |
| `separating_area` | float | m² | > 0 | Superficie del elemento separador $S_\mathrm{s}$ |
| `coupling_length` | float | m | > 0 | Longitud de acoplamiento de la unión $l_\mathrm{f}$ |
| `delta_r_ff` / `delta_r_fd` / `delta_r_df` | float | dB | por defecto `0` | Mejora **combinada** del trasdosado de la trayectoria entera, los dos extremos juntos (Fórmula 23) |
| `flanking_area` | float | m² | por defecto `None` | Área del elemento de flanco $S_\mathrm{F}$; activa la saturación automática a $K_{ij,\min}$ (apartado 4.4.2 / Fórmula 29) |

### Parámetros de `flanking_path()`

| Parámetro | Tipo | Unidades | Rango / defecto | Notas |
| :--- | :--- | :--- | :--- | :--- |
| `label` | str | — | — | Nombre visible de la trayectoria |
| `kind` | str | — | `'Ff'` / `'Df'` / `'Fd'` | Rama de flanco de la trayectoria |
| `r_source` / `r_receive` | float | dB | — | Índices ponderados de los elementos lado emisor / lado receptor |
| `k_ij` | float | dB | — | Índice de reducción vibratoria de la unión para esta trayectoria |
| `separating_area` | float | m² | > 0 | Área del elemento separador $S_\mathrm{s}$ |
| `coupling_length` | float | m | > 0 | Longitud de acoplamiento $l_\mathrm{f}$ |
| `delta_r` | float | dB | def.: `0` | Mejora **combinada** del trasdosado de esta trayectoria, los dos extremos juntos (Fórmula 23) |
| `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 (apartado 5).

### Cuándo se aplica el modelo simplificado

El apartado 4.4.4 de ISO 12354-1:2017 fija tres condiciones, y ninguna es de
aritmética.

- **Dependencia parecida con la frecuencia.** El modelo supone elementos cuyo
  índice de reducción acústica tiene una forma a grandes rasgos parecida frente a
  la frecuencia, porque trabaja sobre números únicos y un número único no puede
  llevar dos formas distintas. Una pared de fábrica flanqueada por fábrica es el
  terreno propio del modelo; una partición ligera de doble hoja junto a un
  forjado de hormigón está nombrada explícitamente como el caso en el que la
  exactitud puede ser menor.
- **Geometría a escala de vivienda.** Se aplica sobre todo a viviendas cuyas
  dimensiones de elemento se parezcan a las de una instalación de ensayo.
  Aléjate de eso — una nave, una sala de máquinas, una unión muy larga — y la
  desviación crece.
- **Solo recintos adyacentes.** El apartado 4.2.4 restringe toda la familia a la
  transmisión entre recintos que comparten el elemento separador, y las
  trayectorias secundarias que cruzan más de una unión se desprecian. Cuando la
  fuente está a varias uniones de distancia, la
  [vía de EN 12354-5](/phonometry/es/buildings/design/installed-structure-borne/)
  encadena en su lugar los índices de unión.

Y la desviación típica de unos 2 dB no es una tolerancia sobre tu respuesta. El
apartado 5 la imprime *suponiendo buena ejecución y una exactitud de medición
alta*, y añade el consejo que la hace utilizable: varía los datos de entrada,
sobre todo en situaciones complicadas y con elementos atípicos, y lee la
dispersión del resultado; el Anexo K lo sistematiza en una incertidumbre derivada
de la exactitud de cada dato acústico de entrada.

Los datos de unión merecen su propia advertencia, porque su dispersión es mayor
que la del modelo. El Anexo E.3.1 dice cuatro cosas que la búsqueda de esta
página no muestra. Solo hay datos para uniones en las que los elementos de un
lado y de otro **en el mismo plano tienen la misma masa**. Los puntos medidos se
dispersan típicamente **±3 dB** alrededor de las líneas impresas, y «en algunos
casos la desviación puede ser mucho mayor debido a variaciones en los detalles de
la unión y en la ejecución» — que es más que los ~2 dB del modelo entero, así que
en la mayoría de las predicciones reales el dato de unión, y no la suma, domina
el error. Los valores de $K_{ij}$ se dedujeron de modo que la diferencia de nivel
de velocidad estimada de la unión sea correcta *en promedio*, lo que los deja en
general **5 dB por debajo** de la diferencia de nivel de velocidad de la unión
promediada en las dos direcciones, así que un $D_{v,ij}$ medido no se puede
sustituir por un $K_{ij}$ sin ese paso. Y la independencia con la frecuencia vale
«al menos en el rango de frecuencias de 125 Hz a 2000 Hz»; fuera de él el efecto
de la frecuencia puede ser mayor. La salida son los datos medidos: ISO 10848-4
para uniones pesadas — que el propio Anexo E.3.1 recomienda recopilar a escala
nacional — y el
[laboratorio de flancos](/phonometry/es/buildings/insulation/flanking-lab/)
cuando la unión es ligera, no homogénea o simplemente no está en el catálogo.

### 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 trayectorias de
transmisión junto al gráfico de fracción de energía por trayectoria, con $R'_\mathrm{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'_\mathrm{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
trayectoria. 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; pulsa cualquier vista previa para abrir el
PDF.

## A través del cerramiento: partes 3 y 4

Las dos partes restantes de EN 12354 predicen del mismo modo, pero a través
del cerramiento del edificio en lugar de entre dos recintos: la EN 12354-3, el
aislamiento a ruido aéreo frente al sonido exterior, y la EN 12354-4, la
potencia acústica que una fuente interior radia al exterior. Ambas se
construyen sobre la misma suma de factores de transmisión ponderada por
superficie usada arriba, y ambas están cubiertas, junto a la medición de
ISO 16283-3 con la que se contrastan, en
[Aislamiento acústico de fachadas](/phonometry/es/buildings/insulation/facade-insulation/).

## Qué cubre esta guía

Los modelos simplificados de índice global de la EN 12354-1:2000 (apartado
4.4) y la EN 12354-2:2000 (apartado 4.3). Aéreo: la suma energética de la
Fórmula (26) de la trayectoria directa y las trayectorias por flancos mediante
`building.flanking_path`, `building.flanking_element` y
`building.predicted_airborne_insulation`, con los índices de reducción
vibratoria $K_{ij}$ del Anexo E (uniones rígidas en cruz y en T, capas
intermedias flexibles, fachadas ligeras y muros de doble hoja, esquinas y
cambios de espesor) y el límite inferior $K_{ij,\min}$ del apartado 4.4.2
mediante `building.junction_vibration_reduction` y
`building.junction_min_vibration_reduction`. Impactos: la resta de la Fórmula
(21) $L'_\mathrm{n,w} = L_\mathrm{n,w,eq} - \Delta L_\mathrm{w} + K$ mediante
`building.equivalent_impact_level`, `building.impact_flanking_correction`,
`building.predicted_impact_insulation` y `building.standardized_impact_level`.
Ambos resultados escriben una ficha de predicción con `.report()`.

Los modelos *detallados* por banda de ambas partes son el asunto de
[Predicción detallada por bandas (ISO
12354)](/phonometry/es/buildings/design/detailed-prediction/): la misma norma
ejecutada banda a banda, con los datos de laboratorio de elemento y de unión
convertidos a sus valores in situ antes de formar las trayectorias. Usa el
modelo simplificado de aquí cuando solo conozcas las magnitudes globales
ponderadas de los elementos y la pregunta sea si el recinto cumple; usa el
detallado cuando existan los espectros de elemento y la pregunta sea qué
trayectoria fija qué banda. Los propios datos de los elementos ($R_\mathrm{w}$,
$\Delta R_\mathrm{w}$, $\Delta L_\mathrm{w}$, masa por unidad de superficie) se toman como
dados, de datos de laboratorio o de las estimaciones de ley de masas de
[Predicción del aislamiento de
paneles](/phonometry/es/buildings/design/panel-sound-insulation/). El resto de
la familia está cubierto por sus propias guías: la EN 12354-3 y la EN 12354-4
a través del cerramiento del edificio en [Aislamiento acústico de
fachadas](/phonometry/es/buildings/insulation/facade-insulation/), los
equipamientos de la EN 12354-5 en [Ruido estructural
instalado](/phonometry/es/buildings/design/installed-structure-borne/) y el
modelo de absorción de la EN 12354-6 en [Absorción acústica en
recintos](/phonometry/es/buildings/rooms/enclosed-space-absorption/).

## Véase también

- [Aislamiento acústico de fachadas](/phonometry/es/buildings/insulation/facade-insulation/):
  las predicciones de EN 12354-3 y EN 12354-4 a través del cerramiento del
  edificio, con la medición de ISO 16283-3 con la que se contrastan.
- [Predicción detallada por bandas (ISO 12354)](/phonometry/es/buildings/design/detailed-prediction/):
  las mismas dos partes ejecutadas banda a banda, con la conversión in situ de
  los datos de elemento y de unión que el modelo de número único de aquí toma
  como dados.
- [Transmisión de onda de flexión en uniones de placas](/phonometry/es/vibration/structural/junction-transmission/):
  el enfoque ondulatorio que hay detrás de $K_{ij}$, con el índice representado
  frente a la relación de espesores de placa para las uniones en X, T y L del
  catálogo de más arriba.
- [Medición del aislamiento en campo (ISO 16283)](/phonometry/es/buildings/insulation/insulation-field/):
  las magnitudes in situ medidas con las que se contrasta la predicción.
- [Índices globales de aislamiento (ISO 717)](/phonometry/es/buildings/insulation/insulation-ratings/):
  el motor de curva de referencia tras los $R'_\mathrm{w}$ y $L'_\mathrm{n,w}$ previstos.
- [Medición del aislamiento en laboratorio](/phonometry/es/buildings/insulation/insulation-lab/):
  los índices de ISO 10140 que consume el modelo.
- [Transmisión por flancos en laboratorio (ISO 10848)](/phonometry/es/buildings/insulation/flanking-lab/):
  el índice de reducción vibratoria de unión $K_{ij}$ medido que consume
  el modelo.
- [Absorción acústica en recintos (EN 12354-6)](/phonometry/es/buildings/rooms/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/materials/resilient/dynamic-stiffness/):
  la $s'$ que alimenta el término de suelo flotante de EN 12354-2.
- Referencia de la API: [`building.prediction.simplified_model`](/phonometry/es/reference/api/building/simplified-model/) y [`building.prediction.facade`](/phonometry/es/reference/api/building/facade/).
- Teoría: [Aislamiento acústico y absorción, predichos](/phonometry/es/reference/theory/rooms-buildings/#aislamiento-acústico-y-absorción-predichos-en-12354-1-2-6-bies-cremer-hopkins): el modelo de trayectos de EN 12354 y las magnitudes de transmisión que suma.
