Spanish Building Code (CTE DB-HR)
Standards: RD 1367/2007Key references: Avilés López & Perera Martín 2017
The Documento Básico HR “Protección frente al ruido” of the Spanish building code states its requirements in A-weighted global quantities that are close relatives of, but not identical to, the ISO 717-1 weighted ratings: , , and . This page implements the direct Annex A route, which is the normative one for DB-HR, the requirement tables of clause 2, and the two design calculations most often used with them: the window-size correction and the insulation of a composite façade.
The band spectra it consumes come from field measurement or from prediction; the ISO 717 reference-curve engine, which it is worth not confusing this with, is in Insulation Ratings (ISO 717).
The global index of Annex A
Section titled “The global index of Annex A”Instead of shifting a reference curve, DB-HR weights the measured band insulation with a normalised source spectrum and sums it energetically (Formulae A.5 to A.7):
where is the band insulation (the sound reduction index or , the
standardized level difference , and so on) and
the normalised source spectrum. The sum runs over eighteen one-third-octave
bands, 100 Hz to 5 kHz, two more than the sixteen of ISO 717-1 (100 Hz to
3150 Hz): the 4 kHz and 5 kHz bands, which are the first reason the two routes
do not always agree. The band centres are in DB_HR_FREQUENCIES.
| Normalised spectrum | Annex A table | Quantity it defines | Formula |
|---|---|---|---|
| A-weighted pink noise, | Table A.5 | , , | (A.5), (A.7) |
| Road traffic, | Table A.3 | , | (A.6) |
| Railway noise, | Table A.4 (numerically identical to A.3) | (A.5) | |
| Aircraft noise, | Table A.2 | (A.6) |
The railway row is the one worth reading twice. Clause 3.1.3.4 point 1 says
that where railway noise dominates the façade is assessed in
through formula (A.5), and only road traffic and aircraft give
through (A.6); Table H.1 prints the same split. Because
Table A.4 is digit for digit Table A.3, a rail-dominant façade comes out at
the same number as a road one, but the quantity the requirement and the
report are stated in is not the same. That is why d2m_nt_a() and
d2m_nt_atr() are separate entry points and each refuses the other’s
spectra, rather than one function with a spectrum switch that would silently
put the wrong name on the result.
All four are in DB_HR_NORMALISED_SPECTRA under the keys "pink",
"traffic", "railway" and "aircraft". The calculation below reproduces
Ejemplo 7.2 of the Manual, the apparent sound reduction index of a party
wall taken from a real field test report:
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 dBAindex.intermediate # 51.4 dBA, the one-decimal intermediateindex.reported # 51 dBA, the integer that defines the requirementDbHrGlobalIndexResult.plot() draws the band insulation together with the
transmitted level weighted by the normalised spectrum. The point is the second
curve: it shows at a glance which bands carry the energy sum, and therefore
where the element has to be improved. Here the weighted transmitted level peaks
in the low bands where R' is weakest, so the 51.4 dBA index is decided well
below 500 Hz.
Show the code for this figure
import matplotlib.pyplot as pltfrom 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()plt.show()ra(), ra_tr(), dnt_a(), d2m_nt_a() and d2m_nt_atr() are named shortcuts over
db_hr_global_index(), which accepts any spectrum and, given the
frequencies argument, selects the eighteen DB-HR bands out of a longer
series.
Rounding and the relationship with the ISO 717 route
Section titled “Rounding and the relationship with the ISO 717 route”Clause 3.1.3.1 point 4 of DB-HR requires the final values of the quantities
that define the requirements to be expressed rounded to an integer, while
intermediate values are carried with one decimal. The result object therefore
exposes all three forms: .value (unrounded), .intermediate (one decimal)
and .reported (the integer used in the check).
DB-HR and ISO 717-1 reach the same place by different routes, and Annex H of the document itself accepts three approximations as long as the two routes differ by less than 1 dB:
with (H.2) covering the rail-dominant case of the previous section. On the two published spectra this page reproduces, the agreement is exact to the integer:
| Case | Direct route (Annex A) | ISO 717-1 route | Published? |
|---|---|---|---|
| Separating wall of Ejemplo 7.2 | dBA, rounded to 51 | with , i.e. 51 | yes, Ejemplo 7.1 prints , and the 51 dBA |
| Façade of Ejercicio 7.1 | dBA, rounded to 33 | with , i.e. 33 | no, the book prints neither 38 nor |
The two rows are not equally strong evidence. The wall row is a genuine external check, because the Manual prints the ISO 717-1 numbers as well as the direct one. For the façade the book publishes only the 32,8 dBA; the 38 and the come from this library’s own ISO 717-1 engine, so that row shows the two routes agreeing with each other rather than agreeing with a source.
The real trap is the name of the spectrum adaptation terms. Annex H writes them as plain and and refers their definition to UNE-EN ISO 717-1 without narrowing the frequency range. Since the DB-HR indices run to 5 kHz while the ISO 717-1 core range stops at 3150 Hz, the terms that make (H.1) to (H.3) come out right are the enlarged-range and ; that reading is not in Annex H itself but in the Manual, in the note to expressions [7.15] and [7.16]. It matters: on the façade of Ejercicio 7.1 the core-range is while is , so taking the wrong one gives 36 dBA instead of 37 for the of that façade. On the same specimen and are both , so the that DB-HR actually requires happens not to discriminate between the two readings at all.
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, the same figureiso.c, iso.c_100_5000 # -2 and -1: core range versus enlarged rangeThe requirements of clause 2
Section titled “The requirements of clause 2”DB-HR states its requirements on two kinds of room: the protected room (recinto protegido, a habitable room with reinforced acoustic protection: bedrooms, living areas, classrooms, operating theatres, professional offices) and the habitable room (recinto habitable) in general.
Façades (Table 2.1). The requirement on is read by bands of the site’s day noise index (, , , and dBA):
| Use | Room | db_hr_facade_requirement(ld, use, room) | 60-65 | 65-70 | 70-75 | ||
|---|---|---|---|---|---|---|---|
| Residential, hospital | Bedrooms | "residential", "bedrooms" | 30 | 32 | 37 | 42 | 47 |
| Residential, hospital | Living areas | "residential", "living" | 30 | 30 | 32 | 37 | 42 |
| Cultural, health, educational, administrative | Living areas | "cultural", "living" | 30 | 32 | 37 | 42 | 47 |
| Cultural, health, educational, administrative | Classrooms | "educational", "classrooms" | 30 | 30 | 32 | 37 | 42 |
The same phrase means different things in the two use groups, which is why the printed table’s single “use and room” column is easy to misread: living areas carry the stricter row under a cultural or educational use and the more lenient one under a residential use.
Three rules modify the reading: a façade not directly exposed to the dominant noise (an enclosed courtyard, a quiet surrounding) is assessed with reduced by 10 dBA, where aircraft noise dominates the table value is increased by 4 dBA, and where no official exists for the site, 60 dBA is assumed for residential acoustic areas.
Airborne insulation between rooms (clause 2.1.1). Partition walls (tabiquería) within one use unit must have dBA. Against a room of another use unit, a protected room requires dBA and a habitable room dBA; against a services or activity room, a protected room requires dBA and a habitable room dBA. When the two rooms share a door or a window, the requirement moves to the opening (sound reduction index of 30 dBA for the protected room, 20 dBA for the habitable one) and to the enclosure around it (50 dBA).
Party walls (clause 2.1.1 c). Against a medianería DB-HR offers two
alternative routes, not cumulative ones: either each of the two leaves
reaches dBA, or the two leaves taken together reach
dBA. db_hr_party_wall_requirement() returns whichever route
is asked for.
Impact sound (clause 2.1.2). The standardized impact sound pressure level must not exceed 65 dB in a protected room against a room of another use unit, nor 60 dB against a services or activity room; that same 60 dB limit applies to the habitable room.
Reverberation and absorption (clause 2.2). The reverberation time must not exceed 0.7 s in an empty classroom or conference hall under 350 m³, 0.5 s with the fixed seating installed, or 0.9 s in empty restaurants and dining rooms. In common areas sharing doors with protected rooms, the equivalent sound absorption area must be at least 0.2 m² per cubic metre of volume.
import numpy as npfrom phonometry import building
facade = building.db_hr_facade_requirement(65.0, "residential", "bedrooms")facade.limit # 32 dBA (Table 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 dBbuilding.db_hr_party_wall_requirement().limit # 40 dBA per leafbuilding.db_hr_party_wall_requirement("DnT,A").limit # 50 dBA both togetherbuilding.db_hr_reverberation_requirement("classroom").limit # 0.7 s
# The between-rooms requirement is stated in DnT,A, so the party-wall R' of the# field report cannot be checked against it as it stands. Re-reference it first:# a receiving room of V = 50 m3 with T = 0.5 s behind a partition of S = 12 m2# has A = 0.16 V / T = 16 m2, and 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 (R'A was 51.4 dBA)
check = building.assess_db_hr([(33.0, facade), (52.7, airborne[0])])check.complies # TrueThe quantity has to match the requirement. DB-HR states the between-rooms limit in , and and normalise the same level difference by different things — by the partition area and the receiving-room absorption, by the reverberation time — so an from a field report has to be converted through the room’s and the partition area before it means anything against the 50 dBA. Only the tabiquería requirement ( dBA) is stated in the family. Earlier revisions of this page checked the party wall’s dBA straight against the requirement: the verdict happened to come out the same here, but the comparison was between two different quantities and nothing guarantees the agreement in general.
check_db_hr_requirement() rounds the achieved value the way DB-HR asks before
comparing it (to an integer for the dB quantities, to one decimal for the
reverberation time) and returns the margin; assess_db_hr() does the same over
a list of value-requirement pairs.
Windows and composite façades
Section titled “Windows and composite façades”The tests that determine the sound reduction index of a window are run on specimens of about 1.8 m², and a larger window insulates less. The Catálogo de Elementos Constructivos of the building code corrects the catalogue value of and by total window area: 0 dB up to 2.7 m², dB between 2.7 and 3.6 m², dB between 3.6 and 4.6 m² and dB above 4.6 m². A 4 m² sliding window with 4-6-4 glazing, catalogued at dBA, ends up at 24 dBA (Ejemplo 7.4).
A real façade is not a homogeneous element: it has a blind part and one or more
openings. The sound reduction index of the whole follows from the
area-weighted sum of the transmittances, which is what
composite_transmission_loss() does in
Predicting Panel Sound Insulation.
With the 8 m² façade of Ejemplo 7.5, a blind part of 40 dBA and a 2 m² window
of 26 dBA, the whole comes out at 31.5 dBA:
from phonometry import buildingfrom phonometry.building.prediction.aperture_transmission import composite_transmission_loss
building.window_size_correction(4.0) # -2 dB: 26 dBA catalogued -> 24 dBA
composite_transmission_loss([6.0, 2.0], [40.0, 26.0]) # 31.53 dBAcomposite_transmission_loss([6.0, 2.0], [50.0, 26.0]) # 31.97 dBA: +10 dBA on the blind partcomposite_transmission_loss([6.0, 2.0], [40.0, 31.0]) # 35.63 dBA: +5 dBA on the windowThose last three lines hold the most useful rule of thumb in façade design: improving the blind part by 10 dBA raises the overall insulation by 0.4 dBA, practically nothing, whereas improving the window by 5 dBA raises it by 4.1 dBA, almost the full increment. The weak element is where the effort pays.
The rule of thumb made general. While the window is the weak element the three curves lie on top of each other — the blind part is irrelevant, which is why adding 10 dBA to it bought 0.4 dBA — and each curve only lifts off once the window comes within a few decibels of it, then flattens onto the blind part’s own value as its asymptote. Design reads off the x-axis: work on whichever element the curve is still following.
Show the code for this figure
import matplotlib.pyplot as pltimport numpy as np# `composite_transmission_loss` is the import of the block above.
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"blind part 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="Window RA [dBA] (2 m2 of an 8 m2 facade)", ylabel="Overall facade RA [dBA]")ax.legend()plt.show()What this guide covers
Section titled “What this guide covers”Covered
The DB-HR Annex A global index (Formulae A.5 to A.7) over the eighteen bands from 100 Hz to 5 kHz with the four normalised spectra of Tables A.2 to A.5, the rounding of clause 3.1.3.1 point 4, the requirements of clause 2 (Table 2.1 for façades, 2.1.1 airborne and party walls, 2.1.2 impact and 2.2 reverberation and absorption) and the window-size correction of the Catálogo de Elementos Constructivos.
Not covered
The design options of clause 3 (the simplified option with its solution tables, and the general option, which is the EN 12354 prediction) are not implemented here: the calculation route of the general option lives in Predicting Sound Insulation (EN 12354). The execution conditions of clause 5 and the maintenance conditions of clause 6 are out of scope as well.
See also
Section titled “See also”- Insulation Ratings (ISO 717): the reference-curve route with , , and the enlarged-range terms that DB-HR calls simply and .
- Spanish Noise Regulation (RD 1367/2007): where the site’s day noise index that Table 2.1 is entered with comes from.
- Façade Sound Insulation: the ISO 16283-3 measurement of and its EN 12354-3 prediction, which feed the index of this page.
- Predicting Panel Sound Insulation: the composite-façade calculation and transmission through openings and slits.
- Field Insulation Measurement (ISO 16283): the band spectra of , and that these global quantities summarise.
- API reference:
building.regulation.spain. - Theory: Sound insulation and absorption, measured: the quantities the code requires, derived from ISO 12354 and ISO 717 rather than from the code.
Quick answers
Section titled “Quick answers”How does the DB-HR index RA differ from the Rw of ISO 717-1?
Section titled “How does the DB-HR index RA differ from the Rw of ISO 717-1?”The of ISO 717-1 comes from shifting a reference curve over sixteen one-third-octave bands (100 Hz to 3150 Hz). The of DB-HR comes from weighting the band sound reduction index with a normalised pink-noise spectrum and summing energetically over eighteen bands (100 Hz to 5 kHz). DB-HR accepts the equivalence , but that is the enlarged-range term , not the core-range one.
References
Section titled “References”- Avilés López, R., & Perera Martín, R. (2017). Manual de acústica ambiental y arquitectónica. Paraninfo. Ejemplo 7.2 and Ejercicio 7.1 (pp. 394-395) are the numeric oracles of the global index on this page, and Ejemplos 7.4 and 7.5 (pp. 408-410) the window-size correction and the composite-façade calculation. ISBN 978-84-283-3814-1.
- Ministerio de Fomento (Spain). (2019). Código Técnico de la Edificación, Documento Básico HR Protección frente al ruido (CTE DB-HR). The Annex A global index (Formulae A.5 to A.7) and its normalised spectra (Tables A.2 to A.5), the rounding of clause 3.1.3.1 point 4 and the requirements of clause 2 (Table 2.1 for façades, 2.1.1 airborne, 2.1.2 impact and 2.2 reverberation).
- Ministerio de la Presidencia (Spain). (2007). Real Decreto 1367/2007, developing Ley 37/2003 del Ruido on acoustic zoning, quality objectives and acoustic emissions (RD 1367/2007 (BOE-A-2007-18397), consolidated text). The site's day noise index Ld that Table 2.1 of DB-HR is read against comes from the acoustic zoning and the noise maps regulated here.