Skip to content

vibration.transfer_stiffness

Dynamic transfer stiffness of resilient elements (ISO 10846-1/-2/-3).

The vibro-acoustic transfer property of a resilient element (a vibration isolator, mount, bellows or hose) is its dynamic transfer stiffness: the frequency-dependent ratio of the blocking force phasor F2,b on the output (receiver) side to the displacement phasor u1 on the input (source) side, with the output blocked (ISO 10846-1, 3.7):

k2,1 = F2,b / u1 [N/m]

For an isolator between two structures of large driving-point stiffness, the force delivered to the receiver approximates this blocking force (ISO 10846-1, Equation 7), so k2,1 characterises the isolator’s transmission. Results are reported as a level re the reference stiffness k0 = 1 N/m (ISO 10846-2 and -3, 3.17):

L_k = 10 lg(|k2,1|**2 / k0**2) = 20 lg(|k2,1| / k0) [dB]

and, in the low-frequency range where inertial forces in the element are negligible, the loss factor is the tangent of the phase angle of k2,1 (ISO 10846-1, 3.8): eta = Im(k2,1) / Re(k2,1).

Two laboratory methods determine k2,1:

  • Direct method (ISO 10846-2): measure the blocked output force F2,b and the input displacement u1 directly: k2,1 = F2,b / u1.
  • Indirect method (ISO 10846-3): load the output with a compact blocking mass m2 and measure the vibration transmissibility T = u2/u1; the blocking force is the mass’s inertia force (ISO 10846-3, Equation 1):
k2,1 = -(2 pi f)**2 (m2 + mf) T for T << 1

where mf is the mass of the output flange of the test element. The approximation is valid only where |T| <= 0.1 (Inequality (2): DeltaL1,2 >= 20 dB) and while the blocking mass still behaves rigidly, 10 lg(m2,eff**2/m2**2) <= 1 dB (Inequality (3)); see transfer_stiffness_indirect.

The dynamic transfer stiffness is a member of the frequency-response-function family (ISO 10846-1, Annex A / Table A.2): k = j omega Z = -omega**2 m_eff, so it converts to mechanical impedance and effective mass through phonometry.convert_frf ("dynamic_stiffness" <-> "impedance" <-> "apparent_mass"). This module feeds the structure-borne source and building prediction standards (ISO 9611, EN 15657, EN 12354-5).

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

base_transmissibility(
frequency: ArrayLike,
mass: float,
stiffness: float,
damping: float = 0.0,
) -> np.ndarray

Transmissibility of a mass on an ideal resilient element (model).

The output mass m on a massless Kelvin-Voigt element (spring k in parallel with a viscous damper c) driven at the input has the base-excitation transmissibility

T = u2/u1 = (k + j omega c) / (k - omega**2 m + j omega c).

This ideal-element model is the counterpart of the indirect-method test arrangement (ISO 10846-3): feeding T into transfer_stiffness_indirect with the same mass recovers the element’s transfer stiffness k + j omega c in the high-frequency limit T << 1.

Parameters

NameDescription
frequencyFrequency f, in hertz (scalar or array).
massOutput mass m, in kg.
stiffnessElement stiffness k, in N/m.
dampingViscous damping c, in N.s/m (Default: 0.0).

Returns: The complex transmissibility T.

blocking_force_ratio(
driving_point_stiffness: ArrayLike,
termination_stiffness: ArrayLike,
) -> np.ndarray

Ratio of the delivered force to the blocking force (ISO 10846-1, Eq. 6).

For an isolator driving a receiving structure, the output force for a given source displacement u1 is F2 = k2,1 u1 / (1 + k2,2/kt) (Equation (6)), where k2,2 is the isolator’s output driving-point stiffness (output blocked at the input) and kt the dynamic driving-point stiffness of the termination. This function returns

F2 / F2,b = 1 / (1 + k2,2/kt)

the factor by which the delivered force deviates from the blocking force F2,b = k2,1 u1 of Equation (7). For |k2,2| < 0.1 |kt| the ratio is within 10 % of unity (1/1.1 = 0.909 at the limit), which is the stiffness mismatch that justifies characterising an isolator by its blocked transfer stiffness alone.

Parameters

NameDescription
driving_point_stiffnessOutput driving-point stiffness k2,2 of the isolator (complex, scalar or array), in N/m.
termination_stiffnessDriving-point stiffness kt of the receiving structure (complex, scalar or array, non-zero), in N/m.

Returns: The complex ratio F2/F2,b.

Raises

ExceptionWhen
ValueErrorfor a zero termination stiffness.
indirect_transfer_stiffness_result(
frequency: ArrayLike,
transmissibility: ArrayLike,
blocking_mass: float,
*,
flange_mass: float = 0.0,
) -> TransferStiffnessResult

Indirect-method transfer stiffness bundled as a TransferStiffnessResult.

See transfer_stiffness_indirect for the ISO 10846-3 validity conditions (Inequalities (2) and (3)); bands with |T| > 0.1 trigger a PhonometryWarning.

Parameters

NameDescription
frequencyFrequencies f, in hertz (array).
transmissibilityVibration transmissibility T = u2/u1 (complex).
blocking_massBlocking mass m2, in kg (> 0).
flange_massOutput-flange mass mf, in kg (Default: 0.0).

Returns: The TransferStiffnessResult (indirect method).

Warns

WarningWhen
PhonometryWarningwhere any |T| > 0.1 (Inequality (2) violated).
loss_factor(stiffness: ArrayLike) -> np.ndarray

Loss factor eta = Im(k2,1) / Re(k2,1) (ISO 10846-1, 3.8).

Valid in the low-frequency range where inertial forces in the element are negligible; it is the tangent of the phase angle of the transfer stiffness.

Parameters

NameDescription
stiffnessDynamic transfer stiffness k2,1 (complex, scalar or array, with a non-zero real part), in N/m.

Returns: The loss factor eta (dimensionless).

Raises

ExceptionWhen
ValueErrorfor a purely imaginary stiffness (Re(k2,1) = 0), for which the loss factor is undefined.

Constant (float).

REFERENCE_STIFFNESS = 1.0
transfer_stiffness_direct(
blocking_force: ArrayLike,
input_displacement: ArrayLike,
) -> np.ndarray

Dynamic transfer stiffness by the direct method (ISO 10846-2).

k2,1 = F2,b / u1, the blocked output force phasor over the input displacement phasor.

Parameters

NameDescription
blocking_forceBlocked output force phasor F2,b (complex), in N.
input_displacementInput displacement phasor u1 (complex, non-zero), in m.

Returns: The dynamic transfer stiffness k2,1, in N/m.

Raises

ExceptionWhen
ValueErrorfor a zero input displacement (dead input channel).
transfer_stiffness_indirect(
frequency: ArrayLike,
transmissibility: ArrayLike,
blocking_mass: float,
*,
flange_mass: float = 0.0,
) -> np.ndarray

Dynamic transfer stiffness by the indirect method (ISO 10846-3, Eq. 1).

k2,1 = -(2 pi f)**2 (m2 + mf) T: the blocking force is the inertia force of a compact blocking mass m2 (plus the output flange mass mf), derived from the measured vibration transmissibility T = u2/u1. Valid for T << 1 (i.e. well above the mass/spring resonance).

Validity (ISO 10846-3, clause 6). The T << 1 approximation of Formula (1) is required accurate within 1 dB, i.e. within 12 % of the calculated stiffness magnitude. This holds only where Inequality (2) is met: DeltaL1,2 = La1 - La2 >= 20 dB, i.e. |T| <= 0.1 (TRANSMISSIBILITY_LIMIT). Bands with |T| above that limit (routine near or below the mass/spring resonance) trigger a PhonometryWarning; treat those bands as outside the valid frequency range of the test arrangement. The upper frequency limit f3 additionally requires the blocking mass to vibrate as a rigid body: results are valid only while its effective mass m2,eff, measured per Formula (4) as m2,eff = 2 F2 / (a'1 + a''1) (two accelerometers spaced D = sqrt(S) across the contact area), stays within 1 dB of the rigid mass, 10 lg(m2,eff**2 / m2**2) <= 1 dB (Inequality (3), 6.2.3).

Parameters

NameDescription
frequencyFrequency f, in hertz (scalar or array).
transmissibilityVibration transmissibility T = u2/u1 (complex, scalar or array; velocity and acceleration ratios have the same value).
blocking_massBlocking mass m2, in kg (> 0).
flange_massOutput-flange mass mf, in kg (Default: 0.0).

Returns: The dynamic transfer stiffness k2,1, in N/m.

Raises

ExceptionWhen
ValueErrorfor a non-positive frequency or blocking mass.

Warns

WarningWhen
PhonometryWarningwhere any |T| > 0.1 (Inequality (2) violated).
transfer_stiffness_level(
stiffness: ArrayLike,
*,
reference: float = 1.0,
) -> np.ndarray

Level of the dynamic transfer stiffness (ISO 10846-2/-3, 3.17).

L_k = 20 lg(|k2,1| / k0) dB, with k0 the reference stiffness.

Parameters

NameDescription
stiffnessDynamic transfer stiffness k2,1 (complex or real, scalar or array, non-zero), in N/m.
referenceReference stiffness k0 (Default: 1 N/m), in N/m.

Returns: The level L_k, in dB re k0.

Raises

ExceptionWhen
ValueErrorfor a non-positive reference or a zero stiffness magnitude (a dead channel has no level).
TransferStiffnessResult(
frequencies: np.ndarray,
transfer_stiffness: np.ndarray,
blocking_mass: float | None = None,
)

A dynamic transfer stiffness over frequency (ISO 10846).

Attributes

NameDescription
frequenciesFrequencies, in hertz.
transfer_stiffnessComplex k2,1 per frequency, in N/m.
blocking_massBlocking mass m2 used (indirect method), in kg, or None for the direct method.

property

Transfer-stiffness level L_k re 1 N/m, in dB (3.17).

property

Loss factor eta = Im/Re per frequency (3.8).

property

Transfer-stiffness magnitude |k2,1|, in N/m.

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

Plot the transfer-stiffness level L_k(f).

Requires matplotlib (pip install phonometry[plot]); returns the Axes.

TransferStiffnessResult.report(
path: str,
*,
metadata: ReportMetadata | None = None,
engine: str = 'reportlab',
verbose: bool = False,
language: str = 'en',
) -> str

Render a dynamic-transfer-stiffness fiche to a PDF (ISO 10846).

Writes a one-page transfer-stiffness characterisation report for a resilient element: the standard-basis line naming the determination method (direct, ISO 10846-2:2008, or indirect blocking-mass, ISO 10846-3:2002; definition per ISO 10846-1:2008), an optional metadata header, a two-panel body with a compact table of the FRF’s characteristic points (the method, the blocking mass for the indirect method, the frequency range, and the low-frequency stiffness plateau |k2,1|, its level L_k and the loss factor eta there) beside the transfer-stiffness level spectrum L_k(f), a boxed low-frequency L_k with the stiffness magnitude and method alongside, and a footer identity/disclaimer block.

Dynamic transfer stiffness is a continuous frequency-response function, so the fiche presents it as a spectrum plus a table of characteristic points; a transfer-stiffness determination is a characterisation, so there is no pass/fail verdict.

Parameters

NameDescription
pathDestination path of the PDF file.
metadataOptional ReportMetadata supplying the header identity (specimen is the tested resilient element) and the footer identity; the requirement field is ignored.
engineRendering back end; only "reportlab" is supported.
verboseAccepted for a uniform .report() signature; the transfer-stiffness fiche has a single body layout, so it has no effect.
languageFiche language: "en" (default, English) or "es" (Spanish, with a comma decimal separator).

Returns: The written path as a str.

Raises

ExceptionWhen
ValueErrorIf engine is not "reportlab" or language is unknown.
ImportErrorIf reportlab or matplotlib is not installed. The fiche always embeds the L_k(f) spectrum, so both are required (pip install "phonometry[report,plot]").
TransferStiffnessResult.to(target: str) -> np.ndarray

Convert k2,1 to a related FRF (ISO 10846-1 Annex A / Table A.2).

target is "impedance" (Z = k/(j omega)) or "apparent_mass" (m_eff = -k/omega**2); see phonometry.convert_frf.

Constant (float).

TRANSMISSIBILITY_LIMIT = 0.1
Created and maintained by· GitHub· PyPI· All projects