---
title: "Sound power from surface vibration (ISO/TS 7849)"
description: "The ISO/TS 7849 estimation of airborne sound power from a machine's surface vibration: the radiated power P = Z_c⟨v²⟩Sε, the velocity level and its calibration, the surface mean, the radiation factor ε, and the sound power level L_W = L_v + 10 lg(S/S0) + 10 lg(ε) + 10 lg(411/400), with the Part 1 upper limit (ε=1) and the Part 2 engineering value."
references:
  - type: book
    authors: ["Cremer, L.", "Heckl, M.", "Petersson, B. A. T."]
    year: 2005
    title: "Structure-borne sound: Structural vibrations and sound radiation at audio frequencies"
    edition: "3rd ed."
    publisher: "Springer"
    doi: "10.1007/b137728"
    note: "The radiation-efficiency treatment behind section 3: coincidence, the cancellation below the critical frequency and the radiation of finite plates. ISBN 978-3-540-22696-3."
  - type: standard
    organization: "International Organization for Standardization"
    year: 2009
    title: "Acoustics — Determination of airborne sound power levels emitted by machinery using vibration measurement — Part 1: Survey method using a fixed radiation factor"
    designation: "ISO/TS 7849-1:2009"
    url: "https://www.iso.org/standard/40537.html"
    note: "The upper-limit method with ε = 1: the radiated power P = Z_c⟨v²⟩Sε (Formula 6), the velocity level and its calibration (Formulae 3, 8), the mean over the surface (Formulae 10/11), the extraneous correction (Table 2) and the sound power level with the fixed impedance term (Formula 12). Conformance is anchored on the standard's own worked calibration example."
  - type: standard
    organization: "International Organization for Standardization"
    year: 2009
    title: "Acoustics — Determination of airborne sound power levels emitted by machinery using vibration measurement — Part 2: Engineering method including determination of the adequate radiation factor"
    designation: "ISO/TS 7849-2:2009"
    url: "https://www.iso.org/standard/40538.html"
    note: "The engineering method with a measured band-wise radiation factor (Formula 4/8) and its sound power level (Formula 15). Conformance includes the exact round-trip between the radiation factor and L_W = 10 lg(P/P₀)."
---

import ThemeImage from '../../../components/ThemeImage.astro';
import ReportPreview from '../../../components/ReportPreview.astro';

The airborne sound power a machine radiates through the structure-borne
vibration of its outer surface can be estimated from the surface vibratory
velocity and a **radiation factor** `ε` (the radiation efficiency), without an
acoustic measurement. The radiated power is (ISO/TS 7849-1, Formula 6)

$$
P = Z_c \, \langle v^2 \rangle \, S \, \varepsilon \quad [\mathrm{W}],
$$

with `Z_c` the characteristic impedance of air, `⟨v²⟩` the mean-square vibratory
velocity over the radiating area `S`. Expressed in levels (velocity level re
`v₀ = 5·10⁻⁸ m/s`), the A-weighted sound power level is (Formula 12 / 15)

$$
L_W = L_v + 10\lg\frac{S}{S_0} + 10\lg\varepsilon
      + 10\lg\frac{Z_{c,n}}{Z_{c,0}},
$$

where `S₀ = 1 m²`, the normalized impedance `Z_{c,n} = 411 N·s/m³` and the
reference `Z_{c,0} = 400 N·s/m³` give the fixed `10 lg(411/400) = 0.118 dB`
term. This module feeds the structure-borne source and building prediction
standards (ISO 9611, EN 15657, EN 12354-5).

<ThemeImage src="https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/vibration_sound_power.svg" alt="Radiated sound power level per octave band, comparing the ISO/TS 7849-1 upper limit (radiation factor of one) with the ISO/TS 7849-2 engineering value (measured radiation factor)" width="82%" loading="eager" />

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

```python
import matplotlib.pyplot as plt
import numpy as np
from phonometry import emission

# Surface velocity levels and a measured radiation factor per octave band.
bands = np.array([125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0])
lv = np.array([78.0, 82.0, 85.0, 83.0, 79.0, 74.0])
eps = np.array([0.20, 0.45, 0.75, 0.95, 1.00, 1.00])

lw_max = emission.radiated_sound_power_level(lv, 1.6)  # Part 1, eps = 1
lw_eng = emission.radiated_sound_power_level(lv, 1.6, radiation_factor=eps)  # Part 2

x = np.arange(bands.size)
fig, ax = plt.subplots()
ax.bar(x - 0.2, lw_max, width=0.4, label="Part 1 upper limit ($\\varepsilon$ = 1)")
ax.bar(x + 0.2, lw_eng, width=0.4, label="Part 2 engineering ($\\varepsilon$ measured)")
ax.set_xticks(x, [f"{b:g}" for b in bands])
ax.set(xlabel="Frequency [Hz]", ylabel="Sound power level $L_W$ [dB re 1 pW]")
ax.legend()
plt.show()
```

</details>

## 1. The two parts

The two parts differ only in the radiation factor. **Part 1 (survey)** assumes
`ε = 1` and yields the *upper limit* `L_W,max`, needing only the velocity level
and the area. **Part 2 (engineering)** applies a frequency-band radiation factor
`εⱼ` determined (per ISO 9614) as `εⱼ = Pⱼ/(Z_{c,n}·⟨vⱼ²⟩·S)`.

```python
import numpy as np
from phonometry import emission

bands = np.array([250.0, 500.0, 1000.0, 2000.0])
lv = np.array([82.0, 85.0, 83.0, 79.0])          # mean velocity level per band [dB]

# Part 1 upper limit (epsilon = 1):
upper = emission.sound_power_from_vibration(lv, area=1.6, frequencies=bands)
print(round(upper.total_level, 1))               # e.g. 89.4  dB re 1 pW

# Part 2 engineering value with a measured radiation factor:
eps = np.array([0.45, 0.75, 0.95, 1.00])
eng = emission.sound_power_from_vibration(lv, area=1.6, radiation_factor=eps, frequencies=bands)
print(np.round(eng.sound_power_level, 1))        # per-band L_W
```

## 2. Velocity level, calibration and the radiation factor

The velocity level is `L_v = 20·lg(v/v₀)` (Formula 3); a sinusoidal calibration
acceleration converts as `L_v = 20·lg(â/(2πf·v₀·√2))` (Formula 8). The radiation
factor comes from an independently measured power:

```python
from phonometry import emission

# The standard's worked calibration EXAMPLE: 9.81 m/s^2 at 100 Hz.
print(round(float(emission.velocity_level_from_acceleration(9.81, 100.0)), 1))   # 106.9 dB

# Radiation factor from a measured power (ISO 9614): eps = P / (Zc <v^2> S).
eps = emission.radiation_factor(3.0e-4, area=2.0, mean_square_velocity=(1e-3)**2)
print(round(float(eps), 3))                                                # 0.365
```

Surface velocity levels from several positions are combined with the energetic
mean `mean_velocity_level` (Formula 10) or its area-weighted form (Formula 11),
and the correction `extraneous_velocity_correction` removes extraneous
vibration per Table 2.

## 3. When the radiation-factor assumption breaks

The whole method stands on one substitution: replacing the acoustic
measurement by `ε`. The Part 1 value `ε = 1` is close to the true radiation
factor only above the **critical (coincidence) frequency** of plate-like
parts, where bending waves travel faster than sound and the surface radiates
like a piston. Below coincidence, adjacent zones of the
plate move in antiphase and their radiation largely cancels: `ε` drops far
below one and falls quickly with decreasing frequency, so the survey method
can overstate the low-frequency bands of a large thin casing by 10 dB and
more. The same cancellation makes small sources radiate poorly (the acoustic
short circuit around an unbaffled panel). Two further assumptions are easy
to violate in the field:

* **The measured vibration must be the machine's own.** Vibration fed in
  from neighbouring machinery inflates `⟨v²⟩`; Table 2 prescribes the
  source-off check and `extraneous_velocity_correction` applies it.
* **The surface must be the dominant radiator.** Airborne sound from
  openings, intakes or internal sources that bypasses the measured casing is
  invisible to a velocity survey; the method characterises the
  structure-borne part only.

Part 2 exists exactly for the radiation-factor problem: it replaces the
fixed `ε = 1`
with a band-by-band `εⱼ` determined from one reference measurement of the
radiated power (ISO 9614 intensity), after which the velocity survey can be
repeated cheaply on nominally identical machines.

## 4. The measurement report (`.report()`)

A determination ends as a *document*. The `VibrationSoundPowerResult` exposes a
`.report()` method that writes a one-page PDF fiche laid out like a sound-power
test sheet: the standard-basis line naming the applied method (the ISO/TS
7849-1 survey method with a fixed radiation factor `ε = 1`, or the ISO/TS
7849-2 engineering method with a determined radiation factor), an optional
metadata header (client, machine/source, test environment, instrumentation,
climate, date), a per-band table (nominal octave/one-third-octave frequency,
the surface vibratory velocity level $L_v$ and the band sound-power level
$L_W$), the sound-power spectrum $L_W(f)$ with a nominal band axis, and a boxed
A-weighted sound power level $L_{WA}$ (dB re 1 pW) with the total $L_W$, the
radiating area $S$ and the applied method alongside.

The metadata is supplied through a `ReportMetadata`, whose applicable fields
here are the **machine/source description** (`specimen`), the **test
environment** (`test_room`), the **client**, the **instrumentation**, the
**temperature**, **relative humidity** and **ambient pressure**, the **date of
test** (`test_date`) and the footer identity (`laboratory`, `operator`,
`report_id`, `notes`); the radiating area $S$ comes from the result itself and
is printed in the result box, together with the sound-power relation
$L_W = L_v + 10\lg(S/S_0) + 10\lg\varepsilon + 10\lg(Z_{c,n}/Z_{c,0})$ in the
basis strip. Supplying `requirement` adds a PASS/FAIL verdict against a declared
A-weighted sound-power limit (a sound-power emission is a quantity where less is
better, so the source passes at or below the limit). `verbose=True` adds the
radiation factor $\varepsilon$ column to the table. `language="es"` renders the
Spanish fiche with comma decimals.

```python
import numpy as np
from phonometry import ReportMetadata, emission

freqs = np.array([125, 250, 500, 1000, 2000, 4000], float)
lv = np.array([78.0, 82, 85, 83, 79, 74])          # surface velocity level [dB]
eps = np.array([0.20, 0.45, 0.75, 0.95, 1.00, 1.00])  # measured radiation factor
res = emission.sound_power_from_vibration(
    lv, area=1.6, radiation_factor=eps, frequencies=freqs,
)

res.report(
    "vibration_sound_power.pdf",
    metadata=ReportMetadata(
        client="Example manufacturing plant",
        specimen="Gearbox casing (steel panel)",
        test_room="Machine hall (source vibration survey)",
        instrumentation="Piezoelectric accelerometer (ISO 16063-21 calibration), s/n 0042",
        laboratory="Phonometry reference example",
        report_id="EXAMPLE-7849",
        requirement=90.0,
    ),
)   # LWA = 88.7 dB(A) re 1 pW -> declared limit 90 dB(A): PASS
```

The example fiche is regenerated with `make reports` and kept rendered in the
repository; click the preview to open the PDF.

<ReportPreview
	name="iso7849_vibration_power_example"
	title="ISO/TS 7849 sound power from vibration example report (PDF)"
	description="One-page ISO/TS 7849-2 sound-power-from-vibration determination fiche: a header with the client, the machine/source, the machine-hall test environment and the accelerometer and climate, the octave-band table (125 Hz to 4 kHz) of surface vibratory velocity levels Lv and radiated band sound-power levels LW, the sound-power spectrum LW(f) with a nominal band axis, the boxed A-weighted sound power level LWA = 88.7 dB(A) re 1 pW with the total LW = 90.0 dB, the radiating area S = 1.60 m2 and the engineering method, and a PASS verdict against the declared 90 dB(A) limit, closed by a basis strip stating the LW = Lv + 10 lg(S/S0) + 10 lg(epsilon) + 10 lg(411/400) relation with its fixed impedance term and the radiation-factor model."
	caption="Sound power from vibration fiche (VibrationSoundPowerResult.report), an ISO/TS 7849-2 engineering-method determination with the measured radiation factor and the boxed LWA."
/>

## See also

- API reference: [`emission.vibration_sound_power`](/phonometry/reference/api/power/vibration-sound-power/).
