<!-- canonical: https://docs.jmrp.io/phonometry/es/buildings/insulation/insulation-intensity/ -->
Source: https://docs.jmrp.io/phonometry/es/buildings/insulation/insulation-intensity/

Una cámara reverberante lee la potencia acústica transmitida de forma
*indirecta*: el recinto receptor integra cada vatio que llega, lo traiga la vía
que lo traiga, y el área de absorción convierte el nivel de la sala de nuevo
en potencia. El método por **intensidad acústica** de ISO 15186 sustituye esa
inferencia por una lectura directa: una sonda de intensidad p-p barre una
superficie de medición que envuelve el elemento de ensayo y mide la potencia
radiada solo por él, así que la transmisión por flancos queda fuera del
número. Esta guía cubre el índice de reducción acústica por intensidad
$R_I$ y su forma modificada con $K_\mathrm{c}$, la diferencia de niveles normalizada
de elemento para elementos constructivos pequeños, el indicador de
cualificación de la superficie y las fichas de ensayo acreditadas. La cadena
de laboratorio por presión vive en
[Medición del aislamiento en
laboratorio](/phonometry/es/buildings/insulation/insulation-lab/);
la física de la sonda y sus indicadores de campo son el tema de la
[guía de intensidad acústica](/phonometry/es/devices/emission/intensity/).

## Medir la potencia transmitida directamente (ISO 15186-1)

La magnitud que se mide es una **integral de superficie**: la potencia acústica
neta que atraviesa una superficie imaginaria trazada alrededor de la cara
radiante del elemento de ensayo,
$W = \int_S \mathbf{I} \cdot \mathbf{n}\, \mathrm{d}S$, con $\mathbf{I}$ el
vector intensidad promediado en el tiempo y $\mathbf{n}$ la normal saliente. De
ahí se siguen dos consecuencias que, juntas, son todo el método. La primera:
una fuente situada *fuera* de la superficie cerrada no aporta nada a la
integral, porque lo que entra por una cara sale por otra, de modo que una pared
de flanco que radia al mismo recinto receptor se cancela a sí misma y solo
sobrevive el elemento de ensayo encerrado. La segunda: el signo importa, porque
un trozo de superficie por el que la energía vuelve *hacia* el elemento de
ensayo resta, y por eso la norma lleva una regla del signo menos
(apartado 6.4.6) que ningún método basado en presión necesita. La sonda lee
$\mathbf{I} \cdot \mathbf{n}$ punto a punto y quien mide hace la integración
moviéndola, lo que convierte el patrón de barrido en parte de la medición y no
en una cuestión de destreza.

Eso es lo que el método por presión no puede hacer. Lee la potencia transmitida
de forma *indirecta*, a partir del nivel del recinto receptor y de su área de
absorción, y la sala integra cada vatio que llega, sea cual sea la trayectoria
que lo trajo. El método por intensidad es por eso la herramienta preferida
cuando la transmisión por flancos es alta
(ISO 15186-1:2000, apartado 1). A partir del nivel del recinto emisor $L_{p1}$ y
del nivel medio de intensidad normal $L_{I\mathrm{n}}$ sobre la superficie (área $S_\mathrm{m}$),
para un elemento de ensayo de área $S$,

$$
R_I = L_{p1} - 6 - \left[ L_{I\mathrm{n}} + 10 \log_{10}\frac{S_\mathrm{m}}{S} \right],
$$

donde los $6$ dB son el desplazamiento de campo difuso entre el nivel de
presión acústica y el nivel de intensidad incidente. La misma fórmula da el
índice aparente $R'_I$ en campo (ISO 15186-2). El barrido de intensidad mide
directamente la potencia transmitida. El método por presión en cámara reverberante no: infiere
la potencia a partir del nivel del recinto receptor y por eso la *subestima*,
lo que hace que el $R$ de ISO 10140-2 salga ligeramente alto. El **índice
modificado** $R_{I,\mathrm{M}} = R_I + K_\mathrm{c}$ vuelve a añadir ese mismo sesgo al resultado
por intensidad, de modo que una medición por intensidad pueda contrastarse con
datos del método por presión (ISO 15186-1, apartado 3.10 NOTA 1). Informa
de $R_I$ cuando lo que se busca es la potencia transmitida real; informa
de $R_{I,\mathrm{M}}$ cuando lo que se busca es la comparabilidad con un resultado de
ISO 10140-2. Revisiones anteriores de esta guía achacaban el sesgo al propio
método por intensidad, lo que habría exigido restar $K_\mathrm{c}$ en lugar de sumarlo.
El término de adaptación $K_\mathrm{c}$ (Anexo B) es
$10 \log_{10}(1 + S_{\mathrm{b}2}\lambda/8V_2)$ para una sala bien definida, o el
independiente de la sala $10 \log_{10}(1 + 61{,}4/f)$. La primera forma es el
término de energía de contorno de Waterhouse, lo que deja leer la segunda como
ese mismo término evaluado a un $S_{\mathrm{b}2}/V_2$ fijo. Para elementos pequeños, la
**diferencia de niveles normalizada por elemento** sustituye $10\log_{10}(S_\mathrm{m}/S)$ por
$10\log_{10}(S_\mathrm{m}/A_0) + 10\log_{10} N$ ($A_0 = 10\ \text{m}^2$, $N$ unidades de elemento).

```python

from phonometry import building

# Nivel del recinto emisor Lp1 y nivel medio de intensidad normal LIn sobre la
# superficie de medición (Sm), para un elemento de ensayo de área S; 16 bandas 1/3 octava.
lp1 = np.full(16, 85.0)
l_in = np.full(16, 40.0)
freqs = [100, 125, 160, 200, 250, 315, 400, 500, 630, 800,
         1000, 1250, 1600, 2000, 2500, 3150]   # centros nominales 1/3 octava
kc = building.adaptation_term_kc(freqs)                  # Anexo B (B.2)
res = building.intensity_sound_reduction(lp1, l_in, measurement_area=12.0, area=10.0, kc=kc)
print(round(float(res.r_i[0]), 2))          # 38.21  RI = Lp1 - 6 - [LIn + 10 lg(Sm/S)]
print(round(float(res.r_i_modified[0]), 2)) # 40.29  RI,M = RI + Kc
print(res.rating.rating)                     # 38  ->  RI,w (motor ISO 717-1)

# Cualifica la superficie de medición: FpI = Lp - LIn debe quedar < 10 dB (< 6 dB
# si el lado receptor es absorbente); el índice residual de la sonda > FpI+10.
# Lp es el nivel de presión del recinto receptor medido sobre la misma
# superficie, a ser posible simultáneamente con el barrido (apartado 6.4.2).
# Aquí queda 6 dB por encima de LIn, es decir, justo en el criterio del
# elemento absorbente.
fpi = building.surface_pressure_intensity_indicator(np.full(16, 46.0), l_in)
print(round(float(fpi[0]), 1))               # 6.0

res.plot()   # RI medido vs curva de referencia ISO 717-1 desplazada (necesita matplotlib)
```

*El índice modificado $R_{I,\mathrm{M}} = R_I + K_\mathrm{c}$ eleva $R_I$ (más en las bandas
bajas, donde $K_\mathrm{c}$ es mayor), de modo que una medición por intensidad reproduce
el resultado por presión de la ISO 10140-2. El índice automático solo se forma
con exactamente 16 valores de tercio de octava o 5 de octava.*

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

```python

from phonometry import building

# Una pared ligera: SPL del recinto emisor Lp1 = 85 dB y el nivel de intensidad
# normal medido LIn sobre la superficie Sm = 12 m2, 16 bandas de tercio de octava.
freqs = [100, 125, 160, 200, 250, 315, 400, 500, 630, 800,
         1000, 1250, 1600, 2000, 2500, 3150]
l_in = np.array([57.8, 61.9, 60.5, 55.6, 55.8, 55.5, 53.4, 51.6,
                 50.2, 47.7, 46.4, 45.7, 44.8, 45.2, 47.2, 52.7])
kc = building.adaptation_term_kc(freqs)           # término de adaptación del Anexo B
res = building.intensity_sound_reduction(np.full(16, 85.0), l_in,
                                         measurement_area=12.0, area=10.0,
                                         kc=kc)

x = np.arange(len(freqs))
fig, ax = plt.subplots()
ax.fill_between(x, res.r_i, res.r_i_modified, alpha=0.2, label="Adaptación Kc")
ax.plot(x, res.r_i, "-o", label="RI (intensidad)")
ax.plot(x, res.r_i_modified, "--s", label="RI,M = RI + Kc")
ax.set_xticks(x, [str(f) for f in freqs], rotation=45)
ax.set(xlabel="Frecuencia [Hz]", ylabel="Índice de reducción acústica [dB]",
       title=f"RI,w = {res.rating.rating} dB, RI,M,w = {res.rating_modified.rating} dB")
ax.legend()
plt.show()
```

</details>

## Barrer la superficie de medición (apartado 6.4)

Un método definido por cómo se mueve una sonda no queda documentado por su
fórmula. Todo lo que sigue fija un número que la fórmula consume después, y
nada de ello lo comprueban las funciones de esta página.

### Cómo se hace la medida

El analizador y su sonda tienen que cumplir la clase 1 de IEC 61043, con un
índice residual de presión-intensidad más de 10 dB por encima del $F_{pI}$
esperado. Antes de cada uso, deja calentar el equipo, ajusta los dos micrófonos
con un calibrador de clase 0 o 1 y mide el índice residual en el dispositivo de
intensidad residual. Excita el recinto emisor y toma $L_{p1}$ como pide la
ISO 140-3. En el receptor, la superficie de medición es la boca plana de un
nicho de 0,1 m de fondo o más, y si no, una caja, a una distancia de medición
de 0,1 m a 0,3 m. Bárrela con la sonda normal y midiendo hacia fuera, en líneas
separadas una distancia de medición, a velocidad constante de 0,1 m/s a
0,3 m/s y con un tiempo por subárea proporcional a su área. Una intensidad
negativa, o un $F_{pI}$ de más de 10 dB (6 dB si el elemento es absorbente
hacia el receptor), obliga a alejar la superficie de 5 cm a 10 cm antes de
añadir absorción. Vuelve a barrer con el recorrido girado 90°: la media de los
dos solo vale si difieren menos de 1,0 dB en todas las bandas. Con $F_{pI}$ por
debajo de 10 dB, baja la fuente 10 dB: si $F_{pI}$ cambia menos de 1 dB, ambos
niveles superan el fondo en 10 dB. Declara $R_I$ con un decimal junto
a $F_{pI}$ y el índice residual por banda, con $S$, $S_\mathrm{m}$, la distancia
de medición y la sonda (micrófonos y espaciador).

**La superficie (apartado 6.4.1).** La superficie de medición envuelve por
completo el elemento de ensayo. Un elemento alojado en un nicho de más de 0,1 m
de profundidad se mide normalmente sobre la superficie plana de la boca del
nicho; en los demás casos, y para la mayoría de los elementos constructivos
pequeños, la superficie tiene forma de caja. Elige la distancia de medición en
la franja de **0,1 m a 0,3 m**. Por debajo de 0,1 m el campo próximo del
elemento vibrante hace que la intensidad cambie de signo repetidamente y la
integral deja de converger; por encima de 0,3 m una superficie en forma de caja
recoge demasiada sala.

**Cualificar la superficie (apartado 6.4.2).** Mide $L_{I\mathrm{n}}$ y, a ser posible
simultáneamente, el nivel de presión promediado sobre la superficie $L_p$, y
forma el indicador superficial presión-intensidad $F_{pI} = L_p - L_{I\mathrm{n}}$
(Fórmula (10)). La superficie no queda cualificada si la intensidad medida es
negativa, o si $F_{pI} > 10$ dB en un elemento reflectante o $> 6$ dB en uno
con una superficie absorbente mirando al recinto receptor. El remedio está
**ordenado**: primero aumenta la distancia de medición entre 5 cm y 10 cm; solo si
eso falla, añade absorción al recinto receptor. El criterio se aplica por
barrido y por posición de altavoz, y a la superficie *total*, no a las subáreas
individuales (con posiciones discretas, al promedio sobre la superficie). La
regla práctica de la norma para saber cuánta absorción basta es
$S/A < 1{,}25$, con $S$ la superficie de medición y $A$ el área de absorción
del recinto receptor, y cuanta más transmisión por flancos haya, mayor tiene
que ser $A$.

*La cualificación es por banda, y falla justo donde un recinto receptor es
menos absorbente. Aquí las tres bandas más bajas quedan por encima de la línea
de 10 dB, así que la superficie no está cualificada en absoluto para un
elemento reflectante y el barrido todavía no es un resultado; e incluso la
parte cualificada queda por encima de la línea de 6 dB, así que esta superficie
no podría usarse con un elemento de cara absorbente. La norma ordena el
remedio: primero añade de 5 cm a 10 cm de distancia de medición, y solo después
mete absorción en el recinto receptor.*

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

```python

# `np` y `building` son los imports del primer bloque de arriba.

freqs = [100, 125, 160, 200, 250, 315, 400, 500, 630, 800,
         1000, 1250, 1600, 2000, 2500, 3150]
l_p = np.array([64.0, 63.0, 61.5, 59.0, 57.5, 56.0, 55.0, 54.0,
                53.0, 52.0, 51.0, 50.5, 50.0, 50.0, 51.0, 55.0])
l_in_q = np.array([51.5, 51.5, 51.0, 49.5, 49.0, 48.0, 47.5, 47.0,
                   46.5, 45.5, 44.5, 44.0, 43.5, 43.5, 44.5, 48.5])
f_pi = building.surface_pressure_intensity_indicator(l_p, l_in_q)
print(int((f_pi > 10.0).sum()), "bandas incumplen el criterio reflectante")   # 3

fig, ax = plt.subplots()
x = np.arange(len(freqs))
ax.fill_between(x, 0.0, f_pi, where=f_pi > 10.0, alpha=0.25,
                label="superficie no cualificada")
ax.plot(x, f_pi, "-o", label="FpI = Lp - LIn (Fórmula (10))")
ax.axhline(10.0, ls="--", label="10 dB: elemento reflectante (6.4.2)")
ax.axhline(6.0, ls=":", label="6 dB: elemento absorbente")
ax.set_xticks(x, [str(f) for f in freqs], rotation=45, fontsize=8)
ax.set(xlabel="Frecuencia [Hz]",
       ylabel="Indicador superficial presión-intensidad FpI [dB]")
ax.legend()
plt.show()
```

</details>

**El barrido (apartado 6.4.3).** Sostén la sonda **normal** a la superficie,
con su sentido positivo apuntando hacia fuera, en dirección contraria al
elemento. Barre en líneas paralelas, girando en cada borde, con una separación
de líneas normalmente igual a la distancia de medición y más densa donde la
radiación sea irregular (fugas). Mantén la velocidad de barrido constante entre
**0,1 m/s y 0,3 m/s**, haz que el tiempo de barrido de cada subárea sea
proporcional a su área, e interrumpe la medición al pasar de una subárea a la
siguiente en lugar de pararte a mitad de un área. Donde una superficie en forma
de caja se encuentra con el elemento separador, barre lo más cerca posible de
la pared: esa intersección es por donde más fácilmente se pierde potencia
radiada fuera de la integral.

**Dos barridos, no uno (apartado 6.4.5).** Para cada posición fija de altavoz,
realiza **dos barridos completos** con el recorrido girado 90° entre uno y
otro. Si difieren menos de 1,0 dB en todas las bandas, el resultado es su media
aritmética; si alguna banda difiere más, **la medición no es válida**: repite
la pareja y, si sigue fallando, cambia la densidad de líneas, la superficie o
el entorno. Con varias posiciones de altavoz, haz una pareja cualificante para
cada una y declara la media aritmética de todos los barridos. Con altavoz
móvil, cada barrido ocupa un recorrido completo (al menos uno para puertas,
ventanas y elementos pequeños, y dos para paredes), y el tiempo total de
barrido o recorrido por patrón es de al menos 120 s en ventanas, puertas y
elementos pequeños y de al menos 600 s en paredes.

**Posiciones discretas en su lugar (apartado 6.4.4).** Espacia las posiciones
aproximadamente a la distancia de medición, más densas en elementos con fugas o
no homogéneos pero a distancia constante, sigue el procedimiento de grado 2 de
ISO 9614-1 y comprueba la retícula con su Anexo B, y permanece al menos 10 s en
cada posición. Un altavoz móvil necesita al menos dos recorridos sobre el
conjunto completo de posiciones en puertas, ventanas y elementos pequeños, y
ocho en paredes.

**Ruido de fondo (apartado 6.5).** Tanto el nivel de presión como el de
intensidad deben superar el fondo en al menos 10 dB. La prueba que da la propia
norma es elegante: con $F_{pI} < 10$ dB, baja el nivel de la fuente 10 dB; si
$F_{pI}$ se mueve menos de 1 dB, el requisito se cumple.

### Combinar subáreas, y el signo que las acompaña

Un elemento de ensayo grande o no homogéneo se barre como varias subáreas
$S_{\mathrm{m}i}$, y `combine_subareas` hace el promedio energético ponderado por área
de la Fórmula (11) con $S_\mathrm{m} = \sum_i |S_{\mathrm{m}i}|$ (Fórmula (12)). El
apartado 6.4.6 añade la regla que no tiene equivalente en ningún método por
presión: cuando la intensidad neta de una subárea apunta al *lado equivocado*,
con la energía volviendo hacia el objeto de ensayo, delante de ese $S_{\mathrm{m}i}$ va
un signo menos en la Fórmula (11). Exprésalo pasando el área de esa subárea
como número negativo; su energía se resta entonces del numerador mientras $S_\mathrm{m}$
conserva la suma sin signo.

```python
# `np` y `building` son los imports del primer bloque de arriba.

# Tres subáreas de una superficie de 12 m2: los dos acristalamientos y el
# marco. La tira del marco lee un flujo neto entrante, así que su área entra
# negativa en la Fórmula (11).
l_in_sub = np.array([
    np.full(16, 41.0),    # 5.0 m2, hacia fuera
    np.full(16, 39.0),    # 5.5 m2, hacia fuera
    np.full(16, 33.0),    # 1.5 m2, HACIA DENTRO -> área negativa
])
l_in_comb, s_m = building.combine_subareas(l_in_sub, [5.0, 5.5, -1.5])
print(round(float(l_in_comb[0]), 2), s_m)     # 39.36 12.0

# Ignorar el signo infla la potencia transmitida, es decir, baja RI:
l_in_naive, _ = building.combine_subareas(l_in_sub, [5.0, 5.5, 1.5])
print(round(float(l_in_naive[0] - l_in_comb[0]), 2))   # 0.24
```

Una subárea que lee hacia dentro no es una curiosidad que se despache con un
signo. Significa que la superficie envolvente está cortando el campo de algo
que queda *fuera* de ella, un elemento de flanco o una segunda fuente en el
recinto receptor, así que conviene rehacer la cualificación del apartado 6.4.2
antes siquiera de declarar el número. $S_\mathrm{m}$ conserva el área sin signo porque
es el área realmente barrida, que es lo que necesita el término
$10\log_{10}(S_\mathrm{m}/S)$ de $R_I$.

### Parámetros de `intensity_sound_reduction()` / `adaptation_term_kc()`

| Parámetro | Tipo | Unidades | Rango / def. | Notas |
| :--- | :--- | :--- | :--- | :--- |
| `lp1` | array 1D o 2D | dB | uno/banda, o `(posiciones, bandas)` | Nivel de presión del recinto emisor |
| `l_in` | array 1D o 2D | dB | uno/banda, o `(posiciones, bandas)` | Nivel de intensidad normal sobre la superficie |
| `measurement_area` | float | m² | > 0 | Área de la superficie de medición $S_\mathrm{m}$ |
| `area` | float | m² | > 0 | Área del elemento de ensayo $S$ |
| `kc` | array 1D | dB | uno por banda / `None` | Término de adaptación para el índice modificado |
| `frequencies` | array 1D | Hz | > 0 | Frecuencias centrales (`adaptation_term_kc`) |
| `boundary_area` / `volume` | float | m² / m³ | > 0, ambos o ninguno | Sala $S_{\mathrm{b}2}$ / $V_2$ para la Fórmula (B.1) |
| `n` | int | unidades de elemento | ≥ 1, por defecto `1` | Número de elementos idénticos (solo `intensity_element_normalized_difference`) |

`intensity_sound_reduction()` devuelve un `IntensityReductionResult` (`r_i`,
`r_i_modified`, `rating`, `rating_modified`);
`intensity_element_normalized_difference()` un
`IntensityElementNormalizedResult` (`d_i_n_e`, `rating`);
`surface_pressure_intensity_indicator()` devuelve un array y
`combine_subareas()` una pareja `(LIn, Sm)`. Los campos `rating` solo se forman
con exactamente 16 valores de tercio de octava o 5 de octava, y son `None` en
otro caso, así que un barrido tomado sobre el rango completo de ISO 15186-1, de
100 Hz a 5000 Hz (apartado 6.6, 18 bandas), hay que recortarlo al rango de
ISO 717-1 antes de poder valorarlo.

## Informe de ensayo por intensidad de ISO 15186-1 (`.report()`)

`IntensityReductionResult.report()` escribe el informe de ensayo de una página
de ISO 15186-1:2000 del índice de reducción acústica por intensidad $R_I$,
reutilizando la misma disposición acreditada de dos paneles que las fichas de
ISO 10140 e ISO 16283. Como $R_I$ es un índice de reducción acústica ordinario,
su valor único $R_{I,\mathrm{w}}$ es el índice a ruido aéreo de ISO 717-1 evaluado sobre
el espectro por intensidad: la ficha nombra ISO 15186-1 en su línea de base,
tabula $R_I$ con un decimal junto a la curva medida frente a la referencia
desplazada, enmarca `RI,w (C; Ctr)` e imprime la declaración de que la potencia
acústica transmitida se midió directamente sobre la superficie de medición. Con
`verbose=True` se anexa el índice modificado por $K_\mathrm{c}$, $R_{I,\mathrm{M}}$ (Fórmula (9)),
junto a $R_I$ cuando se suministró un término de adaptación.

Los campos aplicables de `ReportMetadata` describen la medición por intensidad:
`specimen` (el elemento ensayado), `area` (superficie de la muestra $S$),
`client`, `manufacturer`, `test_room`, `laboratory`, `operator`, `report_id` y
`test_date`, además de los campos de sala/clima compartidos con las demás
fichas de aislamiento. No hay un campo específico para la geometría de la
superficie de medición ni para el método de adquisición por barrido o por
puntos discretos; anótalos en `notes` y nombra la norma en
`measurement_standard` (`"ISO 15186-1"`). El veredicto frente al requisito,
`language="es"` y el extra `phonometry[report]` se comportan igual que en las
fichas hermanas.

```python

from phonometry import building, ReportMetadata

freqs = np.array([100, 125, 160, 200, 250, 315, 400, 500, 630, 800,
                  1000, 1250, 1600, 2000, 2500, 3150], dtype=float)
lp1, sm, s = 85.0, 12.0, 10.0
l_in = np.array([57.8, 61.9, 60.5, 55.6, 55.8, 55.5, 53.4, 51.6,
                 50.2, 47.7, 46.4, 45.7, 44.8, 45.2, 47.2, 52.7])
kc = building.adaptation_term_kc(freqs)                 # Anexo B, Fórmula (B.2)
res = building.intensity_sound_reduction(
    np.full(16, lp1), l_in, measurement_area=sm, area=s, kc=kc
)
metadata = ReportMetadata(
    specimen="Muro de bloque de hormigón celular curado en autoclave de 100 mm",
    area=10.0, measurement_standard="ISO 15186-1",
    test_room="Suite de transmisión (ejemplo)",
    laboratory="Laboratorio de referencia Phonometry",
    report_id="PHN-2026-0150",
    requirement=30.0,                                   # RI,w >= 30 dB -> CUMPLE
)
res.report("RIw.pdf", metadata=metadata)                # RI,w (C; Ctr)
res.report("RIw_kc.pdf", metadata=metadata, verbose=True)  # f | RI | RI,M
```

La ficha de ejemplo se regenera con `make reports` y se conserva en el
repositorio. Pulsa la vista previa para abrir el PDF:

## Elementos constructivos pequeños: la diferencia de niveles normalizada de elemento

Para un **elemento constructivo pequeño** (un aireador, una caja de enchufe, una
ventana pequeña) el método por intensidad informa en su lugar de la diferencia
de niveles normalizada de elementos $D_{I,\mathrm{n,e}}$ (Fórmula (8)), normalizada al área
de absorción de referencia $A_0 = 10\ \text{m}^2$.
`IntensityElementNormalizedResult.report()` escribe la misma ficha de una página
a través del renderizador compartido, con `DI,n,e,w (C; Ctr)` en un recuadro
evaluado según ISO 717-1; `verbose=True` muestra la evaluación ISO 717 por
banda y un `requirement` añade un veredicto CUMPLE/NO CUMPLE (el aislamiento
del elemento cumple igualando o superando el objetivo).

```python

from phonometry import building, ReportMetadata

lp1, sm, n = 85.0, 12.0, 1                              # NPS fuente, superficie, unidades
l_in = np.array([57.9, 62.0, 60.6, 55.7, 55.9, 55.6, 53.5, 51.7,
                 50.3, 47.8, 46.5, 45.8, 44.9, 45.3, 47.3, 52.8])
res = building.intensity_element_normalized_difference(
    np.full(16, lp1), l_in, measurement_area=sm, n=n
)
metadata = ReportMetadata(
    specimen="Aireador en un muro de fábrica de 100 mm",
    measurement_standard="ISO 15186-1",
    laboratory="Laboratorio de referencia Phonometry",
    report_id="PHN-2026-0151",
    requirement=30.0,                                   # DI,n,e,w >= 30 dB -> CUMPLE
)
res.plot()   # DI,n,e frente a la referencia ISO 717-1 desplazada (requiere matplotlib)
res.report("DIne.pdf", metadata=metadata)               # DI,n,e,w (C; Ctr)
```

*El elemento pequeño se evalúa exactamente como un muro: $D_{I,\mathrm{n,e}}$
alimenta el motor de ISO 717-1 y las desviaciones desfavorables (referencia
por encima de la medición) fijan $D_{I,\mathrm{n,e,w}}$. La normalización
$10\log_{10}(S_\mathrm{m}/A_0)$ sustituye al término de superficie de la muestra, de modo
que el número describe el elemento con independencia del muro en el que se
monte.*

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

```python

from phonometry import building

# Un aireador en un muro de fábrica: NPS del recinto emisor de 85 dB y el
# nivel de intensidad normal sobre la superficie de medición Sm = 12 m2.
l_in = np.array([57.9, 62.0, 60.6, 55.7, 55.9, 55.6, 53.5, 51.7,
                 50.3, 47.8, 46.5, 45.8, 44.9, 45.3, 47.3, 52.8])
res = building.intensity_element_normalized_difference(
    np.full(16, 85.0), l_in, measurement_area=12.0, n=1
)

# Una línea: DI,n,e frente a la referencia ISO 717-1 desplazada:
res.plot(language="es")
plt.show()

# A mano, desde el índice que porta el resultado:
w = res.rating
fig, ax = plt.subplots()
ax.semilogx(w.band_centers, res.d_i_n_e, "o-", label="DI,n,e (elemento)")
ax.semilogx(w.band_centers, w.shifted_reference, "s--",
            label="referencia desplazada")
ax.fill_between(w.band_centers, w.measured, w.shifted_reference,
                where=w.measured < w.shifted_reference, interpolate=True,
                alpha=0.3, label="desviaciones desfavorables")
ax.set_xlabel("Frecuencia [Hz]")
ax.set_ylabel("Diferencia de niveles normalizada de elemento [dB]")
ax.set_title(f"DI,n,e,w = {w.rating} dB  (C={w.c:+d}; Ctr={w.ctr:+d})")
ax.legend()
plt.show()
```

</details>

## ¿Laboratorio o campo? (ISO 15186-2)

La parte 1 es un método de laboratorio: el elemento de ensayo ocupa una abertura de
ensayo entre dos recintos, y los flancos suprimidos de la instalación hacen de
$R_I$ una propiedad del elemento. ISO 15186-2 lleva la misma sonda, el mismo
barrido de superficie y la misma fórmula al edificio terminado, donde el
resultado es el índice aparente $R'_I$ del elemento instalado, con su
radiación por flancos incluida. La selectividad que motivó el método en el
laboratorio se duplica en campo: como la sonda lee solo lo que radia su
superficie de medición, las superficies parciales aíslan qué elemento (la
propia pared, una ventana, una unión con fugas) transporta la potencia
transmitida, algo que ningún método de campo por presión puede resolver.
Cualifica cada barrido con el mismo indicador presión-intensidad, y cuenta
con que los límites de la propia sonda (el
[error de fase del espaciador](/phonometry/es/devices/emission/intensity/)) fijen el
rango útil en baja frecuencia.

## Baja frecuencia: la presión sobre el elemento de ensayo (ISO 15186-3)

Las dos partes anteriores ponen el micrófono emisor en el *recinto*, y por
debajo de 100 Hz ahí es justo donde un recinto emisor deja de poder responder.
Un recinto que un laboratorio pueda construir tiene demasiado pocos modos a
esas frecuencias para que un promedio espacial describa el campo que excita al
elemento: se mueven los micrófonos y se mueve el promedio con ellos. La ISO
15186-3 mantiene la sonda de intensidad en el lado receptor y cambia el otro
extremo de la medición: el nivel del recinto emisor se lee **sobre la propia
superficie del elemento de ensayo**, con micrófonos fijos a menos de 50 mm de
ella (apartado 6.3):

$$
R_I = L_{p\mathrm{S}} - 9 - \left[ L_{I\mathrm{n}} + 10\lg\frac{S_\mathrm{m}}{S} \right]\ \mathrm{dB}
$$

**Nueve decibelios, no seis.** Esa sola constante es toda la diferencia con la
parte 1. Cerca de una frontera rígida un campo difuso lleva el doble de
presión cuadrática media que lejos de ella, así que un micrófono a 50 mm del
elemento lee 3 dB por encima del promedio de recinto de ese mismo campo. El
promedio de recinto de la parte 1 no arrastra esa acumulación y resta 6; el
promedio de superficie sí la arrastra y resta 9. Todo lo demás de la fórmula
(la razón de áreas, el signo de la intensidad, la combinación de subáreas) es
el método que ya se tiene.

El precio es una condición de validez que la parte 1 no tiene. La duplicación
solo vale 3 dB si la superficie refleja, así que una NOTA bajo la Fórmula (7)
la acota: la fórmula vale para un elemento con superficie reflectante en el
recinto emisor, sigue funcionando con superficies moderadamente absorbentes
(100 mm de absorbente poroso), conviene leerla solo de 50 Hz a 80 Hz tras 100
a 200 mm de absorbente, y no es válida tras nada más grueso. La biblioteca no
ve el elemento, así que esto queda de tu lado.

**Cuántos micrófonos (apartado 6.3).** Repartidos de manera uniforme pero
*asimétrica* por toda la superficie, bordes y esquinas incluidos, con al menos
30 s de integración cada uno:

| Elemento de ensayo | Mínimo de posiciones fijas de micrófono |
| :--- | :--- |
| Elementos constructivos pequeños (ISO 140-10) | 2 por cada elemento montado en la pared de ensayo |
| Otros elementos de hasta 3 m² | 6 |
| Los demás | 12 |

**Las bandas.** El apartado 6.6 exige filtros en 50 Hz, 63 Hz y 80 Hz y admite
añadir 100 Hz, 125 Hz y 160 Hz; el techo es del apartado 1.1, que aplica esta
parte de 50 Hz a 160 Hz y dice que está pensada sobre todo para el rango de
50 Hz a 80 Hz. Seis bandas son todo el método, y por eso de él no sale ningún
índice global: ISO 717-1 necesita dieciséis. Pasar una banda fuera de ese
rango se rechaza en lugar de extrapolarse, y el apartado 1.1 dice qué hacer en
su lugar: combinar estos resultados con los de la ISO 140-3 y la ISO 15186-1
en una sola curva de 50 Hz a 5000 Hz.

**Cualificar la superficie (apartado 6.4.2).** El indicador es el mismo
$F_{pI} = L_p - L_{I\mathrm{n}}$ que en el resto de la serie, y sus dos niveles se
leen sobre la superficie de medición en el recinto *receptor*: no es el nivel
de superficie con el que se construye la Fórmula (7). Los límites distinguen
el elemento, no el recinto: $F_{pI} > 10$ dB rechaza un elemento reflectante y
$F_{pI} > 6$ dB uno que presenta una superficie absorbente en el recinto
receptor, que es el caso de dos caras absorbentes, porque un elemento
absorbente por una sola cara se monta con esa cara hacia el emisor (apartado
5.3). El recinto receptor lleva siempre un absorbente eficaz en la pared
opuesta al elemento; eso es un requisito de la instalación, no un caso. El
apartado 6.5 añade el margen de 10 dB sobre el ruido de fondo y su propia
prueba: con $F_{pI} < 10$ dB, se baja la fuente 10 dB, y si $F_{pI}$ cambia menos
de 1 dB el requisito se cumple.

Como la norma solo pide esa segunda medición de presión «si es posible», aquí
`l_p` es opcional. Sin ella no hay indicador ni veredicto, y el resultado lo
dice en vez de suponerlo:

```python

from phonometry import building

# Un tabique ligero, 10 m2, barrido sobre una superficie de caja de 12,6 m2.
# LpS es el promedio sobre la superficie del elemento en el recinto emisor;
# LIn y Lp se leen juntos sobre la superficie de medición en el receptor.
freqs = [50.0, 63.0, 80.0, 100.0, 125.0, 160.0]
lp_superficie = np.array([88.4, 89.1, 90.3, 91.0, 91.4, 91.8])
l_in = np.array([61.6, 60.9, 59.8, 57.9, 56.0, 53.9])
l_p = np.array([74.0, 72.0, 69.4, 66.1, 63.1, 60.3])

res = building.low_frequency_intensity_reduction(
    lp_superficie, l_in, measurement_area=12.6, area=10.0,
    l_p=l_p, frequencies=freqs,
)
print(np.round(res.r_i, 1))                         # [16.8 18.2 20.5 23.1 25.4 27.9]
print(np.round(res.surface_pressure_intensity_indicator, 1))  # [12.4 11.1  9.6  8.2  7.1  6.4]
print(res.qualified.tolist())   # [False, False, True, True, True, True]
print(res.indicator_limit)      # 10.0

# Sin la presión del lado receptor no hay respuesta del 6.4.2 en absoluto.
desnudo = building.low_frequency_intensity_reduction(
    lp_superficie, l_in, measurement_area=12.6, area=10.0, frequencies=freqs,
)
print(desnudo.surface_pressure_intensity_indicator, desnudo.qualified)   # None None
```

Una banda rechazada se marca, no se descarta. La respuesta de la norma a un
$F_{pI}$ por encima del límite es mejorar el entorno de medición: aumentar
primero la distancia de medición entre 5 y 10 cm, luego reducir los flancos o
mejorar el absorbente opuesto. Por eso el índice se calcula igual y el
veredicto viaja a su lado.

*A la izquierda, la medición: el índice sube a lo largo de las seis bandas
mientras el indicador cae por debajo de su límite, así que las dos bandas más
bajas se calculan pero no quedan cualificadas. A la derecha, la instalación:
la curva calculada del panel flexible del anexo A y los 4 dB a cada lado
dentro de los que ha de quedar una medición.*

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

```python

# res es el LowFrequencyIntensityResult calculado arriba. Una línea:
res.plot(language="es")   # barras de RI, bandas rechazadas rayadas, FpI y su límite
plt.show()

# A mano, y el panel del anexo A al lado.
calculado = building.limp_panel_reduction_index(
    freqs, surface_mass=10.0, area=10.0, temperature_c=23.0,
)
medido = calculado + np.array([2.6, -1.8, 1.1, -2.9, 0.7, -1.4])
x = np.arange(len(freqs))
fig, (axi, axd) = plt.subplots(1, 2, figsize=(13.0, 5.6))
barras = axi.bar(x, res.r_i, width=0.68)
for barra, ok in zip(barras, res.qualified, strict=True):
    if not ok:
        barra.set_hatch("///")
axi.set_xticks(x, [f"{f:g}" for f in freqs])
axi.set(xlabel="Frecuencia [Hz]", ylabel="Índice de reducción acústica [dB]")
gemelo = axi.twinx()
gemelo.plot(x, res.surface_pressure_intensity_indicator, "-o", color="#2ca02c", label="FpI")
gemelo.axhline(res.indicator_limit, ls="--", color="#d62728", label="límite de FpI")
gemelo.set_ylabel("Indicador presión-intensidad superficial [dB]")
gemelo.legend()
axd.fill_between(x, calculado - 4.0, calculado + 4.0, alpha=0.2,
                 label="tolerancia de 4,0 dB (anexo A)")
axd.plot(x, calculado, "-o", label="calculado (A.1)")
axd.plot(x, medido, "--s", label="medido")
axd.set_xticks(x, [f"{f:g}" for f in freqs])
axd.set(xlabel="Frecuencia [Hz]", ylabel="Índice de reducción acústica [dB]")
axd.legend()
plt.show()
```

</details>

### Elementos pequeños a baja frecuencia, y un signo en el que la serie se contradice

La Fórmula (8) normaliza un elemento pequeño al área de absorción de
referencia $A_0 = 10$ m² igual que la parte 1, con los 9 dB de la medición de
superficie en lugar de 6:

$$
D_{I\mathrm{n,e}} = L_{p\mathrm{S}} - 9 - \left[ L_{I\mathrm{n}} - 10\lg\frac{A_0}{S_\mathrm{m}} - 10\lg N \right]\ \mathrm{dB}
$$

Conviene leer el corchete con cuidado. El $10\lg N$ de dentro va *restado*, así
que el término llega a $D_{I\mathrm{n,e}}$ **sumado**, que es el signo que deduce esta
biblioteca y el contrario del que imprime la ISO 15186-1 para la misma
magnitud. Dos partes de una misma serie imprimen los dos signos; este es el
que concuerda con la física (instalar $N$ unidades eleva la potencia
transmitida en $10\lg N$, así que recuperar la cifra por unidad tiene que
volver a sumarlo) y con la Fórmula (6) de la ISO 10140-2, basada en presión.
Lo impreso en la parte 1 está registrado en
[ERRATA](/phonometry/es/reference/errata/), y su implementación avisa siempre
que $N > 1$ la enfrenta a su propia página. Aquí no avisa nada, porque aquí la
página y la física coinciden.

```python
# Cuatro aireadores idénticos dentro de una superficie de medición de 2,0 m2.
elemento = building.low_frequency_element_normalized_difference(
    np.full(6, 90.0), np.array([62.0, 61.0, 60.0, 58.0, 57.0, 55.0]),
    measurement_area=2.0, elements=4, frequencies=freqs,
)
print(np.round(elemento.d_i_n_e, 1))     # [32. 33. 34. 36. 37. 39.]
print(elemento.elements)                 # 4
```

### Cualificar la instalación (anexo A)

El anexo A es normativo, y es lo que hace un laboratorio antes de informar de
nada: medir un panel flexible de más de 1 m², calcular lo que debería leer y
exigir que ambos concuerden dentro de **4,0 dB** de 50 Hz a 160 Hz. La mitad
calculada es transmisión forzada y nada más: ley de masa reducida por la
eficiencia de radiación de una placa excitada por un campo difuso,

$$
R = R_0 - 10\lg 2\sigma_\mathrm{d}, \qquad
R_0 = 20\lg\frac{\pi f m}{\rho c}, \qquad
\sigma_\mathrm{d} = \tfrac{1}{2}\left[0{,}20 + \ln\left(2\pi\frac{f}{c}\sqrt{S}\right)\right]
$$

con el aire tomado en el clima del ensayo,
$\rho c = 427\sqrt{273/(273+\theta)}\cdot B/B_0$ y $c = 331 + 0{,}6\,\theta$. El
panel es flexible *por hipótesis*. El techo de 160 Hz no es del anexo: el
apartado 1.1 aplica toda esta parte de 50 Hz a 160 Hz, y dice que está pensada
sobre todo para el rango de 50 Hz a 80 Hz.

```python
# Anexo A, Tabla A.1: cartón-yeso de 12,5 mm, 10 kg/m2, sobre un hueco de
# 10 m2, a 1 013 hPa y 23 grados Celsius.
calc = building.limp_panel_reduction_index(
    freqs, surface_mass=10.0, area=10.0,
    temperature_c=23.0, static_pressure_pa=101300.0,
)
print(np.round(calc, 1))    # [10.7 11.9 13.4 14.8 16.3 17.9]
```

Esos seis valores son la tabla impresa, banda por banda, y son el ancla de
conformidad de las cinco fórmulas. La columna del sándwich de acero que va a
su lado en la misma tabla no lo es: ninguna lectura de los datos impresos junto
a ella la reproduce, y la que lo haría mueve a la vez un área y una masa
superficial, y esa masa sale mayor que la del acero macizo del espesor
declarado. Está registrada en
[ERRATA](/phonometry/es/reference/errata/) y a propósito no se usa como
oráculo.

### Parámetros de `low_frequency_intensity_reduction()`, `low_frequency_element_normalized_difference()` y `limp_panel_reduction_index()`

| Parámetro | Tipo | Unidades | Rango / defecto | Notas |
| :--- | :--- | :--- | :--- | :--- |
| `lp_surface` | array 1D o 2D | dB | uno/banda, o `(posiciones, bandas)` | Presión sobre la superficie del elemento, $L_{p\mathrm{S}}$ |
| `l_in` | array 1D o 2D | dB | uno/banda, o `(posiciones, bandas)` | Nivel de intensidad normal sobre la superficie de medición |
| `measurement_area` | float | m² | > 0 | Área de la superficie de medición $S_\mathrm{m}$ |
| `area` | float | m² | > 0 | Área del elemento $S$; el panel flexible del anexo A exige $S \\geq 1$ m² |
| `l_p` | array 1D o 2D | dB | uno/banda / `None` | Presión del lado receptor sobre la superficie de medición, para la Fórmula (5) |
| `frequencies` | array 1D | Hz | 50 a 160 / `None` | Frecuencias centrales; el apartado 6.6 no admite otras |
| `absorbing_specimen_surface` | bool | — | defecto `False` | `True` estrecha el límite del 6.4.2 a 6 dB |
| `elements` | int | unidades | ≥ 1, defecto `1` | Número $N$ de unidades (solo `low_frequency_element_normalized_difference`) |
| `surface_mass` | float | kg/m² | > 0 | Masa superficial $m$ del panel flexible (`limp_panel_reduction_index`) |
| `temperature_c` / `static_pressure_pa` | float | °C / Pa | defecto 23 °C, 101 300 Pa | El clima de las Fórmulas (A.4) y (A.5) |

`low_frequency_intensity_reduction()` devuelve un
`LowFrequencyIntensityResult` (`r_i`, `surface_pressure_intensity_indicator`,
`qualified`, `indicator_limit`),
`low_frequency_element_normalized_difference()` un
`LowFrequencyElementResult` (`d_i_n_e` y los tres mismos), y
`limp_panel_reduction_index()` un array a secas. Ninguno de los dos resultados
lleva índice global: el apartado 7 pide el índice con un decimal junto al
indicador, y seis bandas no dan de comer a la ISO 717-1.

## Qué cubre esta guía

El índice de reducción acústica por intensidad $R_I$ de ISO 15186-1:2000
(apartado 3.8), su $R_{I,\mathrm{M}}$ modificado con $K_\mathrm{c}$ (Anexo B) y la $D_{I,\mathrm{n,e}}$
normalizada de elemento (apartado 3.9), con la combinación de subáreas de las
Fórmulas (11)-(12) y el indicador presión-intensidad de la superficie,
mediante `building.intensity_sound_reduction`, `building.adaptation_term_kc`,
`building.intensity_element_normalized_difference`,
`building.surface_pressure_intensity_indicator` y `building.combine_subareas`;
los índices globales reutilizan el motor verificado de ISO 717-1, y ambos
resultados escriben la ficha de ensayo de una página con `.report()`. También
está cubierta la variante de baja frecuencia de ISO 15186-3:2002: el índice de
superficie $R_I$ de la Fórmula (7), la $D_{I\mathrm{n,e}}$ normalizada de
elemento de la Fórmula (8), la cualificación del apartado 6.4.2 contra sus dos
límites, el rango de bandas del 6.6 y la cualificación normativa por panel
flexible del anexo A, mediante
`building.low_frequency_intensity_reduction`,
`building.low_frequency_element_normalized_difference` y
`building.limp_panel_reduction_index`.

La propia medición de intensidad acústica (la sonda de barrido, la adquisición
con dos micrófonos y la calibración del desajuste de fase tras $L_{p1}$ y
$L_{I\mathrm{n}}$) no está implementada: ambos niveles se toman como entradas ya
medidas, y la ficha de ISO 15186-1 declara explícitamente que no tiene campo
para la geometría de la superficie de medición ni para el método de
adquisición por barrido o por puntos discretos. Aquí tampoco se impone la
adquisición del apartado 6.4 documentada más arriba: la separación de 0,1 a
0,3 m, la velocidad de barrido de 0,1 a 0,3 m/s, el segundo barrido girado 90°
y su prueba de validez de 1,0 dB, el margen de 10 dB sobre el ruido de fondo.
Un solo barrido produce un número igual de fácilmente que una pareja
cualificada. Tampoco está implementado el procedimiento de campo propio de
ISO 15186-2 (posiciones de altavoz, los casos de fachada): las fórmulas de
esta página se aplican sin cambios a datos de campo, pero nada comprueba cómo
se adquirieron. Lo mismo vale para el procedimiento de la parte 3: los
recuentos de micrófonos de su Tabla 1, la separación de 50 mm, los dos
barridos girados 90° y su prueba de concordancia de 2,0 dB / 1,0 dB, el margen
de 10 dB sobre el fondo y los límites de absorción del recinto emisor bajo la
Fórmula (7) están documentados más arriba y no se imponen en ninguna parte.
Los resultados de la parte 3 no llevan índice global ni ficha `.report()`,
porque seis bandas no dan de comer a la ISO 717-1 y el informe de su apartado
8 no tiene aquí forma trabajada.

## Véase también

- [Medición del aislamiento en laboratorio](/phonometry/es/buildings/insulation/insulation-lab/):
  el método por presión de ISO 10140 que la adaptación $K_\mathrm{c}$ reproduce.
- [Medición del aislamiento en campo (ISO 16283)](/phonometry/es/buildings/insulation/insulation-field/):
  las magnitudes de campo por presión y sus índices globales.
- [Índices globales de aislamiento (ISO 717)](/phonometry/es/buildings/insulation/insulation-ratings/):
  el motor de curva de referencia tras $R_{I,\mathrm{w}}$ y $D_{I,\mathrm{n,e,w}}$.
- [Intensidad acústica](/phonometry/es/devices/emission/intensity/): la sonda de dos
  micrófonos, sus indicadores de campo y la cualificación por índice
  residual tras cada barrido.
- [Teoría](/phonometry/es/reference/theory/rooms-buildings/): la derivación
  de la curva de referencia tras los índices globales ponderados.
- Referencia de la API: [`building.measurement.intensity_insulation`](/phonometry/es/reference/api/building/intensity-insulation/).
