<!-- canonical: https://jmrplens.github.io/phonometry/es/buildings/insulation/spanish-building-code/ -->
Source: https://jmrplens.github.io/phonometry/es/buildings/insulation/spanish-building-code/

El Documento Básico HR «Protección frente al ruido» del Código Técnico de la
Edificación enuncia sus exigencias en magnitudes globales ponderadas A que son
parientes cercanas, pero no idénticas, de las magnitudes globales de ISO 717-1:
$R_\mathrm{A}$, $R_\mathrm{A,tr}$, $D_\mathrm{nT,A}$ y $D_{2\mathrm{m,nT,Atr}}$. Esta página implementa la vía
directa del anejo A, que es la normativa para el DB HR, las tablas de
exigencias del apartado 2 y los dos cálculos de proyecto que más se usan con
ellas: la corrección por tamaño de ventana y el aislamiento de una fachada
mixta.

Los espectros por bandas que consume salen de la medición en campo o de la
predicción; el motor de curva de referencia de ISO 717, con el que conviene no
confundirlo, está en
[Índices globales de aislamiento (ISO 717)](/phonometry/es/buildings/insulation/insulation-ratings/).

## El índice global del anejo A

En lugar de desplazar una curva de referencia, el DB HR pondera el aislamiento
medido por bandas con un espectro normalizado de la fuente y lo suma
energéticamente (fórmulas A.5 a A.7):

$$
I_x = -10 \log_{10} \sum_i 10^{(L_{x,i} - X_i)/10} \quad \text{[dBA]}
$$

donde $X_i$ es el aislamiento de la banda (el índice de reducción acústica $R$
o $R'$, la diferencia de niveles estandarizada $D_\mathrm{nT}$, $D_{2\mathrm{m,nT}}$, etc.) y
$L_{x,i}$ el espectro normalizado de la fuente. La suma recorre **dieciocho**
bandas de tercio de octava, de 100 Hz a 5 kHz, dos más que las dieciséis de
ISO 717-1 (100 Hz a 3150 Hz): las bandas de 4 kHz y 5 kHz, que son la primera
razón por la que las dos vías no dan siempre lo mismo. Los centros de banda
están en `DB_HR_FREQUENCIES`.

| Espectro normalizado | Tabla del anejo A | Magnitud que define | Expresión |
| :--- | :--- | :--- | :--- |
| Ruido rosa ponderado A, $L_{\mathrm{Ar},i}$ | Tabla A.5 | $R_\mathrm{A}$, $D_\mathrm{nT,A}$, $D_{2\mathrm{m,nT,A}}$ | (A.5), (A.7) |
| Ruido de automóviles, $L_{\mathrm{Atr},i}$ | Tabla A.3 | $R_\mathrm{A,tr}$, $D_{2\mathrm{m,nT,Atr}}$ | (A.6) |
| Ruido ferroviario, $L_{\mathrm{Aef},i}$ | Tabla A.4 (numéricamente igual a la A.3) | $D_{2\mathrm{m,nT,A}}$ | (A.5) |
| Ruido de aeronaves, $L_{\mathrm{Aav},i}$ | Tabla A.2 | $D_{2\mathrm{m,nT,Atr}}$ | (A.6) |

La fila del ferrocarril conviene leerla dos veces. El apartado 3.1.3.4 punto 1
dice que cuando el ruido exterior dominante es el ferroviario la fachada se
valora con la magnitud $D_{2\mathrm{m,nT,A}}$ por la expresión (A.5), y que solo el
ruido de automóviles y el de aeronaves dan $D_{2\mathrm{m,nT,Atr}}$ por la (A.6); la
tabla H.1 recoge el mismo reparto. Como la tabla A.4 es cifra por cifra la
tabla A.3, una fachada con ferrocarril dominante sale con el mismo *número*
que una de automóviles, pero la magnitud en la que se expresan la exigencia y
el informe no es la misma. Por eso `d2m_nt_a()` y `d2m_nt_atr()` son dos
funciones distintas y cada una rechaza los espectros de la otra, en lugar de
una sola con un conmutador de espectro que pondría en silencio el nombre
equivocado en el resultado.

Los cuatro están en `DB_HR_NORMALISED_SPECTRA` con las claves `"pink"`,
`"traffic"`, `"railway"` y `"aircraft"`. El siguiente cálculo reproduce el
ejemplo 7.2 del *Manual*, el índice de reducción acústica aparente $R'$ de una
medianería tomado de un informe de ensayo en campo real:

```python
from phonometry import building

r_prime = [36.2, 41.5, 36.9, 40.4, 44.7, 42.4, 45.7, 46.1, 47.1,
           52.3, 54.3, 57.5, 57.8, 57.3, 59.0, 62.8, 64.7, 65.3]
index = building.ra(r_prime)
index.value        # 51,44 dBA
index.intermediate # 51,4 dBA, el valor intermedio con un decimal
index.reported     # 51 dBA, el entero que define la exigencia
```

*`DbHrGlobalIndexResult.plot()` dibuja el aislamiento por bandas junto con el
nivel transmitido ponderado por el espectro normalizado. Lo interesante es la
segunda curva: enseña de un vistazo qué bandas cargan con la suma energética y,
por tanto, dónde hay que mejorar el elemento. Aquí el nivel transmitido
ponderado tiene su máximo en las bandas graves, donde `R'` es más flojo, así
que el índice de 51,4 dBA se decide bastante por debajo de 500 Hz.*

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

```python

from phonometry import building

r_prime = [36.2, 41.5, 36.9, 40.4, 44.7, 42.4, 45.7, 46.1, 47.1,
           52.3, 54.3, 57.5, 57.8, 57.3, 59.0, 62.8, 64.7, 65.3]

building.ra(r_prime).plot(language="es")
plt.show()
```

</details>

`ra()`, `ra_tr()`, `dnt_a()`, `d2m_nt_a()` y `d2m_nt_atr()` son atajos con nombre sobre
`db_hr_global_index()`, que acepta cualquier espectro y, con el argumento
`frequencies`, selecciona las dieciocho bandas del DB HR de una serie más
larga.

## Redondeo y relación con la vía de ISO 717

El apartado 3.1.3.1 punto 4 del DB HR exige expresar redondeados a números
enteros los valores finales de las magnitudes que definen las exigencias,
mientras que los valores intermedios se manejan con un decimal. Por eso el
resultado expone las tres formas: `.value` (sin redondear), `.intermediate`
(un decimal) y `.reported` (el entero de la comprobación).

El DB HR y la ISO 717-1 llegan al mismo sitio por caminos distintos, y el
anejo H del propio documento admite tres aproximaciones mientras la diferencia
entre ambas vías sea menor que 1 dB:

$$
D_\mathrm{nT,A} \approx D_\mathrm{nT,w} + C \quad (H.1), \qquad
D_{2\mathrm{m,nT,A}} \approx D_{2\mathrm{m,nT,w}} + C \quad (H.2), \qquad
D_{2\mathrm{m,nT,Atr}} \approx D_{2\mathrm{m,nT,w}} + C_\mathrm{tr} \quad (H.3)
$$

donde la (H.2) cubre el caso de ferrocarril dominante del apartado anterior.
En los dos espectros publicados que reproduce esta página, la coincidencia es
exacta al entero:

| Caso | Vía directa (anejo A) | Vía ISO 717-1 | ¿Publicado? |
| :--- | :--- | :--- | :--- |
| Elemento de separación del ejemplo 7.2 | $R'_\mathrm{A} = 51{,}4$ dBA, redondeado 51 | $R'_\mathrm{w} = 52$ con $C_{100-5000} = -1$, o sea 51 | sí, el ejemplo 7.1 imprime $R'_\mathrm{w} = 52$, $C = -1$ y los 51 dBA |
| Fachada del ejercicio 7.1 | $D_{2\mathrm{m,nT,Atr}} = 32{,}8$ dBA, redondeado 33 | $D_{2\mathrm{m,nT,w}} = 38$ con $C_{\mathrm{tr},100-5000} = -5$, o sea 33 | no, el libro no imprime ni el 38 ni el $-5$ |

Las dos filas no tienen la misma fuerza probatoria. La del elemento de
separación es una comprobación externa real, porque el *Manual* imprime
también los números de la ISO 717-1. De la fachada el libro solo publica los
32,8 dBA; el 38 y el $-5$ salen del propio motor ISO 717-1 de esta biblioteca,
así que esa fila enseña las dos vías coincidiendo entre sí, no coincidiendo
con una fuente.

La trampa real está en el nombre de los términos de adaptación espectral. El
anejo H los escribe como $C$ y $C_\mathrm{tr}$ a secas y remite su definición a la
UNE-EN ISO 717-1 sin acotar el rango de frecuencias. Como los índices del
DB HR llegan a 5 kHz y el rango básico de la ISO 717-1 se detiene en 3150 Hz,
los términos que hacen salir bien las expresiones (H.1) a (H.3) son los de
**rango ampliado** $C_{100-5000}$ y $C_{\mathrm{tr},100-5000}$; esa lectura no está en
el anejo H, sino en el *Manual*, en la nota a las expresiones [7.15] y [7.16].
Y tiene consecuencias: en la fachada del ejercicio 7.1 el $C$ del rango básico
vale $-2$ y el $C_{100-5000}$ vale $-1$, de modo que tomar el que no es da
36 dBA en lugar de 37 para el $D_{2\mathrm{m,nT,A}}$ de esa fachada. En ese mismo
elemento de ensayo $C_\mathrm{tr}$ y $C_{\mathrm{tr},100-5000}$ valen los dos $-5$, así que el
$D_{2\mathrm{m,nT,Atr}}$ que el DB HR exige de verdad no llega a distinguir entre las
dos lecturas.

```python
from phonometry import building, weighted_rating_extended

d2m_nt = [28.5, 28.5, 18.9, 23.7, 30.7, 31.3, 37.8, 35.2, 34.7,
          38.5, 37.7, 43.1, 42.3, 44.2, 41.9, 37.5, 39.4, 41.5]

direct = building.d2m_nt_atr(d2m_nt)
direct.intermediate, direct.reported   # 32,8 dBA -> 33 dBA

iso = weighted_rating_extended(d2m_nt, building.DB_HR_FREQUENCIES)
iso.rating, iso.ctr_100_5000           # 38 dB, -5 dB -> 33 dBA, la misma cifra
iso.c, iso.c_100_5000                  # -2 y -1: el rango básico frente al ampliado
```

## Las exigencias del apartado 2

El DB HR fija sus exigencias sobre dos tipos de recinto: el **recinto
protegido** (un recinto habitable con una protección acústica reforzada:
dormitorios, estancias, aulas, quirófanos, despachos profesionales) y el
**recinto habitable** en general.

**Fachadas (Tabla 2.1).** La exigencia sobre $D_{2\mathrm{m,nT,Atr}}$ se lee por
franjas del índice de ruido día $L_\mathrm{d}$ del emplazamiento
($L_\mathrm{d} \le 60$, $60 < L_\mathrm{d} \le 65$, $65 < L_\mathrm{d} \le 70$, $70 < L_\mathrm{d} \le 75$ y
$L_\mathrm{d} > 75$ dBA):

| Uso | Recinto | `db_hr_facade_requirement(ld, use, room)` | $\le 60$ | 60-65 | 65-70 | 70-75 | $> 75$ |
| :--- | :--- | :--- | ---: | ---: | ---: | ---: | ---: |
| Residencial, hospitalario | Dormitorios | `"residential"`, `"bedrooms"` | 30 | 32 | 37 | 42 | 47 |
| Residencial, hospitalario | Estancias | `"residential"`, `"living"` | 30 | 30 | 32 | 37 | 42 |
| Cultural, sanitario, docente, administrativo | Estancias | `"cultural"`, `"living"` | 30 | 32 | 37 | 42 | 47 |
| Cultural, sanitario, docente, administrativo | Aulas | `"educational"`, `"classrooms"` | 30 | 30 | 32 | 37 | 42 |

La misma palabra significa cosas distintas en los dos grupos de uso, y por eso
la columna única de «uso y recinto» de la tabla impresa se malinterpreta con
facilidad: las *estancias* llevan la fila más estricta bajo un uso cultural o
docente y la más benévola bajo un uso residencial.

Tres reglas modifican la lectura: una fachada que no esté directamente
expuesta al ruido dominante (un patio cerrado, un entorno tranquilo) se evalúa
con $L_\mathrm{d}$ reducido en 10 dBA, donde el ruido dominante es el de aeronaves el
valor de la tabla se incrementa en 4 dBA, y cuando no existe un $L_\mathrm{d}$ oficial
del emplazamiento se adopta 60 dBA para las áreas acústicas residenciales.

**Ruido aéreo entre recintos (apartado 2.1.1).** La tabiquería de una misma
unidad de uso debe tener $R_\mathrm{A} \ge 33$ dBA. Frente a un recinto de otra unidad
de uso, un recinto protegido exige $D_\mathrm{nT,A} \ge 50$ dBA y un recinto
habitable $\ge 45$ dBA; frente a un recinto de instalaciones o de actividad,
un recinto protegido exige $\ge 55$ dBA y un recinto habitable $\ge 45$ dBA.
Cuando los dos recintos comparten puertas o ventanas, la exigencia se traslada
al hueco (índice de reducción acústica de 30 dBA para el recinto protegido, de
20 dBA para el habitable) y al cerramiento que lo rodea (50 dBA).

**Medianerías (apartado 2.1.1 c).** Frente a una medianería el DB HR ofrece
dos vías **alternativas**, no acumulativas: o bien cada una de las dos hojas
alcanza $D_{2\mathrm{m,nT,Atr}} \ge 40$ dBA, o bien las dos hojas juntas alcanzan
$D_\mathrm{nT,A} \ge 50$ dBA. `db_hr_party_wall_requirement()` devuelve la vía que se
le pida.

**Ruido de impactos (apartado 2.1.2).** El nivel global de presión acústica de
impactos estandarizado $L'_\mathrm{nT,w}$ no debe superar 65 dB en un recinto
protegido frente a un recinto de otra unidad de uso, ni 60 dB frente a un
recinto de instalaciones o de actividad; ese mismo límite de 60 dB se aplica al
recinto habitable.

**Reverberación y absorción (apartado 2.2).** El tiempo de reverberación no
debe superar 0,7 s en un aula o sala de conferencias vacía de volumen menor de
350 m³, ni 0,5 s con el mobiliario fijo (butacas), ni 0,9 s en restaurantes y
comedores vacíos. En las zonas comunes que compartan puertas con recintos
protegidos, el área de absorción acústica equivalente debe ser al menos
0,2 m² por cada metro cúbico de volumen.

```python

from phonometry import building

facade = building.db_hr_facade_requirement(65.0, "residential", "bedrooms")
facade.limit                                        # 32 dBA (Tabla 2.1)

airborne = building.db_hr_airborne_requirement("protected", "other_unit")
[(r.quantity, r.limit) for r in airborne]           # [("DnT,A", 50.0)]

building.db_hr_impact_requirement("protected", "other_unit").limit    # 65 dB
building.db_hr_party_wall_requirement().limit                         # 40 dBA por hoja
building.db_hr_party_wall_requirement("DnT,A").limit                  # 50 dBA las dos juntas
building.db_hr_reverberation_requirement("classroom").limit           # 0,7 s

# La exigencia entre recintos está declarada en DnT,A, así que el R' de la
# medianería del informe de campo no se puede contrastar con ella tal cual. Hay
# que re-referenciarlo antes: un recinto receptor de V = 50 m3 con T = 0,5 s
# detrás de una partición de S = 12 m2 tiene A = 0,16 V / T = 16 m2, y
# DnT = R' + 10 lg(A/S) + 10 lg(T/T0).
d_nt = np.asarray(r_prime) + 10 * np.log10(16.0 / 12.0) + 10 * np.log10(0.5 / 0.5)
building.dnt_a(d_nt).intermediate                   # 52,7 dBA (el R'A era 51,4 dBA)

check = building.assess_db_hr([(33.0, facade), (52.7, airborne[0])])
check.complies                                      # True
```

La magnitud tiene que coincidir con la exigencia. El DB HR declara el límite
entre recintos en $D_\mathrm{nT,A}$, y $R'$ y $D_\mathrm{nT}$ normalizan la misma diferencia
de niveles por cosas distintas — $R' = D + 10\log_{10}(S/A)$ por el área de la
partición y la absorción del recinto receptor, $D_\mathrm{nT} = D + 10\log_{10}(T/T_0)$
por el tiempo de reverberación —, así que un $R'_\mathrm{A}$ de un informe de campo hay
que convertirlo a través de la $T$ del recinto y del área de la partición antes
de que signifique algo frente a los 50 dBA. Solo la exigencia de la
*tabiquería* ($R_\mathrm{A} \ge 33$ dBA) está declarada en la familia de $R_\mathrm{A}$.
Revisiones anteriores de esta página contrastaban el $R'_\mathrm{A} = 51,4$ dBA de la
medianería directamente con la exigencia en $D_\mathrm{nT,A}$: aquí el veredicto salía
igual por casualidad, pero la comparación era entre dos magnitudes distintas y
nada garantiza esa coincidencia en general.

`check_db_hr_requirement()` redondea el valor alcanzado como pide el DB HR
antes de compararlo (a entero en las magnitudes en dB, a un decimal en el
tiempo de reverberación) y devuelve el margen; `assess_db_hr()` hace lo mismo
sobre una lista de pares valor-exigencia.

## Ventanas y fachadas mixtas

Los ensayos que determinan el índice de reducción acústica de una ventana se
hacen sobre elementos de ensayo de unos 1,8 m², y al aumentar el tamaño de la ventana
disminuye su capacidad de aislamiento. El Catálogo de Elementos Constructivos
del CTE corrige el valor de catálogo de $R_\mathrm{A}$ y $R_\mathrm{A,tr}$ por el área total de
la ventana: 0 dB hasta 2,7 m², $-1$ dB entre 2,7 y 3,6 m², $-2$ dB entre 3,6 y
4,6 m² y $-3$ dB por encima de 4,6 m². Una ventana corredera de 4 m² con
acristalamiento 4-6-4, catalogada con $R_\mathrm{A} = 26$ dBA, se queda en 24 dBA
(ejemplo 7.4).

Una fachada real no es un elemento homogéneo: tiene una parte ciega y uno o
varios huecos. El índice de reducción acústica del conjunto se obtiene sumando
los coeficientes de transmisión ponderados por superficie, que es lo que hace
`composite_transmission_loss()` en
[Predicción del aislamiento de paneles](/phonometry/es/buildings/design/panel-sound-insulation/).
Con la fachada de 8 m² del ejemplo 7.5, parte ciega de 40 dBA y ventana de
2 m² con 26 dBA, el conjunto queda en 31,5 dBA:

```python
from phonometry import building
from phonometry.building.prediction.aperture_transmission import composite_transmission_loss

building.window_size_correction(4.0)          # -2 dB: 26 dBA de catálogo -> 24 dBA

composite_transmission_loss([6.0, 2.0], [40.0, 26.0])   # 31,53 dBA
composite_transmission_loss([6.0, 2.0], [50.0, 26.0])   # 31,97 dBA: +10 dBA en la parte ciega
composite_transmission_loss([6.0, 2.0], [40.0, 31.0])   # 35,63 dBA: +5 dBA en la ventana
```

Las tres últimas líneas contienen la regla práctica más útil del diseño de
fachadas: mejorar la parte ciega en 10 dBA sube el aislamiento global 0,4 dBA,
prácticamente nada, mientras que mejorar la ventana en 5 dBA lo sube 4,1 dBA,
casi el incremento completo. Sobre el elemento más débil es donde compensa
actuar.

*La regla práctica, generalizada. Mientras la ventana es el elemento débil las
tres curvas se superponen (la parte ciega es irrelevante, que es la razón por
la que sumarle 10 dBA compró 0,4 dBA) y cada curva solo despega cuando la
ventana se acerca a unos pocos decibelios de ella, para aplanarse después sobre
el valor de la parte ciega como asíntota. El diseño se lee en el eje x:
trabaja sobre el elemento que la curva todavía sigue.*

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

```python

# `composite_transmission_loss` es el import del bloque de arriba.

window = np.linspace(20.0, 55.0, 351)
fig, ax = plt.subplots()
for blind in (40.0, 50.0, 60.0):
    overall = [composite_transmission_loss([6.0, 2.0], [blind, float(w)])
               for w in window]
    ax.plot(window, overall, label=f"parte ciega RA = {blind:g} dBA")
    ax.axhline(blind, linestyle=":", alpha=0.6)
for w_val, blind in ((26.0, 40.0), (26.0, 50.0), (31.0, 40.0)):
    ax.plot([w_val], [composite_transmission_loss([6.0, 2.0], [blind, w_val])],
            "o", color="black")
ax.set(xlabel="RA de la ventana [dBA]  (2 m2 de una fachada de 8 m2)",
       ylabel="RA global de la fachada [dBA]")
ax.legend()
plt.show()
```

</details>

## Qué cubre esta guía

El índice global del anejo A del DB HR (fórmulas A.5 a A.7) sobre las
dieciocho bandas de 100 Hz a 5 kHz con los cuatro espectros normalizados de
las tablas A.2 a A.5, el redondeo del apartado 3.1.3.1 punto 4, las exigencias
del apartado 2 (Tabla 2.1 de fachadas, 2.1.1 de ruido aéreo y medianerías,
2.1.2 de impactos y 2.2 de reverberación y absorción) y la corrección por
tamaño de ventana del Catálogo de Elementos Constructivos.

Las opciones de diseño del apartado 3 (la opción simplificada, con sus tablas
de soluciones, y la opción general, que es la predicción de EN 12354) no se
implementan aquí: la vía de cálculo de la opción general vive en [Predicción
del aislamiento acústico (EN
12354)](/phonometry/es/buildings/design/insulation-prediction/). Tampoco se
cubren las condiciones de ejecución del apartado 5 ni las de mantenimiento del
apartado 6.

## Véase también

- [Índices globales de aislamiento (ISO 717)](/phonometry/es/buildings/insulation/insulation-ratings/): la vía de curva de referencia con $R_\mathrm{w}$, $C$, $C_\mathrm{tr}$ y los términos de rango ampliado que el DB HR llama simplemente $C$ y $C_\mathrm{tr}$.
- [Normativa española de ruido (RD 1367/2007)](/phonometry/es/environment/assessment/spanish-noise-regulation/): de dónde sale el índice de ruido día $L_\mathrm{d}$ del emplazamiento con el que se entra en la Tabla 2.1.
- [Aislamiento acústico de fachadas](/phonometry/es/buildings/insulation/facade-insulation/): la medición de $D_{2\mathrm{m,nT}}$ según ISO 16283-3 y su predicción según EN 12354-3, que alimentan el índice $D_{2\mathrm{m,nT,Atr}}$ de esta página.
- [Predicción del aislamiento de paneles](/phonometry/es/buildings/design/panel-sound-insulation/): el cálculo de fachadas mixtas y la transmisión por huecos y rendijas.
- [Medición del aislamiento en campo (ISO 16283)](/phonometry/es/buildings/insulation/insulation-field/): los espectros por bandas de $R'$, $D_\mathrm{nT}$ y $L'_\mathrm{nT}$ que estas magnitudes globales resumen.
- Referencia de la API: [`building.regulation.spain`](/phonometry/es/reference/api/building/spain/).
- Teoría: [Aislamiento acústico y absorción, medidos](/phonometry/es/reference/theory/rooms-buildings/#aislamiento-acústico-y-absorción-medidos-iso-16283-iso-10140-iso-717-iso-354): las magnitudes que exige el código, derivadas de ISO 12354 e ISO 717 y no del propio código.

## Respuestas rápidas

### ¿En qué se diferencia el índice RA del DB HR del Rw de ISO 717-1?

El $R_\mathrm{w}$ de ISO 717-1 se obtiene desplazando una curva de referencia sobre
dieciséis bandas de tercio de octava (100 Hz a 3150 Hz). El $R_\mathrm{A}$ del DB HR se
obtiene ponderando el índice de reducción acústica por bandas con un espectro
normalizado de ruido rosa y sumando energéticamente sobre **dieciocho** bandas
(100 Hz a 5 kHz). El DB HR admite la equivalencia $R_\mathrm{A} \approx R_\mathrm{w} + C$, pero
ese $C$ es el término de rango ampliado $C_{100-5000}$, no el del rango básico.
