← [Documentation index](README.md)

# Bending-wave transmission at plate junctions (Cremer / Craik / Hopkins)

When a bending wave travelling on a wall or floor reaches a rigid junction with
another plate, part of its energy is reflected and part is transmitted into the
connected plates. The **wave approach** of Cremer et al. (1973), tabulated by
Craik (1981, 1996) and collected in Hopkins (2007, *Sound Insulation*,
Section 5.2.1.3), gives the transmission coefficient in closed form for the four
most common junctions of thin, homogeneous, isotropic plates: the **X**, **T**,
**L** and **in-line** junctions. Modelling the junction as a simply supported
(pinned) massless beam forces an incident bending wave to generate only
reflected and transmitted *bending* waves, with no conversion to in-plane
waves, and the resulting coefficients are **independent of frequency**. That is
what makes them convenient closed-form inputs for statistical energy analysis
(SEA) and for the EN 12354 flanking-transmission model, where they feed the
coupling loss factor `ηij` and the vibration reduction index `Kij`.

<picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/junction_transmission_dark.svg"><img src="https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/junction_transmission.svg" alt="Transmission coefficient versus incidence angle for a rigid X-junction of a 100 mm and a 200 mm concrete plate, showing the corner coefficient tau12 and the straight-section coefficient tau13 falling from their normal-incidence values to zero at grazing incidence, with their diffuse-field angular averages marked as horizontal lines" width="82%"></picture>

<details>
<summary>Show the code for this figure</summary>

```python
import matplotlib.pyplot as plt
from phonometry import junction_transmission

# X-junction between a 100 mm and a 200 mm concrete plate (cL = 3200 m/s).
res = junction_transmission("X", 0.1, 3200.0, 240.0, 0.2, 3200.0, 480.0)
res.plot()  # tau(theta) for the corner and straight paths, with averages
plt.show()
```

</details>

## 1. Wave parameters χ and ψ (Eqs 5.10, 5.11)

With plate `i` of thickness `h_i`, quasi-longitudinal wave speed `cL_i` and
surface density `ρs_i`, the whole family of coefficients depends on just two
dimensionless ratios (Cremer et al. 1973):

```
χ = kB2 / kB1 = (ρs2 B1 / (ρs1 B2))**0.25 = sqrt(h1 cL1 / (h2 cL2)) = sqrt(fc2 / fc1)
ψ = B2 kB2**2 / (B1 kB1**2) = (h2 cL2 ρs2) / (h1 cL1 ρs1) = (ρs2 fc1) / (ρs1 fc2)
```

`χ` is the ratio of the plates' bending wavenumbers (equivalently the square
root of their critical-frequency ratio) and sets the total-internal-reflection
cut-off angle `θco = arcsin(χ)`; `ψ` is the ratio of their bending-moment
mobilities. For **identical plates** both are 1.

```python
from phonometry import junction_wave_parameters

chi, psi = junction_wave_parameters(0.1, 3200.0, 240.0, 0.2, 3200.0, 480.0)
#  -> (sqrt(0.5), 4.0)
```

## 2. Transmission around a corner and across a straight section

For an incident wave on plate 1, transmission **around the corner** (into the
perpendicular plate 2) is `τ12(θ)` (Eq. 5.12), and transmission **across the
straight section** (into the collinear plate 3, X- and T-junction (1) only) is
`τ13(θ)` (Eq. 5.13):

```
              0.5 J1 J2 ψ cos θ sqrt(χ² − sin²θ)
τ12(θ) = ─────────────────────────────────────────────────── ,   χ ≥ sin θ
          (J2 ψ)² + χ² + J2 ψ ( sqrt((1+sin²θ)(χ²+sin²θ))
                              + sqrt((1−sin²θ)(χ²−sin²θ)) )

τ12(θ) = 0 ,   χ < sin θ   (no propagating transmitted wave beyond the cut-off)
```

The junction constants `J1`, `J2`, `J3` select the geometry:

| Junction | `J1` | `J2` | `J3` |
|---|---|---|---|
| X | 1 | 1 | 1 |
| T-junction (1) | 2 | 0.5 | 0.5 |
| T-junction (2) | 2 | 2 | — |
| L | 4 | 1 | — |

The straight section is undefined for the T-junction (2) and the L-junction. In
the assumed symmetry the X-junction has plates 1 and 3 identical and plates 2
and 4 identical; T-junction (1) has plates 1 and 3 identical; T-junction (2) has
plates 2 and 4 identical.

```python
import numpy as np
from phonometry import (
    corner_transmission_coefficient,
    straight_transmission_coefficient,
)

theta = np.radians(np.linspace(0.0, 90.0, 91))
tau12 = corner_transmission_coefficient(theta, chi, psi, "X")
tau13 = straight_transmission_coefficient(theta, chi, psi, "X")
```

## 3. Diffuse-field angular average (Eq. 5.6)

In a diffuse vibration field every angle of incidence is equally probable and
the incident intensity carries a `cos θ` obliquity factor, so the average
transmission coefficient is

```
τ̄ij = ∫₀^{π/2} τij(θ) cos θ dθ
```

(the `cos θ` weight already normalises the average). For **identical plates**
the algebra collapses to exact fractions that serve as the library's
first-principles oracle:

* X-junction corner and straight: `τij(θ) = cos²θ / 8`, so `τ̄ij = 1/12`;
* L-junction corner: `τij(θ) = cos²θ / 2`, so `τ̄ij = 1/3`;
* in-line junction: `τ12(0°) = 1` (a continuous plate transmits fully).

```python
from phonometry import angular_average_transmission_coefficient

angular_average_transmission_coefficient(1.0, 1.0, "X", section="corner")  # 1/12
angular_average_transmission_coefficient(1.0, 1.0, "L", section="corner")  # 1/3
```

The two directions obey the SEA consistency relationship (Eq. 5.7),
`τ̄12 = χ · τ̄21`, so only one direction needs to be computed.

## 4. Coupling loss factor and vibration reduction index

The angular average is the bridge to the two junction descriptors used in
SEA-based building models. The **coupling loss factor** (Eq. 2.154) for a source
plate `i` of area `S_i`, bending-wave group velocity `cg_i` and junction length
`L_ij` is

```
ηij = cg_i L_ij τij / (2 π² f S_i)
```

and the wave-approach **vibration reduction index** (Eq. 5.116) is

```
Kij = 10 lg(1 / τij) + 5 lg(fc_j / f_ref),   f_ref = 1000 Hz
```

with `fc_j` the critical frequency of the *receiving* plate. Combined with the
Eq. 5.7 reciprocity this form is symmetric, `Kij = Kji`, as EN 12354 requires
of the junction descriptor. For the identical 100 mm concrete X-junction
(`fc ≈ 203 Hz`), `Kij = 10 lg 12 + 5 lg(203 / 1000) ≈ 7.3 dB`.

```python
from phonometry import (coupling_loss_factor, junction_transmission,
                        wave_vibration_reduction_index)

eta = coupling_loss_factor(1.0 / 12.0, group_velocity=200.0,
                           junction_length=4.0, frequency=500.0, plate_area=10.0)
res = junction_transmission("X", 0.1, 3200.0, 240.0, 0.1, 3200.0, 240.0)
kij = wave_vibration_reduction_index(res.corner_average,
                                     res.critical_frequency2)  # 7.33 dB
kij = res.corner_reduction_index  # the same, precomputed on the result
```

The measured, EN 12354 counterpart of `Kij` (from the direction-averaged
velocity level difference) is the separate
[flanking-transmission](insulation-field.md) `vibration_reduction_index`; this
guide is the closed-form *predicted* value from the wave approach.

## References

- Cremer, L., Heckl, M., & Ungar, E. E. (1973). *Structure-borne sound* (1st
  ed.). Springer.
- Craik, R. J. M. (1996). *Sound transmission through buildings using
  statistical energy analysis*. Gower.
- Hopkins, C. (2007). *Sound insulation* (Section 5.2.1.3).
  Butterworth-Heinemann.

See the [bibliography](references.md) for full entries.
