Skip to content

building.prediction.aperture_transmission

Sound transmission through slits, holes and apertures (Hopkins 2007, Sound Insulation, Section 4.3.10; Gomperts 1964; Wilson & Soroka 1965).

Air paths are the real limit on the sound insulation of an otherwise heavy construction: a small slit or hole caps the achievable sound reduction index no matter how massive the wall. This module predicts the transmission coefficient tau of the two canonical apertures and combines them with the surrounding wall into a composite sound reduction index, the practical answer to “why do I never reach the catalogue Rw”.

Straight-edged slit (Hopkins Eq. 4.99, Gomperts). With the acoustic wavenumber , (w slit width), (d slit depth) and the end correction :

where (diffuse field) or 4 (normal incidence), and (slit in the middle of a plate) or 0.5 (slit along an edge). The model assumes an inviscid air path; maxima in tau (dips in R) occur at the resonances (Eq. 4.101, ).

Circular aperture (Hopkins Eq. 4.102, Wilson & Soroka). With the piston radiation resistance and reactance ( Bessel, Struve; radius a, depth d):

Composite (Hopkins Eq. 4.92). For elements of area and sound reduction index the resultant is the area-weighted energy sum

so a bare opening (, ) of relative area caps the composite at . This is the same energetic combination used by the EN 12354-3/-4 facade model of phonometry.building.prediction.facade.

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

ApertureTransmissionResult(
frequencies: np.ndarray,
transmission_coefficient: np.ndarray,
kind: str,
width: float | None = None,
radius: float | None = None,
depth: float | None = None,
)

Transmission through a slit or circular aperture (Hopkins 4.3.10).

Attributes

NameDescription
frequenciesBand centre frequencies, in hertz.
transmission_coefficientTransmission coefficient tau per band.
kind"slit" or "circular".
widthSlit width, in metres, retained (with depth) so plot_geometry can draw the section; appended after the original fields and None for circular apertures or hand-built results.
radiusCircular-aperture radius, in metres, or None.
depthWall thickness, in metres, or None.
ApertureTransmissionResult.plot(
ax: Axes | None = None,
*,
language: str = 'en',
**kwargs: Any,
) -> Axes

Plot the aperture sound reduction index R(f).

Requires matplotlib (pip install phonometry[plot]); returns the Axes.

ApertureTransmissionResult.plot_geometry()

Section titled “ApertureTransmissionResult.plot_geometry()”
ApertureTransmissionResult.plot_geometry(
ax: Axes | None = None,
*,
language: str = 'en',
**kwargs: Any,
) -> Axes

Draw the wall-aperture cross-section to scale.

Requires matplotlib (pip install phonometry[plot]); returns the Axes.

Raises

ExceptionWhen
ValueErrorIf the result does not retain its geometry.

ApertureTransmissionResult.transmission_loss

Section titled “ApertureTransmissionResult.transmission_loss”

property

Aperture sound reduction index per band, dB.

circular_aperture_transmission_coefficient

Section titled “circular_aperture_transmission_coefficient”
circular_aperture_transmission_coefficient(
frequency: ArrayLike,
radius: float,
depth: float,
*,
speed_of_sound: float = 343.0,
) -> ApertureTransmissionResult

Transmission coefficient of a circular aperture (Hopkins Eq. 4.102).

Parameters

NameDescription
frequencyBand centre frequencies f, in hertz (array, > 0).
radiusAperture radius a, in m (> 0).
depthAperture depth d (wall thickness), in m (> 0).
speed_of_soundSpeed of sound in air c0 (Default: 343 m/s).

Returns: An ApertureTransmissionResult (kind "circular").

Raises

ExceptionWhen
ValueErrorfor a non-positive input.
composite_transmission_loss(
areas: ArrayLike,
reduction_indices: ArrayLike,
) -> np.ndarray

Composite sound reduction index of parallel elements (Hopkins Eq. 4.92).

The area-weighted energy combination of N elements (wall, window, slit, open aperture …) sharing a partition:

A bare opening enters with ().

Parameters

NameDescription
areasElement areas S_n, in m^2 (1-D, length N, all > 0).
reduction_indicesElement sound reduction indices R_n, in dB. Either a 1-D array of length N (one value per element) or a 2-D array of shape (N, M) (N elements over M bands).

Returns: The composite R: a scalar array for 1-D input, or one value per band (length M) for 2-D input.

Raises

ExceptionWhen
ValueErrorfor a non-positive area, mismatched shapes, or an empty element set.
plot_aperture_geometry(
depth: float,
ax: Axes | None = None,
*,
width: float | None = None,
radius: float | None = None,
language: str = 'en',
**kwargs: Any,
) -> Axes

Draw the section through a wall aperture to scale.

Wall of thickness depth with a slit of the given width (or the diametral section of a circular hole of the given radius), incident sound on the left and the transmitted wavefronts sketched on the right. Give exactly one of width/radius, matching slit_transmission_coefficient / circular_aperture_transmission_coefficient.

Parameters

NameDescription
depthWall thickness d, in metres.
axExisting axes, or None to create a figure.
widthSlit width w, in metres.
radiusCircular-hole radius, in metres.
languageLabel language, "en" (default) or "es".
kwargsForwarded to the wall rectangles.

Returns: The axes.

slit_resonance_frequencies(
depth: float,
width: float,
*,
orders: int = 3,
speed_of_sound: float = 343.0,
) -> np.ndarray

Slit resonance frequencies (Hopkins Eq. 4.101).

Maxima in the transmission coefficient (dips in R) occur where the effective slit depth is a half-wavelength multiple. Solved iteratively because the end correction e depends weakly on frequency.

Parameters

NameDescription
depthSlit depth d, in m (> 0).
widthSlit width w, in m (> 0).
ordersNumber of resonance orders z = 1..orders (>= 1).
speed_of_soundSpeed of sound in air c0 (Default: 343 m/s).

Returns: The resonance frequencies (Hz), one per order.

Raises

ExceptionWhen
ValueErrorfor a non-positive input, orders < 1, or a slit so wide relative to its depth that the effective depth is non-positive (no resonance exists; width must be much less than the wavelength).
slit_transmission_coefficient(
frequency: ArrayLike,
width: float,
depth: float,
*,
field: str = 'diffuse',
position: str = 'mid',
speed_of_sound: float = 343.0,
) -> ApertureTransmissionResult

Transmission coefficient of a straight-edged slit (Hopkins Eq. 4.99).

Parameters

NameDescription
frequencyBand centre frequencies f, in hertz (array, > 0).
widthSlit width w, in m (> 0).
depthSlit depth d (wall thickness across the slit), in m (> 0).
field"diffuse" () or "normal" ().
position"mid" () or "edge" ().
speed_of_soundSpeed of sound in air c0 (Default: 343 m/s).

Returns: An ApertureTransmissionResult (kind "slit").

Raises

ExceptionWhen
ValueErrorfor a non-positive input or unknown field/position.
transmission_loss_from_coefficient(tau: ArrayLike) -> np.ndarray

Sound reduction index from a transmission coefficient.

Parameters

NameDescription
tauTransmission coefficient(s) tau (> 0). Values above 1 (a resonating aperture that transmits more than the incident intensity) give a negative R.

Returns: The sound reduction index R, in dB.

Raises

ExceptionWhen
ValueErrorfor a non-positive coefficient.