Skip to content

building.survey_insulation

Field survey method for sound insulation and service-equipment noise (ISO 10052:2021).

This is the survey (control) method: a fast, octave-band field procedure for dwellings and rooms of comparable size (up to 150 m³). It trades the resolution of the ISO 16283 engineering method (phonometry.insulation) for speed: a single hand-held integrating sound level meter swept through the room. It measures airborne and impact sound insulation between rooms, façade sound insulation, and the sound pressure level from building service equipment. Clause references and the reverberation-index table follow the 2021 edition; the formulas and that table are identical in the harmonized EN ISO 10052:2004+A1:2010.

Reverberation index (Clause 3.3). The correction for the receiving room is carried by a single quantity, the reverberation index k = 10 lg(T/T0) dB with the reference reverberation time T0 = 0,5 s. It may be measured (pass the reverberation time T per band to reverberation_index) or, in a control survey, estimated from the room type and volume with estimate_reverberation_index (Clause 6.5, Tables 3 and 4).

Airborne between rooms (Clauses 3.2-3.6). From the source- and receiving-room levels L1 and L2 the level difference D = L1 - L2 (Clause 3.2) gives the standardized level difference DnT = D + k (Clause 3.4), the normalized level difference Dn = D + k + 10 lg(A0 T0 / (0,16 V)) (Clause 3.5, A0 = 10 m²) and, when a common partition area S is given, the apparent sound reduction index R' = D + k + 10 lg(S T0 / (0,16 V)) (Clause 3.6). Where V/7,5 > S the value V/7,5 is used for S, with V the smaller room.

Impact (Clauses 3.7-3.9). From the impact level Li (Clause 3.7, energy-averaged over the tapping-machine positions; the 2021 edition also admits the heavy/soft impact source of Clause 3.10 with the maximum level Li,Fmax of Clause 3.11) the standardized impact level L'nT = Li - k (Clause 3.8) and the normalized impact level L'n = Li - k - 10 lg(A0 T0 / (0,16 V)) (Clause 3.9).

Façade (Clauses 3.13-3.15). From the outdoor level 2 m in front of the façade L1,2m and the receiving-room level L2 the façade level difference D2m = L1,2m - L2 (Clause 3.13), the standardized D2m,nT = D2m + k (Clause 3.14) and the normalized D2m,n = D2m + k + 10 lg(A0 T0 / (0,16 V)) (Clause 3.15).

Service equipment (Clauses 3.16-3.18). From three A- or C-weighted sound pressure levels (one near a room corner, two in the reverberant field) the service-equipment level LXY = 10 lg[(1/3) sum 10^(0,1 LXY,i)] (Clause 3.16), its standardized form LXY,nT = LXY - k (Clause 3.17) and normalized form LXY,n = LXY - k - 10 lg(A0 T0 / (0,16 V)) (Clause 3.18).

Frequency range (Clause 6.4). Airborne and tapping-machine impact quantities are measured in octave bands 125 Hz to 2000 Hz (5 bands); the heavy/soft impact source uses 63 Hz to 500 Hz. The single-number weighted ratings reuse the verified phonometry.weighted_rating (ISO 717-1) and phonometry.weighted_impact_rating (ISO 717-2) engines, formed only when exactly 5 octave (or 16 one-third-octave) values are supplied. No background correction is applied (Clause 6.2).

Auto-generated from the source docstrings by scripts/generate_api_docs.py (make api-docs). Do not edit by hand.

estimate_reverberation_index(
volume: float,
room: str,
*,
weighted: bool = False,
) -> np.ndarray | float

Estimate the reverberation index from room type and volume (Clause 6.5).

In a control survey the reverberation time need not be measured: the reverberation index k may be read from ISO 10052:2021 Table 4 (Table 3 of EN ISO 10052:2004+A1:2010) by classifying the room. Furnished rooms use the room categories "kitchen" / "bathroom" (tabulated only for V < 35) and "furnished" (a general furnished living/sleeping room); unfurnished rooms use the Table 3 (2004: Table 2) construction letters "a"-"h" and the area-averaged mixed classes "a+e", "b+f", "c+g" and "d+h". The table is valid for T0 = 0,5 s and rooms up to 150 m³.

Parameters

NameDescription
volumeReceiving-room volume V, in m³ (0 < V <= 150).
roomRoom-type key (see above).
weightedWhen True return the single A-/C-weighted index (the Table 4 A, C column) instead of the five octave-band values, for globally weighted service-equipment noise (Clause 3.17).

Returns: The reverberation index k per octave band (125-2000 Hz), in dB, or the scalar A-/C-weighted index when weighted is True.

Raises

ExceptionWhen
ValueErrorIf volume is not in (0, 150], or room is not tabulated for that volume range.
reverberation_index(
t: Sequence[float] | np.ndarray,
*,
t0: float = 0.5,
) -> np.ndarray

Reverberation index k = 10 lg(T/T0) (ISO 10052:2021, Clause 3.3).

Parameters

NameDescription
tReceiving-room reverberation time per band, in seconds.
t0Reference reverberation time T0, in seconds (Default: 0,5 s).

Returns: The reverberation index k per band, in dB.

Raises

ExceptionWhen
ValueErrorIf t/t0 are not positive or t is non-finite.
survey_airborne_insulation(
l1: Sequence[float] | np.ndarray,
l2: Sequence[float] | np.ndarray,
reverberation_index: Sequence[float] | np.ndarray,
*,
volume: float | None = None,
area: float | None = None,
) -> SurveyAirborneResult

Airborne sound insulation between rooms, survey method (ISO 10052:2021).

Computes, per octave band, the level difference D = L1 - L2 (Clause 3.2), the standardized level difference DnT = D + k (Clause 3.4) and, when volume is given, the normalized level difference Dn = D + k + 10 lg(A0 T0 / (0,16 V)) (Clause 3.5). When a common-partition area is also given, the apparent sound reduction index R' = D + k + 10 lg(S T0 / (0,16 V)) (Clause 3.6) is formed, using V/7,5 for S where that exceeds the given area (Clause 3.6). The reverberation index k comes from reverberation_index (measured T) or a Clause 6.5 estimate.

l1 and l2 may be one value per band or a two-dimensional (positions, bands) array (energy-averaged over the positions).

Parameters

NameDescription
l1Source-room sound pressure levels, in dB.
l2Receiving-room sound pressure levels, in dB.
reverberation_indexReverberation index k per band, in dB.
volumeReceiving-room volume V, in m³ (required for Dn and R').
areaCommon-partition area S, in m² (with volume, gives R').

Returns: SurveyAirborneResult.

Raises

ExceptionWhen
ValueErrorIf band counts differ, if area is given without volume, or if area/volume are not positive.
survey_facade_insulation(
l1_2m: Sequence[float] | np.ndarray,
l2: Sequence[float] | np.ndarray,
reverberation_index: Sequence[float] | np.ndarray,
*,
volume: float | None = None,
) -> SurveyFacadeResult

Façade sound insulation, survey method (ISO 10052:2021).

Computes, per octave band, the façade level difference D2m = L1,2m - L2 (Clause 3.13), the standardized façade level difference D2m,nT = D2m + k (Clause 3.14) and, when volume is given, the normalized façade level difference D2m,n = D2m + k + 10 lg(A0 T0 / (0,16 V)) (Clause 3.15).

Parameters

NameDescription
l1_2mOutdoor sound pressure levels 2 m in front of the façade, in dB (one value per band or (positions, bands)).
l2Receiving-room sound pressure levels, in dB.
reverberation_indexReverberation index k per band, in dB.
volumeReceiving-room volume V, in m³ (required for D2m,n).

Returns: SurveyFacadeResult.

Raises

ExceptionWhen
ValueErrorIf band counts differ or volume is not positive.
survey_impact_insulation(
li: Sequence[float] | np.ndarray,
reverberation_index: Sequence[float] | np.ndarray,
*,
volume: float | None = None,
) -> SurveyImpactResult

Impact sound insulation between rooms, survey method (ISO 10052:2021).

Computes, per octave band, the energy-average impact sound pressure level Li (Clause 3.7), the standardized impact level L'nT = Li - k (Clause 3.8) and, when volume is given, the normalized impact level L'n = Li - k - 10 lg(A0 T0 / (0,16 V)) (Clause 3.9).

li may be one value per band or a two-dimensional (positions, bands) array (energy-averaged over the tapping-machine positions, Clause 3.7).

Parameters

NameDescription
liImpact sound pressure levels, in dB.
reverberation_indexReverberation index k per band, in dB.
volumeReceiving-room volume V, in m³ (required for L'n).

Returns: SurveyImpactResult.

Raises

ExceptionWhen
ValueErrorIf band counts differ or volume is not positive.
survey_service_equipment_level(
measurements: Sequence[float] | np.ndarray,
reverberation_index: float | Sequence[float] | np.ndarray,
*,
volume: float | None = None,
) -> SurveyServiceEquipmentResult

Service-equipment sound pressure level, survey method (ISO 10052:2021).

Computes the service-equipment level LXY = 10 lg[(1/3) sum 10^(0,1 LXY,i)] (Clause 3.16) as the energy average of the three measurement positions (one near a corner, two in the reverberant field, Clause 6.3.3), the standardized level LXY,nT = LXY - k (Clause 3.17) and, when volume is given, the normalized level LXY,n = LXY - k - 10 lg(A0 T0 / (0,16 V)) (Clause 3.18). X is the frequency weighting (A or C) and Y the time weighting (F, S or Leq).

Parameters

NameDescription
measurementsThe three A- or C-weighted levels, in dB; either three scalars, or a (3, bands) array for a banded analysis.
reverberation_indexReverberation index k, in dB; a scalar for a weighted level, or one value per band; for a global weighted level k is taken from the mean of the 500/1000/2000 Hz octave reverberation times (Clause 3.17).
volumeReceiving-room volume V, in m³ (required for LXY,n).

Returns: SurveyServiceEquipmentResult.

Raises

ExceptionWhen
ValueErrorIf not exactly three measurements are given, if shapes are inconsistent, or if volume is not positive.
SurveyAirborneResult(
d: np.ndarray,
d_nt: np.ndarray,
d_n: np.ndarray | None,
r_prime: np.ndarray | None,
rating: WeightedRatingResult | None,
r_prime_rating: WeightedRatingResult | None,
)

Per-band airborne sound insulation, survey method (ISO 10052).

Attributes

NameDescription
dLevel difference D = L1 - L2 per band, in dB (Clause 3.2).
d_ntStandardized level difference DnT = D + k (Clause 3.4).
d_nNormalized level difference Dn (Clause 3.5), or None when the receiving-room volume was not supplied.
r_primeApparent sound reduction index R' (Clause 3.6), or None when the partition area and volume were not both supplied.
ratingWeighted standardized level difference DnT,w with C / Ctr (ISO 717-1), or None off the 5/16-band count.
r_prime_ratingWeighted apparent sound reduction index R'w, or None when r_prime is unavailable or off the band count.
SurveyAirborneResult.plot(ax: Axes | None = None, **kwargs: Any) -> Axes

Plot DnT against the shifted ISO 717-1 reference curve.

Delegates to the weighted-rating plot. Requires the automatic rating (5 octave or 16 one-third-octave bands) and matplotlib (pip install phonometry[plot]); returns the Axes.

SurveyAirborneResult.report(
path: str,
*,
quantity: str = 'dnt',
metadata: ReportMetadata | None = None,
engine: str = 'reportlab',
verbose: bool = False,
language: str = 'en',
) -> str

Render a survey-method airborne field report to a PDF (ISO 10052).

Writes the one-page survey (control) method field report: the standard-basis line naming ISO 10052 (octave bands), an optional metadata header block, the octave-band table beside the measured-versus-shifted-ISO 717-1-reference curve, the boxed field rating DnT,w (C; Ctr) or R'w (C; Ctr), the survey-method statement, an optional verdict row (airborne passes at or above the requirement) and a footer with the identity block and disclaimer.

Parameters

NameDescription
pathDestination path of the PDF file.
quantityThe reported quantity: "dnt" (default, the standardized level difference DnT) or "r_prime" (the apparent sound reduction index R'; requires the result to carry r_prime, built with the area and volume arguments).
metadataOptional ReportMetadata; None produces a lightweight fiche (body, rating and disclaimer only).
engineRendering back end; only "reportlab" is supported.
verboseWhen True, the table shows the ISO 717 evaluation per band instead of the two-column f | value form.
languageFiche language: "en" (default, English) or "es" (Spanish, with a comma decimal separator).

Returns: The written path as a str.

Raises

ExceptionWhen
ValueErrorIf engine or quantity is unknown, or the selected quantity has no single-number rating (the survey needs 5 octave or 16 one-third-octave bands, and R' needs area and volume).
ImportErrorIf reportlab is not installed (pip install phonometry[report]).
SurveyFacadeResult(
d_2m: np.ndarray,
d_2m_nt: np.ndarray,
d_2m_n: np.ndarray | None,
rating: WeightedRatingResult | None,
)

Per-band façade sound insulation, survey method (ISO 10052).

Attributes

NameDescription
d_2mFaçade level difference D2m = L1,2m - L2 (Clause 3.13).
d_2m_ntStandardized façade level difference D2m,nT (Clause 3.14).
d_2m_nNormalized façade level difference D2m,n (Clause 3.15), or None when the receiving-room volume was not supplied.
ratingWeighted standardized façade level difference D2m,nT,w (ISO 717-1), or None off the 5/16-band count.
SurveyFacadeResult.plot(ax: Axes | None = None, **kwargs: Any) -> Axes

Plot D2m,nT against the shifted ISO 717-1 reference curve.

SurveyFacadeResult.report(
path: str,
*,
metadata: ReportMetadata | None = None,
engine: str = 'reportlab',
verbose: bool = False,
language: str = 'en',
) -> str

Render a survey-method facade field report to a PDF (ISO 10052).

Writes the one-page survey (control) method field facade report: the standard-basis line naming ISO 10052 (octave bands), an optional metadata header block, the octave-band D2m,nT table beside the measured-versus-shifted-ISO 717-1-reference curve, the boxed field rating D2m,nT,w (C; Ctr), the survey-method statement, an optional verdict row (a facade level difference passes at or above the requirement) and a footer with the identity block and disclaimer.

Parameters

NameDescription
pathDestination path of the PDF file.
metadataOptional ReportMetadata; None produces a lightweight fiche (body, rating and disclaimer only).
engineRendering back end; only "reportlab" is supported.
verboseWhen True, the table shows the ISO 717 evaluation per band instead of the two-column f | value form.
languageFiche language: "en" (default, English) or "es" (Spanish, with a comma decimal separator).

Returns: The written path as a str.

Raises

ExceptionWhen
ValueErrorIf engine is unknown or the result has no single-number rating (the survey needs 5 octave or 16 one-third-octave bands).
ImportErrorIf reportlab is not installed (pip install phonometry[report]).
SurveyImpactResult(
l_i: np.ndarray,
l_nt: np.ndarray,
l_n: np.ndarray | None,
rating: ImpactRatingResult | None,
)

Per-band impact sound insulation, survey method (ISO 10052).

Attributes

NameDescription
l_iEnergy-average impact sound pressure level Li per band, in dB (Clause 3.7).
l_ntStandardized impact level L'nT = Li - k (Clause 3.8).
l_nNormalized impact level L'n (Clause 3.9), or None when the receiving-room volume was not supplied.
ratingWeighted standardized impact level L'nT,w with CI (ISO 717-2), or None off the 5/16-band count.
SurveyImpactResult.plot(ax: Axes | None = None, **kwargs: Any) -> Axes

Plot L'nT against the shifted ISO 717-2 reference curve.

SurveyImpactResult.report(
path: str,
*,
metadata: ReportMetadata | None = None,
engine: str = 'reportlab',
verbose: bool = False,
language: str = 'en',
) -> str

Render a survey-method impact field report to a PDF (ISO 10052).

Writes the one-page survey (control) method field report: the standard-basis line naming ISO 10052 (octave bands, tapping machine), an optional metadata header block, the octave-band L'nT table beside the measured-versus-shifted-ISO 717-2-reference curve, the boxed field rating L'nT,w (CI), the survey-method statement, an optional verdict row (impact passes at or below the requirement) and a footer with the identity block and disclaimer.

Parameters

NameDescription
pathDestination path of the PDF file.
metadataOptional ReportMetadata; None produces a lightweight fiche (body, rating and disclaimer only).
engineRendering back end; only "reportlab" is supported.
verboseWhen True, the table shows the ISO 717 evaluation per band instead of the two-column f | value form.
languageFiche language: "en" (default, English) or "es" (Spanish, with a comma decimal separator).

Returns: The written path as a str.

Raises

ExceptionWhen
ValueErrorIf engine is unknown or the result has no single-number rating (the survey needs 5 octave or 16 one-third-octave bands).
ImportErrorIf reportlab is not installed (pip install phonometry[report]).
SurveyServiceEquipmentResult(
l_xy: np.ndarray,
l_xy_nt: np.ndarray,
l_xy_n: np.ndarray | None,
)

Service-equipment sound pressure level, survey method (ISO 10052).

Attributes

NameDescription
l_xyService-equipment level LXY (Clause 3.16), the energy average of the three measurement positions, in dB.
l_xy_ntStandardized level LXY,nT = LXY - k (Clause 3.17).
l_xy_nNormalized level LXY,n (Clause 3.18), or None when the receiving-room volume was not supplied.
Created and maintained by· GitHub· PyPI· All projects