Ir al contenido

Rigidez dinámica de transferencia (ISO 10846)

Normas aplicables: ISO 10846Referencias: Cremer et al. 2005

La propiedad de transferencia vibroacústica de un elemento resiliente (un aislador de vibraciones, montura, fuelle o manguera) es su rigidez dinámica de transferencia k₂₁, el cociente dependiente de la frecuencia entre la fuerza de bloqueo en el lado de salida (receptor) y el desplazamiento en el lado de entrada (fuente) (ISO 10846-1, 3.7):

Como un aislador de vibraciones solo es eficaz entre estructuras de gran rigidez en el punto de excitación, la fuerza que entrega al receptor aproxima esta fuerza de bloqueo (ISO 10846-1, Ec. 7), de modo que k₂₁ es la magnitud que caracteriza la transmisión del aislador. k₂₁ alimenta las normas de fuente estructural y de predicción en edificación: ISO 9611, EN 15657 y EN 12354-5.

Nivel de rigidez dinámica de transferencia de un aislador Kelvin-Voigt: el nivel real y la estimación por el método indirecto, que diverge en la resonancia masa/resorte y converge por encima de ellaNivel de rigidez dinámica de transferencia de un aislador Kelvin-Voigt: el nivel real y la estimación por el método indirecto, que diverge en la resonancia masa/resorte y converge por encima de ella
Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import vibration
# Aislador Kelvin-Voigt k + jwc cargado con una masa de bloqueo de 8 kg.
k, c, m2 = 1.0e6, 120.0, 8.0
f0 = np.sqrt(k / m2) / (2.0 * np.pi)
f = np.logspace(np.log10(f0 / 5.0), np.log10(f0 * 40.0), 600)
k_true = k + 1j * 2.0 * np.pi * f * c
t = vibration.base_transmissibility(f, m2, k, c)
k_indirect = vibration.transfer_stiffness_indirect(f, t, m2) # avisa donde T no es pequeña
# Una línea: la determinación indirecta empaquetada como resultado dibuja su
# propio espectro de nivel Lk(f):
res = vibration.indirect_transfer_stiffness_result(f, t, blocking_mass=m2)
res.plot(language="es")
plt.show()
# A mano, la rigidez verdadera del elemento frente a la estimación indirecta:
fig, ax = plt.subplots()
ax.semilogx(f, vibration.transfer_stiffness_level(k_true),
label="$L_k$ real de $k+j\\omega c$")
ax.semilogx(f, vibration.transfer_stiffness_level(k_indirect), "--",
label="método indirecto $-(2\\pi f)^2 m_2 T$")
ax.axvline(f0, color="0.6", linestyle=":", label="resonancia $f_0$")
ax.set(xlabel="Frecuencia [Hz]", ylabel="Nivel de rigidez de transferencia $L_k$ [dB re 1 N/m]")
ax.grid(True, which="both", alpha=0.3)
ax.legend()
plt.show()

1. El nivel de rigidez de transferencia y el factor de pérdidas

Sección titulada «1. El nivel de rigidez de transferencia y el factor de pérdidas»

Los resultados se expresan como un nivel re la rigidez de referencia k₀ = 1 N/m (ISO 10846-2 y -3, 3.17) y, en el rango de baja frecuencia donde las fuerzas de inercia del elemento son despreciables, el factor de pérdidas es la tangente del ángulo de fase de k₂₁ (ISO 10846-1, 3.8):

from phonometry import vibration
# Una montura resiliente con |k2,1| = 1 MN/m y un factor de pérdidas del 5 %:
k = 1e6 * (1.0 + 0.05j)
print(round(float(vibration.transfer_stiffness_level(k)), 2)) # 120.00 dB re 1 N/m
print(round(float(vibration.loss_factor(k)), 3)) # 0.05

¿Por qué una fuerza bloqueada y no, por ejemplo, la transmisibilidad del aislador? Porque una transmisibilidad es una propiedad del conjunto completo: cambia con las masas y rigideces que el aislador conecte en cada caso, así que unos datos medidos en un banco no se trasladarían a otra instalación. La fuerza bloqueada por unidad de desplazamiento de entrada es una propiedad del elemento solo, y predice la fuerza que el elemento entrega a cualquier receptor mucho más rígido que el propio elemento, que es exactamente la situación para la que se diseña un aislador de vibración. Por eso ISO 10846 intercala el aislador entre una masa de entrada excitada y una salida que está o bien bloqueada rígidamente o bien cargada con una masa conocida:

Bancos de rigidez de transferencia ISO 10846: el aislador bajo ensayo entre una masa de excitación y o bien una salida bloqueada con un transductor de fuerza, el método directo, o bien una masa de bloqueo sobre apoyos resilientes, el método indirectoBancos de rigidez de transferencia ISO 10846: el aislador bajo ensayo entre una masa de excitación y o bien una salida bloqueada con un transductor de fuerza, el método directo, o bien una masa de bloqueo sobre apoyos resilientes, el método indirecto

El método directo (ISO 10846-2) mide la fuerza de salida bloqueada y el desplazamiento de entrada, k₂₁ = F₂,b/u₁. El método indirecto (ISO 10846-3) carga la salida con una masa de bloqueo compacta m₂ y mide la transmisibilidad de vibración T = u₂/u₁; la fuerza de bloqueo es entonces la fuerza de inercia de la masa (ISO 10846-3, Ec. 1):

con m_f la masa de la brida de salida. La aproximación es válida bastante por encima de la resonancia masa/resorte, donde T es pequeña.

import numpy as np
from phonometry import vibration
# Método indirecto: masa de bloqueo de 10 kg, transmisibilidad 0,01 a 500 Hz.
k = vibration.transfer_stiffness_indirect(500.0, 0.01, blocking_mass=10.0)
print(f"{abs(complex(k)):.3e}") # 9.870e+05 N/m
# Agrupa una medición en barrido en un resultado con su nivel y factor de pérdidas:
f = np.logspace(1.5, 3.3, 200)
t = vibration.base_transmissibility(f, mass=8.0, stiffness=1e6, damping=120.0)
res = vibration.indirect_transfer_stiffness_result(f, t, blocking_mass=8.0)
print(round(float(res.level[-1]), 1)) # ~126 dB re 1 N/m (alta f)
res.plot() # el espectro de nivel Lk(f), como en la figura de arriba (requiere matplotlib)

El TransferStiffnessResult transporta el k₂₁ complejo y expone .level, .loss_factor, .magnitude, .to("impedance"/"apparent_mass") y .plot().

Los dos métodos se reparten el eje de frecuencia. El método directo funciona desde 1 Hz, el límite inferior del alcance de ISO 10846-2 (en la práctica el suelo lo fijan el banco y su instrumentación), hasta donde se cuelan las resonancias propias del banco (típicamente unos pocos cientos de hercios para elementos grandes); el método indirecto solo es válido bastante por encima de la resonancia masa de bloqueo/resorte, donde la transmisibilidad es pequeña, y extiende la caracterización hasta el rango de kilohercios. Un conjunto de datos completo de un aislador suele ser el empalme de ambos.

La ISO 10846-3 (apartado 6) exige que la aproximación T ≪ 1 sea exacta dentro de 1 dB (12 % de la magnitud de la rigidez), lo que acota el rango de frecuencia utilizable por ambos lados:

  • Desadaptación de impedancias (Desigualdad 2). Válido solo donde ΔL₁,₂ = La₁ − La₂ ≥ 20 dB, es decir, |T| ≤ 0,1 (la constante TRANSMISSIBILITY_LIMIT). transfer_stiffness_indirect calcula el |T| por banda y emite un PhonometryWarning cuando alguna banda lo supera (habitual cerca o por debajo de la resonancia masa/resorte, como en la figura anterior).
  • Masa de bloqueo rígida (Desigualdad 3). Por encima de una frecuencia superior f₃ la masa de bloqueo deja de moverse como cuerpo rígido; los resultados solo son válidos mientras su masa efectiva medida m₂,eff = 2F₂/(a′₁ + a″₁) (Ec. 4) se mantenga dentro de 1 dB de la masa rígida: 10 lg(m₂,eff²/m₂²) ≤ 1 dB.
  • Linealidad (apartado 7.6). Dos espectros de entrada separados 10 dB deben dar niveles de rigidez de transferencia dentro de 1,5 dB.

La propia idealización de la fuerza de bloqueo la cuantifica la ISO 10846-1, Ec. (6): para un aislador con rigidez en el punto de excitación de salida k₂,₂ sobre una terminación de rigidez k_t, la fuerza entregada es F₂/F₂,b = 1/(1 + k₂,₂/k_t), dentro del 10 % de la fuerza de bloqueo para |k₂,₂| < 0,1 |k_t| (Ec. 7):

import warnings
from phonometry import vibration
# |T| = 0,5 viola la Desigualdad (2): el resultado indirecto queda avisado.
with warnings.catch_warnings(record=True) as caught:
warnings.simplefilter("always")
vibration.transfer_stiffness_indirect(50.0, 0.5, blocking_mass=10.0)
print(caught[0].category.__name__) # PhonometryWarning
# Aproximación de la fuerza de bloqueo en el límite del 10 % (ISO 10846-1, Ec. 6):
print(round(abs(complex(vibration.blocking_force_ratio(1e5, 1e6))), 4)) # 0.9091

La rigidez dinámica es un miembro de la familia de funciones de respuesta en frecuencia (ISO 10846-1, Anexo A / Tabla A.2): es la recíproca de la receptancia y se relaciona con la impedancia mecánica Z y la masa efectiva m_eff por k = jω·Z = −ω²·m_eff. Estas conversiones son el mismo pivote convert_frf de la movilidad mecánica:

from phonometry import vibration
k = 1e6 + 5e4j # N/m, a 250 Hz
Z = vibration.convert_frf(k, 250.0, "dynamic_stiffness", "impedance")
print(abs(complex(vibration.convert_frf(Z, 250.0, "impedance", "dynamic_stiffness")))) # 1.0012e6

TransferStiffnessResult.report(path) genera un informe de caracterización de la rigidez dinámica de transferencia de un elemento resiliente de una página (definición de la ISO 10846-1:2008; determinada por el método directo, ISO 10846-2:2008, o el método indirecto de masa de bloqueo, ISO 10846-3:2002). La rigidez de transferencia es una función de respuesta en frecuencia continua, no una magnitud por bandas de octava, de modo que la ficha la presenta con honestidad como el espectro de nivel más una tabla compacta de puntos característicos (el método de determinación, la masa de bloqueo del método indirecto, el rango de frecuencias y la meseta de rigidez a baja frecuencia , su nivel y el factor de pérdidas allí), y un a baja frecuencia enmarcado (la meseta que caracteriza el elemento por debajo de sus resonancias internas). Es una caracterización, así que no hay veredicto de aprobado/no aprobado; language="es" genera la ficha en español. La ficha siempre incrusta el espectro , por lo que necesita los extras de informe y de gráficos (pip install "phonometry[report,plot]").

import numpy as np
from phonometry import ReportMetadata, TransferStiffnessResult, transfer_stiffness_direct
freqs = np.array([20, 31.5, 50, 80, 125, 200, 315, 500, 800, 1250, 2000], dtype=float)
k21 = 1e6 + 1j * (2 * np.pi * freqs) * 80.0 # elemento Kelvin-Voigt k + jwc
u1 = 1e-6 + 0j
k = transfer_stiffness_direct(k21 * u1, u1) # método directo: k2,1 = F2,b/u1
res = TransferStiffnessResult(frequencies=freqs, transfer_stiffness=k)
res.report(
"rigidez_transferencia.pdf",
metadata=ReportMetadata(
specimen="Aislador de vibraciones de caucho",
measurement_standard="ISO 10846-2",
),
language="es",
) # ficha de una página (necesita phonometry[report,plot])
Informe de ejemplo de rigidez dinámica de transferencia ISO 10846 (PDF)

Ficha de rigidez dinámica de transferencia de una página: una cabecera de metadatos, una tabla de los puntos característicos de la FRF (el método de determinación, el rango de frecuencias y la rigidez, el nivel y el factor de pérdidas a baja frecuencia) junto al espectro de nivel de rigidez de transferencia, y el nivel a baja frecuencia enmarcado.

Descargar el informe (PDF)

Ficha de rigidez dinámica de transferencia (TransferStiffnessResult.report): los puntos característicos de la FRF y el espectro de nivel de rigidez de transferencia.

Cubierto. La definición k₂₁ = F₂,b/u₁ de la ISO 10846-1:2008, el nivel (ISO 10846-2 y -3, 3.17) y el factor de pérdidas (ISO 10846-1, 3.8) (transfer_stiffness_level, loss_factor), el método directo de la ISO 10846-2:2008 (transfer_stiffness_direct) y el método indirecto de la ISO 10846-3:2002 de la Fórmula 1 (transfer_stiffness_indirect). También están implementadas la aproximación de la fuerza de bloqueo de las Ecuaciones 6-7 (blocking_force_ratio) y las relaciones FRF del Anexo A / Tabla A.2 (convert_frf). TransferStiffnessResult agrupa una determinación en barrido, y .report() genera la ficha de caracterización.

No cubierto. Las Partes 4 y 5 de la serie ISO 10846, que cubren elementos distintos de los soportes resilientes y el método de punto de excitación en baja frecuencia, no están implementadas. transfer_stiffness_indirect solo comprueba la Desigualdad 2 (el límite de transmisibilidad |T| ≤ 0,1): la Desigualdad 3, la comprobación de masa de bloqueo rígida de la Fórmula 4, se describe pero no se calcula automáticamente. El criterio de linealidad del apartado 7.6 (dos espectros de entrada separados 10 dB dentro de 1,5 dB) tampoco se comprueba en el código.