Ir al contenido

noise_control.duct_modes

La referencia de la API se publica en inglés en los dos idiomas: se genera a partir de los docstrings del código, que son su texto original.

Higher-order acoustic modes in ducts, with the mean-flow cut-on shift.

Every plane-wave duct method has the same expiry date: the frequency at which the first higher-order mode cuts on. Below it a duct carries only plane waves, the four-pole (transfer-matrix) silencer algebra of phonometry.noise_control.silencers is exact and a single sound pressure describes the whole cross section. Above it several modes propagate at once, each with its own axial wavenumber, and a plane-wave prediction quietly stops being right.

This module implements the cut-on analysis of Norton & Karczub, Fundamentals of Noise and Vibration Analysis for Engineers 2nd ed., section 7.3:

  • circular ducts (Eq. 7.6), , with the eigenvalues of Table 7.1 that solve (the first is 1.8412, which sets the plane-wave limit );
  • rectangular ducts (Eq. 7.10), ;
  • the mean-flow correction (Eq. 7.8): a uniform axial flow of Mach number M lowers every cut-on frequency by and moves the cut-on from to (Eq. 7.9), so the dispersion curve, symmetric about the frequency axis in still air, becomes asymmetric. For a turbulent rather than uniform profile Norton notes that replacing M by the centre-line Mach number M_0 represents the convective effect adequately.

The practical consequence in a ventilation duct is blunt: a 0.65 m x 0.4 m air-conditioning duct cuts on at 264 Hz, so plane-wave silencer algebra is valid only in the 63 Hz to 250 Hz octaves. plane_wave_limit returns that frequency and warn_above_plane_wave_limit issues the PlaneWaveWarning the silencer and duct-path results raise on the caller’s behalf.

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

circular_duct_cut_on(
diameter: float,
*,
flow_velocity: float = 0.0,
speed_of_sound: float = 343.0,
count: int = 6,
) -> DuctModeResult

Cut-on frequencies of the higher-order modes of a circular duct.

Norton & Karczub Eq. 7.6 with the Table 7.1 eigenvalues, corrected for a uniform axial mean flow by Eqs. 7.8 and 7.9:

The flow lowers every cut-on frequency and shifts the cut-on away from : the mode is already travelling upstream, against the flow, at the frequency at which it appears. Only the first twelve modes are tabulated by Norton, so count cannot exceed twelve.

Parameters

NameDescription
diameterInternal duct diameter, m (a_i is half of it).
flow_velocityMean axial flow speed U, m/s (0 for still air; use the centre-line speed for a turbulent profile).
speed_of_soundSpeed of sound c in the duct fluid, m/s.
countHow many higher-order modes to return, 1 to 12.

Returns: A DuctModeResult.

Raises

ExceptionWhen
ValueErrorFor a non-positive diameter, a sonic or supersonic flow, or a count outside 1 to 12.
DuctModeResult(
modes: tuple[tuple[int, int], ...],
cut_on: np.ndarray,
cut_on_no_flow: np.ndarray,
axial_wavenumber: np.ndarray,
mach: float,
section: str,
label: str,
)

Cut-on frequencies of the higher-order acoustic modes of a duct.

Attributes

NameDescription
modesMode orders (p, q), ordered by ascending no-flow cut-on frequency.
cut_onCut-on frequency of each mode with the mean flow applied, Hz.
cut_on_no_flowCut-on frequency of each mode in still air, Hz.
axial_wavenumberAxial wavenumber k_x at cut-on, 1/m (zero without flow, negative with it).
machMean-flow Mach number .
section"circular" or "rectangular".
labelA short human label of the duct.

property

The lowest cut-on frequency, Hz: plane waves only below it.

DuctModeResult.plot(
ax: Axes | None = None,
*,
language: str = 'en',
**kwargs: Any,
) -> Axes

Plot the cut-on ladder, with and without flow, over the mode order.

Requires matplotlib (pip install phonometry[plot]).

Parameters

NameDescription
axExisting axes, or None to create a figure.
languageLabel language, "en" (default) or "es".
kwargsForwarded to the with-flow Axes.plot.

Returns: The axes.

plane_wave_limit(
*,
diameter: float | None = None,
width: float | None = None,
height: float | None = None,
area: float | None = None,
flow_velocity: float = 0.0,
speed_of_sound: float = 343.0,
) -> float

The first cut-on frequency of a duct: plane waves only below it.

A convenience over circular_duct_cut_on and rectangular_duct_cut_on that takes whichever description of the cross section is at hand. Give either diameter, or both width and height, or area (treated as a circular duct of the equivalent diameter ).

Parameters

NameDescription
diameterInternal diameter of a circular duct, m.
widthCross-sectional dimension a of a rectangular duct, m.
heightCross-sectional dimension b of a rectangular duct, m.
areaCross-sectional area, m2, for a duct described by its area.
flow_velocityMean axial flow speed U, m/s.
speed_of_soundSpeed of sound c, m/s.

Returns: The lowest cut-on frequency, Hz.

Raises

ExceptionWhen
ValueErrorIf the cross section is not described exactly once.

A plane-wave duct method is evaluated above the first cut-on frequency.

Raised by the results that assume one-dimensional propagation (the reactive silencers, the duct-path cascade) when the analysis reaches frequencies at which higher-order modes propagate in the duct cross section. The numbers are still returned: above cut-on they describe the plane-wave mode only, and a measurement will show the extra modes.

rectangular_duct_cut_on(
width: float,
height: float,
*,
flow_velocity: float = 0.0,
speed_of_sound: float = 343.0,
count: int = 3,
) -> DuctModeResult

Cut-on frequencies of the higher-order modes of a rectangular duct.

Norton & Karczub Eq. 7.10, with the same convective factor as the circular case:

where a and b are the cross-sectional dimensions and (p, q) the mode order; (0, 0) is the plane wave and is excluded. The modes are returned in ascending cut-on order, so the first is always the half wavelength across the wider side.

Parameters

NameDescription
widthCross-sectional dimension a, m.
heightCross-sectional dimension b, m.
flow_velocityMean axial flow speed U, m/s.
speed_of_soundSpeed of sound c in the duct fluid, m/s.
countHow many higher-order modes to return (at least 1).

Returns: A DuctModeResult.

Raises

ExceptionWhen
ValueErrorFor non-positive dimensions, a sonic or supersonic flow, or a non-positive count.