Skip to content

building.lab_insulation

Laboratory sound insulation of building elements (ISO 10140).

This is the laboratory counterpart of the field ISO 16283 family in phonometry.insulation. In a qualified test facility flanking transmission is suppressed, so the direct airborne sound reduction index R (not the apparent R') is the primary quantity, and the receiving room’s equivalent absorption area A is a property of the known facility.

Airborne sound reduction index (ISO 10140-2:2010). From the energy-average sound pressure levels in the source room L1 and receiving room L2 this module forms, per one-third-octave band, R = L1 - L2 + 10 lg(S/A) (Clause 3.1, Formula (2)) with the free test opening area S and the Sabine equivalent absorption area A = 0,16 V / T (ISO 10140-4:2010, Clause 4.6.3, Formula (5)). The single-number weighted rating Rw and the adaptation terms C / Ctr follow ISO 717-1 (Clause 5.3) through the verified phonometry.weighted_rating engine, reused unchanged.

Impact sound pressure level (ISO 10140-3:2010). With the standard tapping machine exciting the floor under test this module forms, from the energy-average impact sound pressure level Li in the receiving room, the normalized impact sound pressure level Ln = Li + 10 lg(A/A0) (Clause 3.2, Formula (1)) with A = 0,16 V / T and the reference absorption area A0 = 10 m². The single-number weighted rating Ln,w and the term CI follow ISO 717-2 (Clause 5.3) through phonometry.weighted_impact_rating, reused unchanged.

Background-noise correction (ISO 10140-4:2010, Clause 4.3, Formula (4)). The receiving-room levels must be corrected for background noise before the insulation is formed. background_correction implements the correction L = 10 lg(10^(Lsb/10) - 10^(Lb/10)) for a signal-to-background margin between 6 dB and 15 dB, the fixed 1,3 dB correction (limit of measurement) for a margin of 6 dB or less, and no correction for a margin of 15 dB or more. The 6/15 dB criteria are the laboratory analogue of the 6/10 dB criteria of ISO 16283-1 Clause 9.2; both cap the correction at 1,3 dB.

Frequency range (ISO 10140-4:2010, Clause 4.1). Quantities are measured over the mandatory one-third-octave range 100 Hz to 5000 Hz (optionally down to 50 Hz). The single-number rating uses the core 100 Hz to 3150 Hz (16 one-third-octave bands) / 125 Hz to 2000 Hz (5 octave bands) range of ISO 717-1/2, so the automatic rating is formed only when exactly 16 or 5 per-band values are supplied.

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

background_correction(
signal_and_background: Sequence[float] | np.ndarray,
background: Sequence[float] | np.ndarray,
) -> np.ndarray

Correct receiving-room levels for background noise (ISO 10140-4:2010).

Applies the correction of Clause 4.3 per band from the combined signal-plus-background level Lsb and the background level Lb, using the margin Lsb - Lb:

  • margin >= 15 dB: the background is negligible and the level is returned unchanged (Clause 4.3, quality requirement).
  • 6 dB < margin < 15 dB: the level is corrected with Formula (4), L = 10 lg(10^(Lsb/10) - 10^(Lb/10)).
  • margin <= 6 dB: the fixed 1,3 dB correction is applied (L = Lsb - 1,3); such bands are the limit of measurement and a LabInsulationWarning is emitted (Clause 4.3). A negative margin (Lb > Lsb, i.e. background above the measured signal) falls in this branch and is likewise capped at Lsb - 1,3: the band is simply flagged as the limit of measurement rather than yielding a nonsensical (or NaN) corrected level.

This is the sound-insulation counterpart of phonometry.background_noise_correction (ISO 3744:2010): both apply the same energy subtraction 10 lg(10^(Lsb/10) - 10^(Lb/10)), but that routine returns the correction offset K1 (to subtract from Lsb), whereas this one returns the already-corrected levels L directly.

Parameters

NameDescription
signal_and_backgroundCombined signal-plus-background levels Lsb per band, in dB.
backgroundBackground-noise levels Lb per band, in dB.

Returns: The background-corrected levels per band, in dB.

Raises

ExceptionWhen
ValueErrorIf the shapes differ or contain non-finite values.
lab_airborne_insulation(
l1: Sequence[float] | np.ndarray,
l2: Sequence[float] | np.ndarray,
t2: Sequence[float] | np.ndarray,
*,
area: float,
volume: float,
) -> LabAirborneInsulationResult

Laboratory airborne sound reduction index per ISO 10140-2:2010.

Computes, per frequency band, the sound reduction index R = L1 - L2 + 10 lg(S/A) (Clause 3.1, Formula (2)) with the free test opening area S and the Sabine equivalent absorption area A = 0,16 V / T (ISO 10140-4:2010, Formula (5)). When exactly 16 one-third-octave (100-3150 Hz) or 5 octave (125-2000 Hz) values are supplied, the single-number weighted rating Rw with C / Ctr is also formed via phonometry.weighted_rating (ISO 717-1).

l1 and l2 may be one value per band (already energy-averaged) or a two-dimensional (positions, bands) array, in which case the positions are energy-averaged (ISO 10140-4:2010, Formula (2)). The band levels are assumed already corrected for background noise (see background_correction).

Parameters

NameDescription
l1Source-room sound pressure levels, in dB.
l2Receiving-room sound pressure levels, in dB.
t2Receiving-room reverberation time per band, in seconds.
areaArea S of the free test opening, in m².
volumeReceiving-room volume V, in m³.

Returns: LabAirborneInsulationResult with r, absorption and rating.

Raises

ExceptionWhen
ValueErrorIf the band counts of l1, l2 and t2 differ, if area/volume/t2 are not positive, or if inputs are non-finite.
lab_impact_insulation(
li: Sequence[float] | np.ndarray,
t2: Sequence[float] | np.ndarray,
*,
volume: float,
) -> LabImpactInsulationResult

Laboratory impact sound pressure level per ISO 10140-3:2010.

Computes, per frequency band, the normalized impact sound pressure level Ln = Li + 10 lg(A/A0) (Clause 3.2, Formula (1)) with the Sabine equivalent absorption area A = 0,16 V / T (ISO 10140-4:2010, Formula (5)) and the reference absorption area A0 = 10 m². When exactly 16 one-third-octave (100-3150 Hz) or 5 octave (125-2000 Hz) values are supplied, the single-number weighted rating Ln,w with CI is also formed via phonometry.weighted_impact_rating (ISO 717-2).

li may be one value per band (already energy-averaged) or a two-dimensional (positions, bands) array, in which case the positions are energy-averaged (ISO 10140-4:2010, Formula (2)). The band levels are assumed already corrected for background noise (see background_correction).

Parameters

NameDescription
liEnergy-average impact sound pressure levels, in dB.
t2Receiving-room reverberation time per band, in seconds.
volumeReceiving-room volume V, in m³.

Returns: LabImpactInsulationResult with l_n, absorption and rating.

Raises

ExceptionWhen
ValueErrorIf the band counts of li and t2 differ, if volume/t2 are not positive, or if inputs are non-finite.
LabAirborneInsulationResult(
r: np.ndarray,
absorption: np.ndarray,
rating: WeightedRatingResult | None,
)

Per-band laboratory airborne sound insulation (ISO 10140-2:2010).

Attributes

NameDescription
rSound reduction index R = L1 - L2 + 10 lg(S/A) per band, in dB (Clause 3.1, Formula (2)).
absorptionEquivalent sound absorption area A = 0,16 V / T per band, in m² (ISO 10140-4:2010, Formula (5)).
ratingSingle-number weighted rating Rw with C / Ctr (ISO 717-1), or None when the number of bands is neither 16 (one-third octave) nor 5 (octave) and no rating can be formed.
LabAirborneInsulationResult.plot(
ax: Axes | None = None,
**kwargs: Any,
) -> Axes

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

Delegates to the weighted-rating plot (measured R versus the shifted reference, unfavourable deviations shaded). Requires the automatic rating to be available (16 or 5 bands) and matplotlib (pip install phonometry[plot]); returns the Axes.

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

Render an ISO 10140-2 laboratory airborne-insulation report to a PDF.

Writes the one-page laboratory test report of ISO 10140-2:2010: the standard-basis line, an optional metadata header block (client, specimen, mounting, room volumes, climatic conditions …), the band table (16 one-third-octave or 5 octave bands) beside the measured-versus-shifted-reference curve, the boxed laboratory rating Rw (C; Ctr) (evaluated per ISO 717-1), the laboratory-method statement, an optional verdict row and a footer with the identity block and disclaimer. The report requires the single-number rating to be present on the result; it is formed automatically only for exactly 16 one-third-octave (100 Hz to 3150 Hz) or 5 octave (125 Hz to 2000 Hz) bands, and a result carrying no rating (any other band count) is rejected.

Parameters

NameDescription
pathDestination path of the PDF file.
metadataOptional ReportMetadata; None produces a lightweight fiche (body, rating, statement and disclaimer only).
engineRendering back end; only "reportlab" is supported.
verboseWhen True, the table annexes the per-band equivalent sound absorption area A beside the reported R.
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, language is not one of the supported values, or the result carries no single-number rating (its band count is neither 16 one-third-octave nor 5 octave, so the ISO 717-1 rating the fiche needs was not formed).
ImportErrorIf reportlab is not installed (pip install phonometry[report]), or matplotlib is missing for the embedded rating figure (pip install phonometry[plot]).
LabImpactInsulationResult(
l_n: np.ndarray,
absorption: np.ndarray,
rating: ImpactRatingResult | None,
)

Per-band laboratory impact sound insulation (ISO 10140-3:2010).

Attributes

NameDescription
l_nNormalized impact sound pressure level Ln = Li + 10 lg(A/A0) per band, in dB (Clause 3.2, Formula (1)).
absorptionEquivalent sound absorption area A = 0,16 V / T per band, in m² (ISO 10140-4:2010, Formula (5)).
ratingSingle-number weighted rating Ln,w with CI (ISO 717-2), or None when the number of bands is neither 16 (one-third octave) nor 5 (octave) and no rating can be formed.
LabImpactInsulationResult.plot(
ax: Axes | None = None,
**kwargs: Any,
) -> Axes

Plot Ln against the shifted ISO 717-2 reference curve.

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

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

Render an ISO 10140-3 laboratory impact-insulation report to a PDF.

Writes the one-page laboratory test report of ISO 10140-3:2010: the standard-basis line, an optional metadata header block, the band table (16 one-third-octave or 5 octave bands) beside the measured-versus-shifted-reference curve, the boxed laboratory rating Ln,w (CI) (evaluated per ISO 717-2), the laboratory-method statement, an optional verdict row and a footer with the identity block and disclaimer. The report requires the single-number rating to be present on the result; it is formed automatically only for exactly 16 one-third-octave (100 Hz to 3150 Hz) or 5 octave (125 Hz to 2000 Hz) bands, and a result carrying no rating (any other band count) is rejected.

Parameters

NameDescription
pathDestination path of the PDF file.
metadataOptional ReportMetadata; None produces a lightweight fiche (body, rating, statement and disclaimer only).
engineRendering back end; only "reportlab" is supported.
verboseWhen True, the table annexes the per-band equivalent sound absorption area A beside the reported Ln.
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, language is not one of the supported values, or the result carries no single-number rating (its band count is neither 16 one-third-octave nor 5 octave, so the ISO 717-2 rating the fiche needs was not formed).
ImportErrorIf reportlab is not installed (pip install phonometry[report]), or matplotlib is missing for the embedded rating figure (pip install phonometry[plot]).

Warning for laboratory-insulation limit-of-measurement conditions.

Created and maintained by· GitHub· PyPI· All projects