vibration.structural.junction_transmission
Bending-wave transmission coefficients for rigid plate junctions (Hopkins 2007, Sound Insulation, Section 5.2.1.3; Cremer et al. 1973; Craik 1981, 1996).
The wave approach models a plane bending wave that is incident on a rigid
junction of thin plates at an angle theta and, assuming the junction beam is
simply supported (pinned so it can rotate but not translate), produces only
reflected and transmitted bending waves (no in-plane conversion). The
resulting angle-resolved transmission coefficients are frequency independent,
which is what makes them convenient closed-form building blocks for
statistical-energy-analysis (SEA) and the EN 12354 flanking model. This module
implements the rigid X, T, L and in-line junctions of two thin, homogeneous,
isotropic plates.
Wave parameters (Hopkins Eqs 5.10 and 5.11, after Cremer et al. 1973). With
plate i of thickness h_i, quasi-longitudinal wave speed cL_i,
surface density rho_s,i (kg/m^2), bending stiffness per unit width B_i
and critical frequency fc_i:
chi is the ratio of bending wavenumbers (it fixes the total-internal-
reflection cut-off ) and psi is the
ratio of the plates’ bending-moment mobilities.
Transmission around a corner (Hopkins Eq. 5.12, Craik 1981/1996). For an incident wave on plate 1, if ,
and for (no propagating transmitted wave beyond the cut-off angle).
Transmission across a straight section (Hopkins Eq. 5.13, Craik 1981/1996). Only the X-junction and T-junction (1) have an in-line (straight-through) section. If ,
(the same denominator shape as Eq. 5.12), and for ,
with .
Junction constants. J1, J2 set the corner coefficient and J3 the
straight one:
=============== ==== ===== ===== Junction J1 J2 J3 =============== ==== ===== ===== X 1 1 1 T-junction (1) 2 0.5 0.5 T-junction (2) 2 2 — L 4 1 — =============== ==== ===== =====
For T-junction (1) plates 1 and 3 are identical; for T-junction (2) plates 2 and 4 are identical. The straight section is undefined for T-junction (2) and for the L-junction.
In-line junction (Hopkins Eq. 5.14, Cremer et al. 1973). Two collinear plates (a change of section). Only normal incidence is used; it is within 1 dB of the angular average when :
Angular average (Hopkins Eq. 5.6). In a diffuse vibration field every angle of incidence is equally probable and the incident intensity carries a obliquity factor, so the average transmission coefficient is:
(the weight already normalises the average, since ).
Coupling loss factor (Hopkins Eq. 2.154). For a source plate i of area
S_i, bending-wave group velocity cg_i and junction length L_ij:
Vibration reduction index (Hopkins Eq. 5.116). The wave-approach value of
the EN 12354 junction descriptor, with fc_j the critical frequency of the
receiving plate and the reference frequency
Hz:
Combined with the reciprocity relationship below ( with ) this form is symmetric, , as EN 12354 and ISO 10848 require of the junction descriptor.
Reciprocity (Hopkins Eq. 5.7, the SEA consistency relationship). The angular averages of the two directions are linked by , i.e. .
Two shortcuts for right-angle joints (Norton & Karczub 2003, Section
6.6.1). Alongside the angle-resolved wave approach above, the SEA literature
uses a pair of closed forms that need no integration, which is what the
experimental SEA of phonometry.vibration.structural.experimental_sea is normally
compared against:
right_angle_transmission_coefficient(Norton Eqs. 6.53 to 6.55, after Bies & Hamid and Cremer et al.). The normal-incidence coefficient of two plates at right angles is with (note this is a differentpsifrom Hopkins Eq. 5.11 above), and the random incidence value follows from the empirical factor with . Feeding it tocoupling_loss_factorreproduces Norton Eq. (6.52), , identically: that equation and Hopkins Eq. (2.154) are the same expression once .point_connection_coupling_loss_factor(Norton Eq. 6.56, after Clarkson & Ranky). Plates joined atNdiscrete points (bolts, rivets, spot welds) rather than along a line. Use it when the bending wavelength is shorter than the joint length, and the line-junction route above when it is longer.
Auto-generated from the source docstrings by
scripts/generate_api_docs.py(make api-docs). Do not edit by hand.
angular_average_transmission_coefficient
Section titled “angular_average_transmission_coefficient”angular_average_transmission_coefficient( chi: float, psi: float, junction: str = 'X', *, section: str = 'corner',) -> floatDiffuse-field angular average of a transmission coefficient (Hopkins 5.6).
, evaluated by adaptive quadrature.
Parameters
| Name | Description |
|---|---|
chi | Wave parameter chi (Eq. 5.10, > 0). |
psi | Wave parameter psi (Eq. 5.11, > 0). |
junction | "X", "T1", "T2" or "L". |
section | "corner" (tau12, default) or "straight" (tau13; only for "X"/"T1"). |
Returns: The angular-average transmission coefficient tau_bar.
Raises
| Exception | When |
|---|---|
| ValueError | for a non-positive chi/psi, an unknown junction or section, or a straight section that does not exist. |
corner_transmission_coefficient
Section titled “corner_transmission_coefficient”corner_transmission_coefficient( angle: ArrayLike, chi: float, psi: float, junction: str = 'X',) -> NDArray[np.float64]Transmission around a corner tau12(theta) (Hopkins Eq. 5.12).
Returns 0 for angles beyond the cut-off
(only reached when ).
Parameters
| Name | Description |
|---|---|
angle | Incidence angle theta, in radians (scalar or array, ). |
chi | Wave parameter chi (Eq. 5.10, > 0). |
psi | Wave parameter psi (Eq. 5.11, > 0). |
junction | "X", "T1", "T2" or "L". |
Returns: tau12(theta) (same shape as angle).
Raises
| Exception | When |
|---|---|
| ValueError | for a non-positive chi/psi, an out-of-range angle or an unknown junction. |
coupling_loss_factor
Section titled “coupling_loss_factor”coupling_loss_factor( transmission_coefficient: ArrayLike, group_velocity: float, junction_length: float, frequency: ArrayLike, plate_area: float,) -> NDArray[np.float64]Coupling loss factor from a transmission coefficient (Hopkins Eq. 2.154).
with the
source-plate bending-wave group velocity cg_i, the junction length
L_ij, the frequency f and the source-plate area S_i.
Parameters
| Name | Description |
|---|---|
transmission_coefficient | Angular-average tau_ij (scalar/array). |
group_velocity | Source-plate bending-wave group velocity cg_i, in m/s (> 0). For a thin plate with the bending phase speed cB (see phonometry.vibration.structural.point_mobility.plate_bending_wave_speed). |
junction_length | Junction length L_ij, in m (> 0). |
frequency | Frequency f, in hertz (scalar or array, > 0). |
plate_area | Source-plate area S_i, in m^2 (> 0). |
Returns: The coupling loss factor eta_ij (broadcast of the inputs).
Raises
| Exception | When |
|---|---|
| ValueError | for a non-positive input. |
inline_transmission_coefficient
Section titled “inline_transmission_coefficient”inline_transmission_coefficient(chi: float, psi: float) -> floatNormal-incidence transmission across an in-line junction (Hopkins 5.14).
(Cremer et al. 1973). For identical plates () this is 1 (a continuous plate transmits fully).
Parameters
| Name | Description |
|---|---|
chi | Wave parameter chi (Eq. 5.10, > 0). |
psi | Wave parameter psi (Eq. 5.11, > 0). |
Returns: tau12(0 deg).
Raises
| Exception | When |
|---|---|
| ValueError | for a non-positive chi/psi. |
junction_transmission
Section titled “junction_transmission”junction_transmission( junction: str, thickness1: float, wave_speed1: float, surface_density1: float, thickness2: float, wave_speed2: float, surface_density2: float, *, angles_deg: ArrayLike | None = None,) -> JunctionTransmissionResultBending-wave transmission of a rigid perpendicular plate junction.
Builds the angle-resolved corner (and, for X / T-junction (1), straight)
transmission coefficients of Hopkins Eqs 5.12/5.13 and their diffuse-field
angular averages (Eq. 5.6) from the two plates’ properties, together with
the thin-plate critical frequencies
( m/s)
used by the Eq. 5.116 vibration reduction index. For the in-line junction
(normal incidence only) use inline_transmission_coefficient.
Parameters
| Name | Description |
|---|---|
junction | "X", "T1", "T2" or "L". |
thickness1 | Thickness h1 of the source plate, in m (> 0). |
wave_speed1 | Quasi-longitudinal wave speed cL1 of the source plate, in m/s (> 0). |
surface_density1 | Surface density rho_s1 of the source plate, in kg/m^2 (> 0). |
thickness2 | Thickness h2 of the receiving plate, in m (> 0). |
wave_speed2 | Quasi-longitudinal wave speed cL2 of the receiving plate, in m/s (> 0). |
surface_density2 | Surface density rho_s2 of the receiving plate, in kg/m^2 (> 0). |
angles_deg | Incidence-angle grid in degrees (Default: 0 to 90 in 91 one-degree steps). |
Returns: A JunctionTransmissionResult.
Raises
| Exception | When |
|---|---|
| ValueError | for a non-positive input or an unknown junction. |
junction_wave_parameters
Section titled “junction_wave_parameters”junction_wave_parameters( thickness1: float, wave_speed1: float, surface_density1: float, thickness2: float, wave_speed2: float, surface_density2: float,) -> tuple[float, float]Wave parameters chi and psi of a plate pair (Hopkins 5.10/5.11).
(Eq. 5.10) and (Eq. 5.11), with plate 1 the plate carrying the incident wave.
Parameters
| Name | Description |
|---|---|
thickness1 | Thickness h1 of plate 1, in m (> 0). |
wave_speed1 | Quasi-longitudinal wave speed cL1 of plate 1, in m/s (> 0). |
surface_density1 | Surface density rho_s1 of plate 1, in kg/m^2 (> 0). |
thickness2 | Thickness h2 of plate 2, in m (> 0). |
wave_speed2 | Quasi-longitudinal wave speed cL2 of plate 2, in m/s (> 0). |
surface_density2 | Surface density rho_s2 of plate 2, in kg/m^2 (> 0). |
Returns: The pair (chi, psi).
Raises
| Exception | When |
|---|---|
| ValueError | for a non-positive input. |
JunctionTransmissionResult
Section titled “JunctionTransmissionResult”JunctionTransmissionResult( junction: str, chi: float, psi: float, critical_frequency1: float, critical_frequency2: float, angles_deg: np.ndarray, corner: np.ndarray, straight: np.ndarray | None, corner_average: float, straight_average: float | None, thickness1: float | None = None, thickness2: float | None = None,)Bending-wave transmission across a rigid plate junction (Hopkins 5.2.1.3).
Attributes
| Name | Description |
|---|---|
junction | Junction type ("X", "T1", "T2" or "L"). |
chi | Wave parameter chi (Eq. 5.10). |
psi | Wave parameter psi (Eq. 5.11). |
critical_frequency1 | Critical frequency fc_1 of the source plate, in hertz (thin plate, m/s). |
critical_frequency2 | Critical frequency fc_2 of the receiving plate, in hertz (thin plate, m/s). |
angles_deg | Incidence-angle grid, in degrees. |
corner | Corner transmission coefficient tau12(theta) on the grid. |
straight | Straight-section coefficient tau13(theta) on the grid, or None when the junction has no straight section. |
corner_average | Diffuse-field angular average tau_bar_12 (Eq. 5.6). |
straight_average | Angular average tau_bar_13, or None. |
thickness1 | Plate 1 thickness, in metres, retained (with thickness2) so plot_geometry can draw the junction; appended after the original fields and None for hand-built results. |
thickness2 | Plate 2 thickness, in metres, or None. |
JunctionTransmissionResult.corner_reduction_index
Section titled “JunctionTransmissionResult.corner_reduction_index”property
Wave-approach K_12 of the corner path, in dB (Hopkins Eq. 5.116).
with the receiving
plate’s critical frequency fc_2. The value is symmetric: building
the reverse junction (plates swapped, and for a T-junction the matching
constants T1 <-> T2) gives the same .
JunctionTransmissionResult.plot()
Section titled “JunctionTransmissionResult.plot()”JunctionTransmissionResult.plot( ax: Axes | None = None, *, language: str = 'en', **kwargs: Any,) -> AxesPlot tau(theta) versus incidence angle for this junction.
Requires matplotlib (pip install phonometry[plot]); returns the
Axes.
JunctionTransmissionResult.plot_geometry()
Section titled “JunctionTransmissionResult.plot_geometry()”JunctionTransmissionResult.plot_geometry( ax: Axes | None = None, *, language: str = 'en', **kwargs: Any,) -> AxesDraw the plate-junction cross-section to scale.
Requires matplotlib (pip install phonometry[plot]); returns the
Axes.
Raises
| Exception | When |
|---|---|
| ValueError | If the result does not retain its geometry. |
plot_junction_geometry
Section titled “plot_junction_geometry”plot_junction_geometry( junction: str, thickness1: float, thickness2: float, ax: Axes | None = None, *, language: str = 'en', **kwargs: Any,) -> AxesDraw a plate junction cross-section to scale.
Plate 1 runs horizontally; the perpendicular plate(s) of thickness 2
form the L, T or X. The incident bending wave arrives on plate 1 and
the junction type follows
junction_transmission.
Parameters
| Name | Description |
|---|---|
junction | "L", "T1", "T2" or "X". |
thickness1 | Plate 1 thickness, in metres. |
thickness2 | Plate 2 thickness, in metres. |
ax | Existing axes, or None to create a figure. |
language | Label language, "en" (default) or "es". |
kwargs | Forwarded to the plate-1 rectangle. |
Returns: The axes.
point_connection_coupling_loss_factor
Section titled “point_connection_coupling_loss_factor”point_connection_coupling_loss_factor( frequency: ArrayLike, n_connections: int, *, thickness1: float, thickness2: float, surface_density1: float, surface_density2: float, wave_speed1: float, wave_speed2: float, plate_area1: float,) -> NDArray[np.float64]Coupling loss factor of a point-connected plate pair (Norton Eq. 6.56).
Two homogeneous plates joined by N bolts, rivets or spot welds rather
than along a continuous line:
with rho_si the surface density in kg/m^2,
and S1 the source-plate area. Norton
recommends it when the bending wavelength in the plates is shorter than
the length of the connected edge, and the line junction
(coupling_loss_factor on
right_angle_transmission_coefficient) when it is longer. The
result falls as , unlike the line junction’s
.
Parameters
| Name | Description |
|---|---|
frequency | Band centre frequency f, in hertz (scalar/array, >0). |
n_connections | Number of point connections N (integer >= 1). |
thickness1 | Thickness h1 of the source plate, in m (> 0). |
thickness2 | Thickness h2 of the receiving plate, in m (> 0). |
surface_density1 | rho_s1, in kg/m^2 (> 0). |
surface_density2 | rho_s2, in kg/m^2 (> 0). |
wave_speed1 | Quasi-longitudinal wave speed cL1, in m/s (> 0). |
wave_speed2 | Quasi-longitudinal wave speed cL2, in m/s (> 0). |
plate_area1 | Source-plate area S1, in m^2 (> 0). |
Returns: The coupling loss factor eta_12 per band.
Raises
| Exception | When |
|---|---|
| ValueError | for a non-positive or non-integer input. |
right_angle_transmission_coefficient
Section titled “right_angle_transmission_coefficient”right_angle_transmission_coefficient( thickness1: float, thickness2: float, *, density1: float, density2: float, wave_speed1: float, wave_speed2: float, incidence: str = 'random',) -> floatRight-angle plate junction tau12 (Norton Eqs. 6.53 to 6.55).
The closed form used throughout the SEA literature for two flat plates coupled at right angles along a line, with no angular integration:
tau12(0) is symmetric in the two plates (swapping them inverts
psi_N, which the expression does not see); the random-incidence factor
is not, so tau12 and tau21 differ. Pass the result to
coupling_loss_factor with the source plate’s group velocity
to obtain Norton Eq. (6.52).
rho here is the volume density in kg/m^3, not the surface density
of junction_wave_parameters.
Parameters
| Name | Description |
|---|---|
thickness1 | Thickness h1 of the source plate, in m (> 0). |
thickness2 | Thickness h2 of the receiving plate, in m (> 0). |
density1 | Density rho1 of the source plate, in kg/m^3 (> 0). |
density2 | Density rho2 of the receiving plate, in kg/m^3 (> 0). |
wave_speed1 | Quasi-longitudinal wave speed cL1, in m/s (> 0). |
wave_speed2 | Quasi-longitudinal wave speed cL2, in m/s (> 0). |
incidence | "random" (Default, Eq. 6.55) or "normal" (Eq. 6.53 alone). |
Returns: The transmission coefficient tau12.
Raises
| Exception | When |
|---|---|
| ValueError | for a non-positive input or an unknown incidence. |
straight_transmission_coefficient
Section titled “straight_transmission_coefficient”straight_transmission_coefficient( angle: ArrayLike, chi: float, psi: float, junction: str = 'X',) -> NDArray[np.float64]Transmission across a straight section tau13(theta) (Hopkins 5.13).
Defined only for the X-junction and T-junction (1); both incidence regimes and are covered.
Parameters
| Name | Description |
|---|---|
angle | Incidence angle theta, in radians (scalar or array, ). |
chi | Wave parameter chi (Eq. 5.10, > 0). |
psi | Wave parameter psi (Eq. 5.11, > 0). |
junction | "X" or "T1" (the only junctions with a straight section). |
Returns: tau13(theta) (same shape as angle).
Raises
| Exception | When |
|---|---|
| ValueError | for a non-positive chi/psi, an out-of-range angle, or a junction without a straight section. |
wave_vibration_reduction_index
Section titled “wave_vibration_reduction_index”wave_vibration_reduction_index( transmission_coefficient: ArrayLike, critical_frequency_receiver: float,) -> NDArray[np.float64]Vibration reduction index from a transmission coefficient (Hopkins 5.116).
with fc_j the critical frequency of the receiving plate and the
reference frequency Hz. Because the
angular-average transmission coefficients satisfy the reciprocity
relationship
(Eq. 5.7), this form is symmetric: .
Parameters
| Name | Description |
|---|---|
transmission_coefficient | tau_ij (scalar or array, > 0). |
critical_frequency_receiver | Critical frequency fc_j of the receiving plate, in hertz (> 0). |
Returns: The vibration reduction index K_ij, in dB.
Raises
| Exception | When |
|---|---|
| ValueError | for a non-positive tau or fc_j. |