<!-- canonical: https://jmrplens.github.io/phonometry/materials/resilient/dynamic-stiffness/ -->
Source: https://jmrplens.github.io/phonometry/materials/resilient/dynamic-stiffness/

# Dynamic stiffness of resilient materials (EN 29052-1)

A **floating floor** is a heavy floating slab resting on a resilient layer; the
two form a mass-spring system whose **natural frequency** governs how much the
floor improves impact and airborne insulation. **EN 29052-1:1992** (identical to
ISO 9052-1:1989) measures the **dynamic stiffness per unit area** $s'$ of the
resilient layer from the resonance of a standard load plate on a
200 mm × 200 mm specimen. $s'$ is the input to the floating-floor term of the
EN 12354-2 impact model covered in
[Predicting Sound Insulation (EN 12354)](https://jmrplens.github.io/phonometry/buildings/design/insulation-prediction/). (ISO 16251-1 does not apply here:
its scope is limited to soft, locally-reacting floor coverings and explicitly
excludes floating floors.)

<picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/dynamic_stiffness_dark.svg"><img src="https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/dynamic_stiffness.svg" alt="Floating-floor natural frequency as a function of the resilient layer's dynamic stiffness per unit area, for a light 40 kg/m² and a heavy 120 kg/m² floating floor, on a logarithmic stiffness axis, with a worked design point at 10 MN/m³ marked" width="82%"></picture>

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

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

# One line — from a measured resonance, the result draws its own f0(s')
# design curve with the determination marked:
res = materials.floating_floor_resonance(
    resonant_frequency=25.0, total_mass_per_area=200.0,
    floor_mass_per_area=120.0,
    airflow_resistivity=50.0, thickness=0.020, porosity=0.9,
)
res.plot()
plt.show()

# By hand, the same design curve for a light and a heavy floating floor:
s = np.logspace(np.log10(2.0), np.log10(100.0), 300)   # MN/m3
for m in (40.0, 120.0):
    plt.semilogx(s, materials.natural_frequency(s * 1e6, m), label=f"m' = {m:g} kg/m²")
plt.xlabel("Dynamic stiffness s' [MN/m³]"); plt.ylabel("Natural frequency f₀ [Hz]")
plt.legend(); plt.show()
```

</details>

## 1. Dynamic stiffness and resonance

The dynamic stiffness per unit area is a dynamic force per area divided by the
resulting change in thickness (Formula 1): $s' = (F/S)/\Delta d$. The resiliently
supported floor is a resonator whose natural frequency (Formula 2) and,
in the laboratory arrangement, measured resonant frequency (Formula 3) are

$$
f_0 = \frac{1}{2\pi}\sqrt{\frac{s'}{m'}}, \qquad
f_\mathrm{r} = \frac{1}{2\pi}\sqrt{\frac{s'_\mathrm{t}}{m'_\mathrm{t}}},
$$

so the **apparent** dynamic stiffness follows from the resonance (Formula 4):

$$
s'_\mathrm{t} = 4\pi^2\,m'_\mathrm{t}\,f_\mathrm{r}^2 .
$$

<picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/diagram_dynamic_stiffness_rig_dark.svg"><img src="https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/diagram_dynamic_stiffness_rig.svg" alt="EN 29052-1 resonance rig in three panels: the three excitation arrangements of Figures 1 to 3, one on a rigid foundation with the load plate driven and measured, two on an isolated baseplate of at least 100 kg where both plates are measured and the exciter drives either the load plate or the baseplate; below, the specimen and load requirements with the plaster bed, the steel load plate and the petroleum-jelly fillet, and the mass-spring model whose response peak gives the resonant frequency" width="92%"></picture>

In the test arrangement the specimen lies between the rigid foundation and a
load plate whose total mass per unit area, plate plus added load, is
200 kg/m² (8 kg on the 0.04 m² specimen). That load reproduces the static
preload of a typical floating floor, about 2 kPa. A vertical exciter drives
the plate, an accelerometer picks up its response, and the fundamental
vertical resonance $f_\mathrm{r}$ of the plate-on-specimen system is read from the
response peak; Formula 4 turns it into $s'_\mathrm{t}$. That extraction is the
laboratory's: the Clause 7 procedures for reading $f_\mathrm{r}$ from the raw
excitation-response signal — sinusoidal, white-noise or pulse excitation,
with the extrapolation to zero force amplitude — are not implemented, and
`apparent_dynamic_stiffness` expects the already-extrapolated $f_\mathrm{r}$.

```python
from phonometry import materials

# Standard 8 kg load plate on the 0.04 m2 specimen -> m't = 200 kg/m2;
# the fundamental resonance is measured at 25 Hz.
s_t = materials.apparent_dynamic_stiffness(resonant_frequency=25.0, total_mass_per_area=200.0)
print(round(s_t / 1e6, 3))                              # 4.935  MN/m3

# Installed on a 120 kg/m2 floating screed with s' = 10 MN/m3:
print(round(materials.natural_frequency(10e6, 120.0), 1))      # 45.9  Hz
```

That little oscillator is small enough to draw at true scale.
`plot_dynamic_stiffness_rig` puts the standard 200 mm specimen under the 8 kg
load plate with the exciter and accelerometer in place.

<picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/dynamic_stiffness_rig_geometry_dark.svg"><img src="https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/dynamic_stiffness_rig_geometry.svg" alt="To-scale section of the dynamic-stiffness rig: the dotted 200 mm resilient specimen, 20 mm thick, on the hatched rigid foundation, the grey 8 kg load plate on top with the accelerometer ball at its edge, and the exciter block above driving the plate through a red vertical arrow, the specimen side and thickness dimensioned" width="92%"></picture>

*The mass-spring system behind $s'$ at true scale: 20 mm of resilient layer
under the 8 kg plate is all it takes to reproduce the 2 kPa preload of a
floating floor.*

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

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

# The standard rig: a 200 mm square specimen under the 8 kg load plate.
materials.plot_dynamic_stiffness_rig()
plt.show()
```

</details>

## 2. The enclosed-gas term and airflow resistivity

For an air-permeable material the enclosed pore air adds a parallel stiffness
from its isothermal compression (Formula 7):
$s'_\mathrm{a} = p_0/(d\,\varepsilon)$, with $p_0$ the atmospheric pressure, $d$ the
loaded thickness and $\varepsilon$ the porosity. The standard's worked NOTE
($p_0 = 0.1\ \text{MPa}$, $\varepsilon = 0.9$) is $s'_\mathrm{a} = 111/d$ MN/m³ for
$d$ in millimetres:

```python
from phonometry import materials

print(round(materials.enclosed_gas_stiffness(thickness=0.020, porosity=0.9) / 1e6, 2))
# 5.56  MN/m3   (the NOTE's 111/20 = 5.55 MN/m3)
```

The dynamic stiffness of the *installed* material is then set by the lateral
airflow resistivity $r$ (clause 8.2): $s' = s'_\mathrm{t}$ for
$r \ge 100\ \text{kPa}\cdot\text{s/m}^2$, $s' = s'_\mathrm{t} + s'_\mathrm{a}$ for
$10 \le r < 100\ \text{kPa}\cdot\text{s/m}^2$, and for
$r < 10\ \text{kPa}\cdot\text{s/m}^2$ the method only resolves $s' = s'_\mathrm{t}$
when the gas term is negligible. `floating_floor_resonance`
chains the whole determination:

```python
from phonometry import materials

res = materials.floating_floor_resonance(
    resonant_frequency=25.0, total_mass_per_area=200.0,
    floor_mass_per_area=120.0,
    airflow_resistivity=50.0, thickness=0.020, porosity=0.9,
)
print(round(res.dynamic_stiffness / 1e6, 2), round(res.natural_frequency, 1))
# 10.49 47.1

res.plot()   # the f0(s') design curve with this determination marked (needs matplotlib)
```

The `DynamicStiffnessResult` carries the apparent, enclosed-gas and installed
stiffnesses, the test resonance and the installed-floor natural frequency, and
its `.plot()` draws the $f_0(s')$ design curve.

**Test-report fiche.** `DynamicStiffnessResult.report(path)` renders a one-page
accredited dynamic-stiffness test report (EN 29052-1:1992 = ISO 9052-1:1989): a
metadata header (specimen, the total mass per unit area $m'_\mathrm{t}$, the loaded
thickness $d$ in metres shown in mm, test facility, climate), a metrics table (the resonant frequency
$f_\mathrm{r}$, the apparent stiffness $s'_\mathrm{t}$ of Formula 4, the enclosed-gas term $s'_\mathrm{a}$
when it applies, the installed $s'$ of clause 8.2 and the natural frequency
$f_0$ of Formula 2) beside the $f_0(s')$ design curve, and a boxed apparent
dynamic stiffness $s'_\mathrm{t}$ (no pass/fail). Clause 9 rounds every stiffness to the
nearest MN/m³; `language="es"` renders the Spanish fiche. The fiche always
embeds the $f_0(s')$ design curve, so it needs both the report and plot extras
(`pip install "phonometry[report,plot]"`). Clause 6's specimen selection — at
least three 200 mm × 200 mm specimens — is not enforced, and neither is the
Clause 9 report content: the fiche carries the excitation arrangement and the
signal type only when the metadata supplies them.

```python
from phonometry import ReportMetadata, materials

res = materials.floating_floor_resonance(
    resonant_frequency=45.0, total_mass_per_area=200.0,
    floor_mass_per_area=110.0,
    airflow_resistivity=50.0, thickness=0.020, porosity=0.9,
)
res.report(
    "dynamic_stiffness.pdf",
    metadata=ReportMetadata(
        specimen="20 mm mineral-wool resilient layer",
        mass_per_area=200.0, thickness=0.020,   # thickness d in metres (20 mm)
        measurement_standard="EN 29052-1",
    ),
)   # one-page fiche (needs phonometry[report,plot])
```

[![EN 29052-1 dynamic-stiffness example report: a metadata header with the total mass per unit area and the loaded thickness, a metrics table of the resonant frequency, the apparent, enclosed-gas and installed dynamic stiffnesses and the natural frequency beside the f0(s') design curve, and the boxed apparent dynamic stiffness s't](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/reports/en29052_dynamic_stiffness_example.webp)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/reports/en29052_dynamic_stiffness_example.pdf)

## 3. What the resonance method assumes, and where it bites

The evaluation treats the rig as a single-degree-of-freedom system: the load
plate moves as a rigid piston on a massless spring. That holds while the
specimen is light against the plate and its first internal resonance sits
well above $f_\mathrm{r}$; a heavy or very thick layer starts to act as a distributed
system and the simple Formula 4 reading degrades. Three practical pitfalls
follow from the preload:

* **$s'$ is a stiffness *at the standard preload*.** Resilient layers are
  visibly non-linear in static load: mineral wool stiffens as it compresses,
  some foams soften. The 200 kg/m² load plate fixes the operating point, so
  the tabulated $s'$ strictly describes floors near that surface mass.
  Designing a much heavier screed with the same $s'$ extrapolates beyond the
  measurement.
* **Drive small.** The tangent stiffness is defined for small dynamic
  strains; driving the plate hard pushes the layer into its non-linear range
  and shifts the apparent resonance downward. Keep the excitation at the
  lowest level that gives a clean peak.
* **Respect the contact.** The standard seats the load plate on a thin
  bonding layer (a plaster paste) so the full specimen area carries the
  load. A dry, uneven contact concentrates the force, stiffens the response
  locally and biases $f_\mathrm{r}$ upward.

The natural frequency that matters in the end is not the rig's $f_\mathrm{r}$ but the
installed floor's $f_0$ from Formula 2: the floating floor only improves
insulation well above $f_0$, which is why a low $s'$ (a soft layer under a
heavy slab) is the design goal.

## See also

- [Predicting Resilient-Layer Performance](https://jmrplens.github.io/phonometry/buildings/design/resilient-layers/):
  what the design side does with $s'$, from the mass-spring resonance to the
  improvement laws above it and their weighted single number.
- [Predicting Sound Insulation (EN 12354)](https://jmrplens.github.io/phonometry/buildings/design/insulation-prediction/):
  the floating-floor term this measurement feeds.
- [Airflow Resistance](https://jmrplens.github.io/phonometry/materials/absorbers/airflow-resistance/): the
  ISO 9053 determination of the lateral resistivity $r$ that clause 8.2 needs,
  reported there as $\sigma$ in Pa·s/m², while this page's
  `airflow_resistivity` argument is in kPa·s/m².
- [Resilient layers overview](https://jmrplens.github.io/phonometry/materials/resilient/): where this
  measurement sits among the materials guides.
- API reference: [`materials.resilient.dynamic_stiffness`](https://jmrplens.github.io/phonometry/reference/api/materials/dynamic-stiffness/).
- Theory: [Point mobilities and radiation efficiency](https://jmrplens.github.io/phonometry/reference/theory/vibration/#point-mobilities-and-radiation-efficiency-cremer-5-hopkins-29): the mass-spring resonance the EN 29052-1 rig measures, seen as a mobility.

## References

- Vigran, T. E. (2008). *Building acoustics*. CRC Press.
  ISBN 978-0-415-42853-8.
  [doi:10.1201/9781482266016](https://doi.org/10.1201/9781482266016).
  Floating-floor design and the role of the resilient layer's dynamic
  stiffness in the impact-sound improvement.
- International Organization for Standardization. (1989). *Acoustics —
  Determination of dynamic stiffness — Part 1: Materials used under floating
  floors in dwellings* (ISO 9052-1:1989).
  [iso.org catalogue](https://www.iso.org/standard/16620.html).
  The international original of EN 29052-1, the method this page implements.

## Standards

EN 29052-1:1992 (= ISO 9052-1:1989), *Acoustics — Determination
of dynamic stiffness — Part 1: Materials used under floating floors in
dwellings*: the dynamic stiffness per unit area (Formula 1), the resonance
relations (Formulae 2-4), the enclosed-gas term (Formula 7, clause 8.2 NOTE
$s'_\mathrm{a} = 111/d$ MN/m³) and the airflow-resistivity regimes (clause 8.2, Formulae
5-6). Conformance is anchored on the standard's own numeric NOTE plus
hand-computed closed-form values of the resonance relations.
