<!-- canonical: https://jmrplens.github.io/phonometry/es/buildings/design/installed-structure-borne/ -->
Source: https://jmrplens.github.io/phonometry/es/buildings/design/installed-structure-borne/

La **EN 12354-5:2009** predice el nivel de presión acústica en un recinto receptor
causado por equipamientos del edificio (bombas, ventiladores, ascensores,
instalaciones de agua) que inyectan **ruido estructural** en el edificio. Cierra
la cadena de vibroacústica estructural: la fuente se describe por su nivel de
potencia acústica estructural característica $L_{W\mathrm{s,c}}$, derivado de la medición
sobre placa receptora de EN 15657 mediante la conversión de las Fórmulas
(15)/(17) y una corrección de movilidad (**no** el nivel bruto inyectado en la
placa; véase [EN 15657](/phonometry/es/buildings/design/structure-borne-power/)); las
movilidades puntuales de fuente y receptor fijan cuánta potencia se acopla
realmente a la estructura, y la transmisión del edificio la lleva al recinto
receptor. La corrección de movilidad del Anexo I,
`installed_power_from_reception_plate`, refiere el nivel característico de
placa receptora $L_{W\mathrm{s,n}}$ al receptor real,
$L_{W\mathrm{s,inst}} = L_{W\mathrm{s,n}} + 10\log_{10}(Y_{\infty,i} / Y_{\infty,\mathrm{rec}})$
con $Y_{\infty,\mathrm{rec}} = 5\cdot 10^{-6}\ \text{m/(N·s)}$;
con la movilidad de la fuente en su lugar da $L_{W\mathrm{s,c}}$ (Anexo I.3, Tabla I.8).

*Toda la cadena sobre un mismo eje, por banda de octava. El término de
acoplamiento no es un peaje fijo: se lleva 6,6 dB de la potencia característica
a 63 Hz y 20,8 dB a 4 kHz, así que el espectro instalado ya se inclina hacia
abajo antes de aplicar ninguna trayectoria. Cada trayectoria resta después su
propio $D_\mathrm{sa}$, su índice de flancos y su término de superficie, y aquí la
pared de flanco, más pequeña, le saca al forjado entre 1,3 y 2,3 dB. El nivel
del recinto receptor es la **suma energética** de las trayectorias, de 2,0 a
2,4 dB por encima de la mayor de las dos: arreglar solo la peor trayectoria
compraría unos 2 dB, no la diferencia.*

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

```python

from phonometry import building

# Potencia característica EN 15657 y movilidades puntuales ilustrativas.
bands = np.array([63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0])
lws_c = np.array([78.0, 82.0, 84.0, 81.0, 77.0, 72.0, 66.0])
ys = (2e-4 + 1e-4j) * (bands / 250.0)        # movilidad de la fuente
yi = (3e-5 + 1e-5j) * np.ones_like(bands)    # movilidad del receptor
dc = np.array([float(building.coupling_term(a, b)) for a, b in zip(ys, yi)])

# Dos trayectorias de transmisión: el forjado excitado y una pared de flanco. Dsa es
# negativo y cae con la frecuencia (Anexo F.2), y entra con signo menos.
paths = [
    {"adjustment_term": np.array([-14.0, -17.0, -20.0, -25.0, -30.0, -35.0, -40.0]),
     "element_area": 12.0,
     "flanking_reduction_index": np.linspace(44.0, 62.0, 7)},
    {"adjustment_term": np.array([-16.0, -19.0, -23.0, -28.0, -33.0, -38.0, -43.0]),
     "element_area": 9.0,
     "flanking_reduction_index": np.linspace(46.0, 64.0, 7)},
]
res = building.installed_source_prediction(lws_c, dc, paths, frequencies=bands)
res.plot(language="es")   # potencia característica e instalada, niveles por trayectoria y el total
plt.show()
```

</details>

## 1. Acoplamiento y potencia instalada

Solo parte de la potencia característica se inyecta en el elemento soporte; la
pérdida es el **término de acoplamiento** $D_\mathrm{C}$, fijado para una excitación
puntual por la movilidad de la fuente $Y_\mathrm{s}$ y la del receptor $Y_i$
(Fórmula 19b):

$$
D_{\mathrm{C},i} = 10\log_{10}\frac{|Y_\mathrm{s} + Y_i|^2}{|Y_\mathrm{s}|\,\mathrm{Re}\{Y_i\}},
$$

que se reduce a $10\log_{10}(|Y_\mathrm{s}|/\mathrm{Re}\{Y_i\})$ para una **fuente de fuerza** (movilidad
de fuente alta, Fórmula 19c) y a $-10\log_{10}(|Y_\mathrm{s}|\,\mathrm{Re}\{Z_i\})$ para una **fuente de
velocidad** (movilidad de fuente baja, Fórmula 19d); un soporte elástico añade su
movilidad de transferencia $Y_k$ dentro del módulo (Fórmula 19e). El nivel de
potencia **instalada** es entonces (Fórmula 18b) $L_{W\mathrm{s,inst}} = L_{W\mathrm{s,c}} - D_\mathrm{C}$.

Los dos límites son utilizables en cuanto las movilidades se diferencian en un
orden de magnitud aproximadamente: con $|Y_\mathrm{s}|/|Y_i| = 10$ la forma de fuente de
fuerza queda 0,8 dB por debajo del valor exacto de la Fórmula 19b y con 100 queda
0,1 dB por debajo, mientras que entre esos extremos es la relación de fases la
que decide la respuesta y hay que evaluar la Fórmula 19b con movilidades
complejas y no con módulos. Lee las dos idealizaciones en términos físicos: una
**fuente de fuerza** impone su fuerza haga lo que haga el receptor, así que un
receptor más rígido simplemente vibra menos y acepta menos potencia, y $D_\mathrm{C}$ deja
de depender del módulo del receptor; una **fuente de velocidad** impone su
movimiento, así que un receptor más rígido le saca ahora *más* potencia y la
dependencia se invierte. Una bomba sobre una losa de hormigón es la fuente de
fuerza de libro; una máquina pesada atornillada rígidamente a un forjado ligero
de madera es el caso en el que la intuición se da la vuelta, y la zona intermedia
— una máquina montada cerca de la resonancia de sus apoyos — es donde $D_\mathrm{C}$ es
menor e incluso puede hacerse negativo, porque el numerador $|Y_\mathrm{s} + Y_i|^2$ se
desploma cuando las dos movilidades son comparables y están en oposición de fase.
La curva exacta toca fondo con las movilidades igualadas, que es la mejor
transferencia de potencia y, por tanto, el peor aislamiento.

Este $L_{W\mathrm{s,inst}}$ es el mismo que el de la corrección por movilidad
del Anexo I de la introducción, alcanzado por otra trayectoria: usa la Fórmula (18b)
cuando $D_\mathrm{C}$ se conoce a partir de las dos movilidades, y la corrección directa
$L_{W\mathrm{s,n}} + 10\log_{10}(Y_{\infty,i}/Y_{\infty,\mathrm{rec}})$ cuando no. Sobre
la cisterna del Anexo I.3 las dos dan 68,2 dB a 63 Hz, a partir de
$L_{W\mathrm{s,c}} = 84,4$ dB y $D_\mathrm{C} = 16,2$ dB. Fíjate en qué magnitud te entregan:
$L_{W\mathrm{s,c}}$ es la entrada que toma esta página, y *no* es los 68,2 dB que la
[página de EN 15657](/phonometry/es/buildings/design/structure-borne-power/)
imprime como su nivel instalado — meter ese valor aquí resta $D_\mathrm{C}$ dos veces.

La física detrás de $D_\mathrm{C}$ es la clásica potencia de entrada de una placa
excitada en un punto: solo la parte real de la movilidad en el punto de
excitación del receptor absorbe potencia, y el desajuste entre $Y_\mathrm{s}$ e $Y_i$
decide cuánta de la capacidad de la fuente entra realmente en la estructura
(Hopkins 2007, Sección 2.8). Las propias movilidades vienen de la
[cadena de movilidad mecánica](/phonometry/es/vibration/structural/mechanical-mobility/):
medidas según ISO 7626, o de las formas cerradas de placa infinita de la
[teoría de paneles](/phonometry/es/buildings/design/panel-sound-insulation/) cuando no
hay medición. Una bomba sobre una losa de hormigón es la fuente de fuerza de
libro: la movilidad de su carcasa queda órdenes de magnitud por encima de la
de la losa, así que $D_\mathrm{C}$ se reduce a la Fórmula 19c y la potencia inyectada
deja de depender del receptor.

```python
from phonometry import building

# Una fuente casi de fuerza (Y_s >> Y_i) sobre un forjado de hormigón:
dc = building.coupling_term(2e-4 + 1e-4j, 3e-5 + 1e-5j)
print(round(float(dc), 2))                                          # 9.86 dB
print(round(float(building.installed_structure_borne_power_level(82.0, dc)), 1))  # 72.1 dB

# Los dos límites, para comparar: aquí |Y_s|/|Y_i| es solo 7, así que la forma
# de fuente de fuerza ya está a 1.1 dB del valor exacto de la Fórmula 19b.
print(round(float(building.coupling_term_force_source(2e-4 + 1e-4j, 3e-5 + 1e-5j)), 2))      # 8.72
print(round(float(building.coupling_term_velocity_source(2e-4 + 1e-4j, 1 / (3e-5 + 1e-5j))), 2))  # -8.27
```

*Toda la Fórmula 19b sobre un mismo eje. Muy a la derecha la fuente es una fuente
de fuerza y $D_\mathrm{C}$ sigue a $10\lg(|Y_\mathrm{s}|/\mathrm{Re}\{Y_i\})$; muy a la izquierda
es una fuente de velocidad y sigue a $-10\lg(|Y_\mathrm{s}|\,\mathrm{Re}\{Z_i\})$; la
curva exacta se separa de las dos asíntotas dentro de una década alrededor de las
movilidades igualadas, donde alcanza su mínimo de 6,2 dB — máxima transferencia
de potencia, mínimo aislamiento. La bomba del fragmento de código está en una
relación de solo 7,1, que es por lo que sus 9,9 dB exactos quedan 1,1 dB por
encima del límite de fuente de fuerza. Añadir un apoyo elástico (Fórmula 19e)
desplaza toda la curva hacia arriba: una movilidad de transferencia de
$10^{-4}$ m/(N·s) compra 2,7 dB en la relación de la bomba y una de
$10^{-3}$ compra 13,7 dB, que es el presupuesto de aislamiento de un soporte
leído directamente en el término de acoplamiento.*

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

```python

# `building` es el módulo que importa el fragmento de arriba.

yi = 3e-5 + 1e-5j                     # movilidad del receptor, fija
ratio = np.logspace(-3.0, 3.0, 400)   # |Y_s| / |Y_i|
ys = abs(yi) * ratio * (2 + 1j) / abs(2 + 1j)

exact = np.array([float(building.coupling_term(a, yi)) for a in ys])
force = np.array([float(building.coupling_term_force_source(a, yi)) for a in ys])
velocity = np.array([float(building.coupling_term_velocity_source(a, 1 / yi))
                     for a in ys])

fig, ax = plt.subplots()
ax.semilogx(ratio, exact, label="Fórmula 19b (exacta)")
ax.semilogx(ratio, force, "--", label="fuente de fuerza (19c)")
ax.semilogx(ratio, velocity, ":", label="fuente de velocidad (19d)")
for yk in (1e-4, 1e-3):               # apoyo elástico, Fórmula 19e
    ax.semilogx(ratio, [float(building.coupling_term(a, yi, transfer_mobility=yk))
                        for a in ys], label=f"con $Y_k$ = {yk:g} m/(N·s)")
ax.plot(7.07, 9.86, "o")              # la bomba del fragmento de código
ax.set(xlabel=r"Relación de movilidades $|Y_\mathrm{s}| / |Y_i|$",
       ylabel=r"Término de acoplamiento $D_\mathrm{C}$ [dB]")
ax.legend()
plt.show()
```

</details>

### Tabla D.1: $Y_\mathrm{s}$ a partir de las piezas de la propia máquina

Nada mide la movilidad de fuente de una caldera. El apartado D.1.3 la construye
a partir de las piezas que llevan la vibración hasta las patas, y la Tabla D.1
da las seis formas cerradas que usa. `typical_element_mobility` es esa tabla:

| Fila | Magnitudes que la describen | $\lvert Y\rvert$ en m/N.s |
| --- | --- | --- |
| `"mass"` | $M$ [kg] | $[2\pi f M]^{-1}$ |
| `"bar_end"` | $\rho$ [kg/m3], $c_\mathrm{L}$ [m/s], $S$ [m²] | $[\rho c_\mathrm{L} S]^{-1}$ |
| `"beam"` | $\rho$, $c_\mathrm{L}$, $t$ [m], $w$ [m] | $[7{,}6\,\rho t w\sqrt{c_\mathrm{L} t f}]^{-1}$ |
| `"plate"` | $\rho$, $c_\mathrm{L}$, $t$ [m] | $[2{,}3\,c_\mathrm{L}\rho t^2]^{-1}$ |
| `"pipe"` | $\rho$, $c_\mathrm{L}$, $t$ [m], $r$ [m] | $[63\,\rho t r\sqrt{c_\mathrm{L} r f}]^{-1}$ |
| `"mass_spring"` | $M$ [kg], $s$ [N/m], $\eta$ [-] | $\left[\left(\frac{2\pi f\eta}{s(1+\eta^2)}\right)^2 + \left(\frac{2\pi f}{s(1+\eta^2)} - \frac{1}{2\pi f M}\right)^2\right]^{1/2}$ |

La frecuencia no está en la columna de magnitudes que describen el elemento,
porque es la frecuencia de banda de la predicción y no una propiedad del
elemento — pero sí aparece en cuatro de las seis expresiones, así que esas
cuatro filas admiten `frequency` y las otras dos la rechazan. Elige la fila por
lo que realmente transporta la vibración: una máquina pequeña y compacta es su
masa total, una máquina sobre patas no rígidas es la fila masa-muelle, y la
tubería que sale de una bomba es la fila de tubo. Fíjate en que `"plate"` es de
nuevo la Fórmula (F.4), escrita en $\rho$, $c_\mathrm{L}$ y $t$ en lugar de en masa y
rigidez a flexión: el mismo número que `vibration.infinite_plate_mobility`.

```python
from phonometry import building

# Una bomba de 120 kg sobre cuatro apoyos de caucho, 1,0e6 N/m cada uno,
# factor de pérdidas 0,1.
y_feet = building.typical_element_mobility(
    "mass_spring", frequency=125.0, mass=120.0, stiffness=4.0e6, loss_factor=0.1
)
print(f"{float(y_feet):.3g}")                       # 0.000185 m/(N.s)

# Muy por encima de la resonancia del montaje, de 29 Hz, mandan los apoyos: la
# carcasa por sí sola es un orden de magnitud más rígida, así que son los
# apoyos los que fijan Y_s.
y_casing = building.typical_element_mobility("mass", frequency=125.0, mass=120.0)
print(f"{float(y_casing):.3g}")                     # 1.06e-05 m/(N.s)

dc = building.coupling_term(y_feet, 3e-5 + 1e-5j)   # sobre un forjado de hormigón
print(round(float(dc), 1))                          # 9.2 dB
```

La fila masa-muelle es la única con un punto de retorno. Es la suma en serie de
una movilidad de muelle y una de masa, de modo que su segundo paréntesis
contiene las dos reactancias, que se cancelan en
$f_0 = (2\pi)^{-1}\sqrt{s(1+\eta^2)/M}$ y dejan $\lvert Y_\mathrm{s}\rvert$ en su
*mínimo* limitado por el amortiguamiento — que es la frecuencia a la que el
montaje inyecta **más** potencia, porque una movilidad de fuente pequeña es un
$D_\mathrm{C}$ pequeño. Esa es la resonancia del montaje, y $\eta$ es lo único que fija
cuánto empeora. Una fila llamada con una magnitud que no la describe, o con una
`frequency` que su expresión no contiene, lanza un error en lugar de aplicar
un valor por defecto en silencio.

### Dónde se fija la máquina es parte de $Y_i$

La movilidad del receptor no es una constante de material del elemento; es una
propiedad del *punto* al que se atornilla la máquina. El Anexo F.3 de
EN 12354-5 da tres vías para llegar a ella, en orden decreciente de autoridad.

**Medida.** Movilidades puntuales en los puntos de contacto reales, normales a
la superficie, conforme a ISO 7626-1 con excitación translacional en un solo
punto según ISO 7626-2 (se admite la excitación por impacto de ISO 7626-5), en
banda estrecha y reducidas después a tercios de octava. El receptor **no** debe
estar cargado dinámicamente mientras se mide su movilidad — una asimetría
importante con la fuente, que en cambio se aísla o se suspende libremente.

**Calculada, en el centro del panel.** Para una excitación en la zona central de
un elemento homogéneo grande, la Fórmula (F.4) da el valor de placa infinita,
real e independiente de la frecuencia,
$Y_{i,\infty} = 1/(8\sqrt{m'B'}) = (2{,}3\,c_\mathrm{L}\rho t^2)^{-1}$, que en la
biblioteca es `vibration.infinite_plate_mobility(B, m)`. Solo vale *por encima*
de la resonancia más baja del elemento,
$f_{11} = (c_0^2/4f_\mathrm{c})(1/l_1^2 + 1/l_2^2)$ (Fórmula F.5); por debajo de $f_{11}$
la movilidad se vuelve compleja y la fija la rigidez de los apoyos del elemento,
no su propia masa y rigidez a flexión. Para el forjado de hormigón de 220 mm y
5,00 m × 4,00 m del edificio resuelto, $f_{11}$ vale 39 Hz, holgadamente por
debajo del rango, pero para una bancada de hormigón de 1,20 m × 0,80 m del mismo
espesor vale 781 Hz, justo en medio — así que en elementos pequeños y rígidos la
forma cerrada es la herramienta equivocada. Los elementos con vigas se dividen
otra vez (Fórmula F.3.2): por debajo de $f_{11}$ se usa la rigidez a flexión
efectiva $\sqrt{B'_xB'_y}$; por encima, la excitación entre vigas usa el campo de
placa y la excitación sobre una viga usa la movilidad de la propia viga.

**Corregida por la posición de fijación.** Cerca de un borde rígido la parte real
se desploma como
$\mathrm{Re}\{Y_i\} = \mathrm{Re}\{Y_{i,\infty}\}\,[1 - J_0(2k_\mathrm{B}a)]$
(Fórmula F.6a, con una forma de esquina F.6b), siendo $a$ la distancia al borde.
Eso convierte la distancia de fijación en una variable de proyecto y no en un
detalle: en ese mismo forjado de hormigón, a 63 Hz, atornillar la máquina a
0,20 m de una pared deja un 6,5 % de la parte real de la movilidad de centro de
panel — 11,9 dB menos de potencia inyectada — y a 0,50 m deja un 37 %, que valen
4,3 dB. Acerca una bomba a una unión y alimentará menos al edificio.

```python

from scipy.special import j0

rho, c_l, t = 2200.0, 3800.0, 0.220         # hormigón, 220 mm
m, b = rho * t, c_l**2 * rho * t**3 / 12.0  # masa por superficie, rigidez a flexión
y_inf = 1.0 / (8.0 * np.sqrt(m * b))        # Fórmula (F.4), centro de panel
print(f"{y_inf:.3g}")                       # 1.07e-06 m/(N.s)

f_c = 343.0**2 / (1.8 * c_l * t)            # frecuencia crítica
f_11 = 343.0**2 / (4 * f_c) * (1 / 5.0**2 + 1 / 4.0**2)
print(round(f_c, 1), round(f_11, 1))        # 78.2 Hz, 38.6 Hz -> F.4 vale aquí

f, a = 63.0, 0.20                           # a 0.20 m de un borde rígido
k_b = np.sqrt(2 * np.pi * f) * (m / b) ** 0.25
print(round(float(1 - j0(2 * k_b * a)), 3))                    # 0.065
print(round(float(-10 * np.log10(1 - j0(2 * k_b * a))), 1))    # 11.9 dB menos
```

La movilidad de transferencia $Y_k$ de la Fórmula (19e) no es una magnitud de
placa en absoluto: es la rigidez dinámica de transferencia del soporte, medida en
el [banco de ISO 10846](/phonometry/es/vibration/structural/transfer-stiffness/).
La posición de fijación y la hoja de características del soporte van las dos en el `notes`
del informe, porque son las dos cosas que hacen reproducible una predicción
repetida.

### Tabla F.1: la máquina de impactos como fuente de sustitución

Cuando el propio equipo no se puede caracterizar, el apartado D.1.2.3 permite
medir la transmisión del edificio con una fuente de nivel de fuerza conocido y
sustituir después el equipo en ella (Fórmula D.6). La máquina de impactos ISO
es la opción práctica sobre estructuras receptoras de baja movilidad, y la
Tabla F.1 es su nivel de fuerza en bandas de octava:

| Banda de octava [Hz] | 31,5 | 63 | 125 | 250 | 500 | 1000 | 2000 | 4000 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| $L_F$ [dB] | 139 | 142 | 145 | 148 | 151 | 154 | 156 | 156 |

Con la tabla viajan dos condiciones. La forma cerrada que la norma imprime a su
lado, $L_F = 10\log_{10}(2{,}5f/10^{-12})$ en bandas de octava y
$10\log_{10}(0{,}8f/10^{-12})$ en tercios de octava, solo vale «hasta unos
1000 Hz»: da 157 dB y 160 dB a 2 kHz y 4 kHz, donde la tabla se aplana en
156 dB, así que lee la tabla donde la tabla existe y la forma cerrada solo para
los tercios de octava que no tabula. Y los niveles están referidos a
$10^{-6}$ N pese al «re 1 pN» que imprime el pie; véase el
[registro de erratas](/phonometry/es/reference/errata/).

El apartado D.1.3 trata entonces la máquina como fuente de fuerza con la
movilidad tipo masa de sus martillos de 0,5 kg, lo que convierte la tabla en las
dos entradas que toma esta página: $L_{W\mathrm{s,c}} = L_F - 5 - 10\log_{10}f$
(Fórmula D.9a) y
$D_{\mathrm{C},i} = -10\log_{10}(\omega M Y_i) + 10\log_{10}[1 + (\omega M Y_i)^2]$
(Fórmula D.9b, que es la Fórmula 19b con $Y_\mathrm{s} = 1/\mathrm{j}\omega M$).

```python

from phonometry import building

bands = np.array(building.TABLE_F1_OCTAVE_BANDS)
lf = building.tapping_machine_force_level()            # Tabla F.1
lw_c = building.tapping_machine_characteristic_power_level(bands, lf)
print(np.round(lw_c, 1))   # [119. 119. 119. 119. 119. 119. 118. 115.]

# Sobre el forjado de hormigón de 220 mm del apartado anterior (Y_i = 1,07e-6).
dc = building.tapping_machine_coupling_term(bands, 1.07e-6)
print(np.round(lw_c - dc, 1))   # [79.3 82.3 85.3 88.3 91.3 94.3 96.3 96.3]
```

En tercios de octava la potencia característica sale plana en 114 dB re 1 pW,
que es el «$\approx 115$ dB» de la propia Fórmula (D.9a) y la curva gruesa
horizontal de la Figura D.3 de la norma.

## 2. Transmisión al recinto receptor

Las partes 1 y 2 de EN 12354 tratan recintos excitados por vía aérea y por la
máquina de impactos normalizada; la parte 5 cubre las fuentes que sacuden el
edificio *directamente*: bombas, ventiladores, ascensores, bañeras de
hidromasaje, cisternas y las conducciones que las anclan a paredes y forjados.
Una vez que la potencia instalada está en la estructura, varios elementos
radian al recinto receptor: el propio elemento excitado y cada elemento al
que la vibración llega a través de las uniones. Cada par elemento
excitado/elemento radiante $i \to j$ es una trayectoria de transmisión con su propio
término de ajuste y su índice de flancos:

El diagrama dibuja el caso simple, con una unión entre el elemento excitado y el
radiante. En las partes 1 y 2 los dos recintos comparten siempre el elemento
separador, y el apartado 4.2.4 de ISO 12354-1 dice con todas las letras que el
modelo describe la transmisión entre recintos *adyacentes*. Los equipamientos
rompen esa hipótesis a menudo: el propio ejemplo de la cisterna de la norma pone
el recinto receptor en diagonal por debajo del baño, y una bajante o el hueco de
un ascensor pueden estar a tres uniones de quien se queja. El Anexo F.1 dice qué
hacer. $K_{ij}$ deja entonces de ser el invariante de una unión y hay que leerlo
como algo que cubre la cadena entera: los índices de unión se suman a lo largo de
la trayectoria (Fórmula F.1), las longitudes de absorción equivalentes de los
elementos intermedios se pueden tomar numéricamente iguales a sus superficies
como primera estimación en elementos grandes o bien amortiguados, y un ajuste
$\Delta K$ cubre las ondas longitudinales y en el plano que se le escapan a la
teoría de ondas de flexión — unos 4 dB para dos uniones y 6 dB para tres o más,
con el $K_{ij}$ encadenado acotado inferiormente cerca de $-5$ dB, que
corresponde a transmisión estructural total. Dos consecuencias para el dato que
aportas aquí:
un $R_{ij,\mathrm{ref}}$ calculado para una sola unión sobrestima el aislamiento
de una ruta con varias uniones, y varias rutas distintas suelen unir el mismo par
de elementos, y cada una hay que contarla como su propia trayectoria o refundirla
antes en un único $R_{ij,\mathrm{ref}}$ efectivo. Donde las trayectorias se
multiplican, el Anexo F.1 remite a un modelo SEA completo.

Cada trayectoria de transmisión $i \to j$ da un nivel de presión acústica normalizado a
partir de la potencia instalada, el término de ajuste estructura-a-aéreo $D_\mathrm{sa}$,
el índice de reducción acústica de flancos $R_{ij,\mathrm{ref}}$ (EN 12354-1)
y el área del
elemento (Fórmula 18a):

$$
L_{\mathrm{n,s},ij} = L_{W\mathrm{s,inst},i} - D_{\mathrm{sa},i} - R_{ij,\mathrm{ref}}
             - 10\log_{10}\frac{S_i}{S_0} - 10\log_{10}\frac{A_0}{4},
$$

con $S_0 = A_0 = 10\ \text{m}^2$. Lee los cinco términos en orden, porque cada uno
deshace una normalización distinta. $L_{W\mathrm{s,inst},i}$ es la potencia que
entró realmente en el elemento $i$. $D_{\mathrm{sa},i}$ convierte esa excitación
estructural en la excitación *aérea* equivalente, para que el término siguiente
pueda ser una magnitud aérea siquiera. $R_{ij,\mathrm{ref}}$ es ese índice aéreo
de flancos, definido para un elemento de referencia de $S_0 = 10\ \text{m}^2$.
$10\lg(S_i/S_0)$ devuelve, por tanto, el elemento real a su sitio: la misma
potencia inyectada repartida sobre un elemento mayor da una amplitud de vibración
menor por unidad de superficie, así que un $S_i$ mayor baja el nivel radiado. Y
$10\lg(A_0/4)$ convierte la potencia radiada en un nivel de presión acústica
reverberante, a través de la relación de campo difuso $p^2 = 4\rho_0c_0W/A$
evaluada en el área de absorción de referencia $A_0$. Ese último término es lo
que significa «normalizado» en esta página: el resultado es el nivel que
*tendría* el recinto si su área de absorción equivalente fuese de 10 m². Un
recinto real con más absorción mide menos; las mediciones en campo de
equipamientos según ISO 16032 suelen ser en cambio *estandarizadas*, referidas a
un tiempo de reverberación de 0,5 s, y las dos no son intercambiables.

Las trayectorias se combinan después energéticamente, banda a banda (Fórmula 17):

$$
L_\mathrm{n,s} = 10\log_{10}\sum_{ij} 10^{L_{\mathrm{n,s},ij}/10}.
$$

`res.total_level` es esa combinación por bandas y `res.overall_level` la suma de
ella sobre el espectro. Para la cisterna del Anexo I.3 las cuatro trayectorias
suman 41,4 dB a 63 Hz y el espectro entero cierra en 29 dB(A) — véase la nota
sobre la ponderación que hay debajo del fragmento de código.

### El término de ajuste $D_\mathrm{sa}$

Una fuerza puntual bombea energía a ondas de flexión *libres*, mientras que un
campo acústico incidente excita además ondas *forzadas*. $D_\mathrm{sa}$ es el factor
de contabilidad que permite reutilizar el índice de flancos aéreo
$R_{ij,\mathrm{ref}}$ — una magnitud aérea — para un elemento excitado
estructuralmente: convierte la potencia estructural inyectada en la potencia
aérea incidente que dejaría al elemento con la misma energía de vibración libre
(Fórmula 20a). Para la excitación por fuerza perpendicular de un elemento
homogéneo eso se convierte en la Fórmula (20b),

$$
D_{\mathrm{sa},i} = 10\log_{10}\frac{2\pi m_i\,2.2\,\tau_i}{\rho_0 c_0 T_{\mathrm{s},i}\sigma_i}\ \text{dB},
$$

con $R_i = -10\log_{10}\tau_i$, y el Anexo F.2 da la forma de trabajo

$$
D_{\mathrm{sa},i} = 10\log_{10}\frac{400\,f_{\mathrm{c},i}\,\sigma_i}{m_i\,f^2}\ \text{dB}
\qquad\text{(Fórmula F.3)},
$$

exacta por encima de la frecuencia crítica ($\sigma_i \approx 1$) y buena
aproximación en todo el rango. Léela así: los elementos más pesados y las
frecuencias más altas hacen $D_\mathrm{sa}$ *más negativo*, a razón de
$-20\log_{10}f$ una vez que $\sigma$ se ha saturado.

:::caution
**$D_\mathrm{sa}$ es normalmente negativo — pasa el valor tabulado con el signo con el
que está impreso.**
Las columnas del Anexo I de la propia norma van de unos $-14$ dB a 63 Hz a
$-45$ dB a 2 kHz para elementos corrientes de hormigón y de fábrica. El término
entra en la Fórmula (18a) con signo menos, así que un $D_\mathrm{sa}$ negativo *sube*
el nivel previsto. Revisiones anteriores de esta página pasaban
`"adjustment_term": 5.0` y `6.0`; copiar ese patrón poniendo en su lugar un
valor real del Anexo F dejaría la predicción entre unos 20 y 40 dB por debajo en
todo el espectro, y sin que se levante ningún error.
:::

Todas las entradas de la Fórmula (F.3) están ya disponibles:
[`in_situ_element`](/phonometry/es/buildings/design/detailed-prediction/#parámetros-de-in_situ_element)
devuelve el tiempo de reverberación estructural in situ, el factor de radiación
y la $R$ del elemento, y `structure_to_airborne_adjustment` es la propia
Fórmula (F.3).

```python

from phonometry import building

# Fórmula (F.3) para la pared de 92 kg/m2 del edificio resuelto del Anexo I.
f = np.array([63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0])
sigma = np.minimum(1.0, np.sqrt(f / 200.0))        # factor de radiación, fc = 200 Hz
dsa_f3 = building.structure_to_airborne_adjustment(
    f, critical_frequency=200.0, mass_per_area=92.0, radiation_factor=sigma
)
print(np.round(dsa_f3, 1))    # [-9.1 -13.6 -18.6 -24.6 -30.6 -36.6]  todos negativos

bands = np.array([250.0, 500.0, 1000.0])
res = building.installed_source_prediction(
    characteristic_power_level=np.array([80.0, 82.0, 78.0]),
    coupling_term=np.array([9.0, 10.0, 11.0]),
    paths=[
        {"adjustment_term": np.array([-19.0, -25.0, -31.0]),
         "flanking_reduction_index": np.array([50.0, 52.0, 55.0]), "element_area": 12.0},
        {"adjustment_term": np.array([-22.0, -28.0, -34.0]),
         "flanking_reduction_index": np.array([52.0, 54.0, 57.0]), "element_area": 8.0},
    ],
    frequencies=bands,
)
print(np.round(res.total_level, 1))      # total L_n,s por banda
print(round(res.overall_level, 1))       # nivel sumado en bandas [dB]

res.plot()   # la cascada L_n,s por trayectoria y total, como en la figura de arriba (requiere matplotlib)
```

El `InstalledSourceResult` transporta los niveles por trayectoria, el total por banda,
el nivel de potencia instalada y `.overall_level`, y su `.plot()` dibuja toda la
cascada.

### `overall_level` no es el número que limita un reglamento

`overall_level` es la suma energética simple de los $L_\mathrm{n,s}$ por banda sobre las
bandas que hayas dado. **No** está ponderado A, y la magnitud en la que está
escrita cualquier exigencia nacional de ruido de equipamientos — y la magnitud
que produce la medición en campo de ISO 16032 — es el número único ponderado A
$L_\mathrm{n,s}(A)$. Los dos ejemplos resueltos de EN 12354-5 cierran en uno: 26 dB(A)
para la bañera de hidromasaje del Anexo I.2 y 29 dB(A) para la cisterna del
Anexo I.3. La diferencia no es pequeña. Los espectros de equipamientos están
cargados hacia las bandas bajas, justo donde la ponderación A es más abrupta, así
que para la cisterna del Anexo I.3 la suma sin ponderar da 44,0 dB frente a los
29 dB(A) de la norma: quince decibelios de margen que no existen. Pondera los
niveles de banda antes de sumarlos:

```python

# Total por banda de octava del Anexo I.3, y las correcciones de ponderación A
# para esas frecuencias centrales nominales (ISO 3744 Anexo E Tabla E.2 /
# IEC 61672-1).
l_ns = np.array([41.4, 39.6, 30.5, 28.9, 18.5, 4.4])       # de 63 Hz a 2 kHz
a_corr = np.array([-26.2, -16.1, -8.6, -3.2, 0.0, 1.2])
print(round(float(10 * np.log10(np.sum(10 ** (0.1 * l_ns)))), 1))            # 44.0 dB
print(round(float(10 * np.log10(np.sum(10 ** (0.1 * (l_ns + a_corr))))), 1))  # 29.3 dB(A)
```

Lee un resultado frente a esa escala, no frente al total sin ponderar: 29 dB(A)
para una cisterna y 26 dB(A) para una bañera de hidromasaje son lo que producen
los propios ejemplos conformes de la norma, y los límites de vivienda para
equipamientos suelen andar por los treinta y pocos.

## 3. El informe de predicción (`.report()`)

Una predicción termina como un *documento*. El `InstalledSourceResult` expone
un método `.report()` que escribe una ficha PDF de una página, **claramente
etiquetada como predicción, no como medición**: una línea de base de predicción
que nombra la EN 12354-5:2009, una cabecera de metadatos opcional (cliente,
equipo fuente, recinto receptor, instrumentación, clima, fecha), una tabla por
bandas (frecuencia nominal de octava/tercio de octava, el nivel de potencia
acústica estructural instalada $L_{W\mathrm{s,inst}}$, el NPS normalizado de cada trayectoria
de transmisión $L_{\mathrm{n,s},ij}$ y el total combinado $L_\mathrm{n,s}$), los espectros
$L_\mathrm{n,s}(f)$ por trayectoria y total, y el total sumado en bandas $L_\mathrm{n,s}$ (dB)
recuadrado, con la potencia instalada total y el número de trayectorias.

Los metadatos se aportan mediante un `ReportMetadata`, cuyos campos aplicables
aquí son el **equipo fuente** (`specimen`), el **recinto receptor**
(`test_room`), el **cliente**, la **instrumentación** y la identidad del pie
(`laboratory`, `operator`, `report_id`, `notes`). Aportar `requirement` añade un
veredicto CUMPLE/NO CUMPLE frente a un límite superior declarado sobre el $L_\mathrm{n,s}$
global (menos es mejor). `verbose=True` añade una columna por trayectoria de
transmisión (hasta cinco); en otro caso solo se muestran la potencia instalada
y el total combinado. `language="es"` genera la ficha en español con comas
decimales. La franja de base indica las Fórmulas 18a/17 y el aviso de
predicción.

Dos números del fragmento de código de abajo son de la norma, no inventados:
`16.2` es el término de acoplamiento de la cisterna del Anexo I.3 en su contacto
con la pared, y el array `lwc` es el nivel de potencia característico de esa
cisterna, los 84,4 dB que la
[página de EN 15657](/phonometry/es/buildings/design/structure-borne-power/)
deriva a 63 Hz. `requirement` se compara con `overall_level`, así que los 45 dB
de abajo son un límite de suma de bandas *sin ponderar*; un reglamento enunciado
en dB(A) hay que comprobarlo, en cambio, contra la suma ponderada A del apartado
anterior, y frente al espectro de este ejemplo las dos se diferencian en unos
15 dB.

```python

from phonometry import ReportMetadata, installed_source_prediction

bands = np.array([63, 125, 250, 500, 1000, 2000], float)
lwc = np.array([84.4, 82.5, 69.9, 67.6, 61.6, 49.9])   # potencia característica [dB]
dsa = np.array([-13.6, -17.3, -17.4, -20.0, -26.9, -32.9])
paths = [
    {"adjustment_term": dsa,
     "flanking_reduction_index": np.array([43.0, 46, 50.2, 54.7, 64.6, 73]),
     "element_area": 12.8},
    {"adjustment_term": dsa,
     "flanking_reduction_index": np.array([37.0, 41.2, 35.9, 37.7, 49, 57.8]),
     "element_area": 12.8},
]
res = installed_source_prediction(lwc, 16.2, paths, frequencies=bands)

res.report(
    "installed_structure_borne.pdf",
    metadata=ReportMetadata(
        client="Rehabilitación de vivienda de ejemplo",
        specimen="Cisterna de inodoro (fijada a pared)",
        test_room="Recinto receptor: dormitorio contiguo",
        report_id="EXAMPLE-12354-5",
        requirement=45.0,
    ),
    language="es",
)   # L_n,s global ~ 43 dB -> límite declarado 45 dB: CUMPLE
```

La ficha de ejemplo se regenera con `make reports` y se mantiene renderizada en
el repositorio; pulsa la vista previa para abrir el PDF.

## Qué cubre esta guía

La EN 12354-5:2009: el término de acoplamiento $D_\mathrm{C}$ (apartado 4.4.3, Fórmulas
19b-e, con sus límites de fuente de fuerza y de fuente de velocidad) mediante
`coupling_term`, el nivel de potencia instalada
$L_{W\mathrm{s,inst}} = L_{W\mathrm{s,c}} - D_\mathrm{C}$ (Fórmula 18b) mediante
`installed_structure_borne_power_level`, y el nivel de presión acústica
normalizado por trayectoria y su total energético (Fórmulas 18a, 17) mediante
`installed_source_prediction`. Validado contra los propios ejemplos resueltos
del Anexo I de la norma, la bañera de hidromasaje (I.2) y la cisterna (I.3),
dentro del redondeo de ±0,15 dB de los intermedios impresos. Las tablas
informativas de los anexos están también aquí: la Tabla D.1 (movilidad de
elementos constructivos típicos) mediante `typical_element_mobility`, la
Tabla F.1 (nivel de fuerza de la máquina de impactos ISO) mediante
`tapping_machine_force_level` junto con las Fórmulas (D.9a) y (D.9b), el
término de ajuste de la Fórmula (F.3) mediante
`structure_to_airborne_adjustment` y el $\Delta K$ multiunión del apartado F.1
mediante `multi_junction_adjustment`.

El índice de reducción por flancos $R_{ij,\mathrm{ref}}$ es una entrada que se
aporta a partir de mediciones o de la EN 12354-1; el Anexo F.1 solo da la
corrección multiunión sobre él, no el índice en sí. No están implementadas la
Fórmula (F.1) para el $K_{ij}$ equivalente a través de varias uniones, la vía
SEA de la Fórmula (F.2) ni las correcciones de movilidad para excitación cerca
de un borde o de una esquina (Fórmulas F.6a y F.6b). Solo está implementada la
edición de 2009, no la revisión de 2023.

## Véase también

- [Potencia acústica estructural de equipos (EN 15657)](/phonometry/es/buildings/design/structure-borne-power/):
  la caracterización sobre placa receptora que aporta $L_{W\mathrm{s,c}}$ y la movilidad
  de fuente que consume esta predicción.
- [Movilidad mecánica y la familia de FRF (ISO 7626-1)](/phonometry/es/vibration/structural/mechanical-mobility/):
  las $Y_\mathrm{s}$ e $Y_i$ medidas tras el término de acoplamiento.
- [Transmisión de onda de flexión en uniones de placas](/phonometry/es/vibration/structural/junction-transmission/):
  la física de unión que lleva la potencia instalada a los radiadores por
  flancos.
- [Predicción del aislamiento acústico (EN 12354)](/phonometry/es/buildings/design/insulation-prediction/):
  los miembros aéreo y de impactos de la misma familia de predicción.
- Referencia de la API: [`building.prediction.installed_structure_borne`](/phonometry/es/reference/api/building/installed-structure-borne/).
- Teoría: [Movilidades puntuales y eficiencia de radiación](/phonometry/es/reference/theory/vibration/#movilidades-puntuales-y-eficiencia-de-radiación-cremer-5-hopkins-29): la teoría de movilidad y eficiencia de radiación desde la que se predice el nivel instalado.
