Skip to content

noise_control.enclosures

Insertion loss of a close or free-standing machine enclosure.

Wrapping a machine in a sealed enclosure reduces the radiated noise by the transmission loss of its panels, minus a penalty for the reverberant build-up inside the small, hard cavity. Bies, Hansen & Howard, Engineering Noise Control 5th ed., §7.4.2 (Eqs. (7.103), (7.111)) write the net reduction as

IL = R - C, C = 10 log10[ 0.3 + S_E (1 - alpha_i) / (S_i alpha_i) ],

where R is the field-incidence transmission loss of the enclosure panels, S_E the external surface area, S_i the internal surface area (including the machine) and alpha_i the mean absorption of the enclosure interior. The reverberant term is exactly S_E over the interior room constant R_i = S_i alpha_i / (1 - alpha_i) (phonometry.room.room_constant), so

C = 10 log10( 0.3 + S_E / R_i ).

A hard interior (alpha_i small) makes C large and wastes much of the panel R; lining the enclosure drives C toward its floor 10 log10 0.3 = -5.2 dB (a fully absorbing interior, where IL = R + 5.2). Bies terms this net reduction the enclosure noise reduction; it is the insertion loss of the enclosure.

The panel transmission loss R is supplied by the caller — measured, or predicted by a panel model — as a per-band array, a callable of frequency, or a panel prediction result (a phonometry.building.SoundReductionResult or phonometry.building.ApertureTransmissionResult, matched structurally so no dependency on building is introduced). This module never predicts R itself; it combines a given R with the interior absorption. The interior room constant reuses phonometry.room.room_constant.

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

enclosure_insertion_loss(
panel_transmission_loss: ArrayLike | Callable[[NDArray[np.float64]], ArrayLike] | PanelTransmissionResult,
external_area: float,
internal_area: float,
internal_absorption: ArrayLike,
*,
frequencies: ArrayLike | None = None,
) -> EnclosureResult

Net insertion loss of a machine enclosure (Bies Eqs. (7.103), (7.111)).

IL = R - C with C = 10 log10(0.3 + S_E / R_i) and the interior room constant R_i = S_i alpha_i / (1 - alpha_i).

Parameters

NameDescription
panel_transmission_lossPanel transmission loss R per band, dB. One of: a per-band array (measured); a callable mapping a frequency array to per-band R (then frequencies is required); or a panel prediction result carrying transmission_loss and frequencies, such as the SoundReductionResult of phonometry.single_panel_transmission_loss / phonometry.double_wall_transmission_loss or the ApertureTransmissionResult of phonometry.composite_transmission_loss (its frequencies are then used unless frequencies is given). This function does not predict R itself.
external_areaExternal enclosure surface area S_E, m2.
internal_areaInternal surface area S_i (including the machine), m2.
internal_absorptionMean interior absorption alpha_i in (0, 1) (scalar or per-band).
frequenciesBand centre frequencies, Hz; required when panel_transmission_loss is a callable, optional otherwise (used to label the result and the plot).

Returns: An EnclosureResult.

EnclosureResult(
frequencies: np.ndarray | None,
panel_transmission_loss: np.ndarray,
correction: np.ndarray,
insertion_loss: np.ndarray,
external_area: float,
internal_area: float,
room_constant: np.ndarray,
)

Insertion loss of a machine enclosure over frequency (Bies §7.4.2).

Attributes

NameDescription
frequenciesFrequencies f, Hz, or None if the panel R was given as a bare per-band array with no frequency labels.
panel_transmission_lossThe supplied panel transmission loss R per band, dB.
correctionThe interior-build-up correction C per band, dB.
insertion_lossThe net enclosure insertion loss IL = R - C, dB.
external_areaExternal enclosure surface area S_E, m2.
internal_areaInternal surface area S_i, m2.
room_constantInterior room constant R_i per band, m2.
EnclosureResult.plot(
ax: Axes | None = None,
*,
language: str = 'en',
**kwargs: Any,
) -> Axes

Plot the panel R, correction C and net insertion loss.

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

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

Render a machine-enclosure insertion-loss fiche to path.

Writes a one-page enclosure-performance sheet: the method-basis line naming the Bies, Hansen & Howard insertion-loss model (Engineering Noise Control 5th ed., section 7.4.2), an optional metadata header (client, enclosed machine, test environment, instrumentation, climate, date), a per-band table (nominal frequency, the supplied panel transmission loss R, the interior build-up correction C and the net insertion loss IL = R - C) beside the R, C and IL curves, the boxed mean insertion loss over the analysis bands with the external and internal surface areas, an optional verdict row against a declared minimum, and a method-basis strip stating IL = R - C with C = 10 lg(0.3 + S_E / R_i).

Parameters

NameDescription
pathDestination path of the PDF file.
metadataOptional ReportMetadata supplying the header (client, specimen the enclosed machine, test_room the test environment, instrumentation, temperature, relative_humidity, pressure, test_date), the footer identity (laboratory, operator, report_id, notes) and, via requirement, a declared minimum mean insertion loss (more insertion loss is better). The surface areas come from the result itself.
engineRendering back end; only "reportlab" is supported.
verboseWhen True the per-band table adds the interior room constant R_i column.
languageFiche language: "en" (default) or "es".

Returns: The written path as a str.

Raises

ExceptionWhen
ValueErrorIf engine is not "reportlab" or language is unknown.
ImportErrorIf reportlab (or, for the figure, matplotlib) is not installed (pip install phonometry[report]).
Created and maintained by· GitHub· PyPI· All projects