Absorbentes porosos y multicapa
Referencias: Mechel 2008Bies et al. 2017Cox y D'Antonio 2017Attenborough y Van Renterghem 2021Hopkins 2007Miki 1990Maa 1998Johnson et al. 1987Delany y Bazley 1970+1 más
A partir de la resistividad al flujo de un material poroso (la magnitud que mide el banco de flujo) los modelos clásicos de fluido equivalente predicen su impedancia característica y su número de onda complejos, y una pila de capas por matrices de transferencia (mantas porosas, cámaras de aire, paneles perforados y microperforados, membranas) predice el coeficiente de absorción de toda la construcción antes de construir nada. Esta página cubre los tres modelos porosos (Delany–Bazley, Miki, Johnson–Champoux–Allard), el modelo multicapa, las capas resonantes de Maa y la integral de incidencia aleatoria (Paris). Los tres modelos suponen que el esqueleto no se mueve nunca; la página cubre además qué hacer cuando sí lo hace: la corrección de inercia de esqueleto flexible por debajo de la frecuencia de desacoplo, y la capa poroelástica de Biot completa, cuya onda del esqueleto produce una resonancia de cuarto de onda que ningún fluido equivalente puede reproducir. Las contrapartes de medida están en las guías del tubo de impedancia y de la cámara reverberante; la valoración del espectro predicho vive en la sección ISO 11654 de esta última; y los parientes de metamaterial resonante de estas construcciones, paneles ranurados de sonido lento que alcanzan la absorción perfecta en el acoplamiento crítico, tienen su propia guía, Metaabsorbentes.
1. Modelos de fluido equivalente de un material poroso
Sección titulada «1. Modelos de fluido equivalente de un material poroso»Un material poroso de esqueleto rígido se comporta como un fluido equivalente con una impedancia característica compleja y un número de onda (convención temporal , de modo que un medio pasivo tiene ).
Delany–Bazley (Mechel 2e secc. G.11; Bies 5e apéndice D, tabla D.1; Hopkins ecs. 1.171–1.174) es la ley de potencias de un parámetro en la variable del absorbente :
con los coeficientes clásicos de lana de roca/fibra de vidrio
y un rango de ajuste declarado (porosidad cercana a
uno). La biblioteca incluye también los juegos de la tabla D.1 ajustados a
poliéster ("garai_pompoli") y a espumas ("dunn_davern", "wu"). Fuera
del rango de ajuste se emite un PorousAbsorberWarning y los valores
extrapolados se devuelven igualmente; el fallo clásico es una parte real
negativa de la impedancia de entrada de la capa a baja frecuencia (Mechel
secc. G.12).
Miki (1990) reajustó los mismos datos de Delany–Bazley bajo una
restricción de pasividad (positivo-real), de modo que el modelo se mantiene
físicamente bien comportado por debajo del rango de ajuste; es la elección
habitual cuando un modelo de un parámetro debe evaluarse en banda ancha. Miki
enuncia su propia ventana de validez en la variable del
artículo, : la ventana de Delany–Bazley dividida por
, de modo que las dos difieren en un factor de alrededor de 1,2 y no
por un desliz de pluma. La biblioteca avisa sobre en delany_bazley y
sobre en miki, cada uno frente a su propio rango publicado.
Johnson–Champoux–Allard (JCA) es el modelo semifenomenológico de cinco parámetros (Cox & D’Antonio 3e ecs. 6.19–6.25): la resistividad al flujo , la porosidad , la tortuosidad y las longitudes características viscosa/térmica , dan la densidad efectiva y el módulo de compresibilidad con los límites exactos en continua, a alta frecuencia, y la transición isoterma-adiabática en .
import numpy as npfrom phonometry import materials
f = np.geomspace(200.0, 4000.0, 200)db = materials.delany_bazley(f, 20000.0) # sigma en Pa s/m2mk = materials.miki(f, 20000.0)jca = materials.johnson_champoux_allard( f, 20000.0, porosity=0.98, tortuosity=1.0, viscous_length=8.7e-5, thermal_length=8.7e-5,)print(np.round(db.normalized_impedance[0], 3)) # (2.598-2.209j)print(np.round(mk.normalized_impedance[0], 3)) # (2.286-1.965j)print(np.round(jca.normalized_impedance[0], 3)) # (2.321-2.075j)
db.plot() # componentes normalizadas de Zc y k frente a la frecuenciaLa presentación clásica de un modelo de fluido equivalente (Cox y D’Antonio 3.ª ed., figs. 6.19–6.20): a baja frecuencia dominan las fuerzas viscosas y el material se ve rígido y con pérdidas (las cuatro componentes grandes); al subir la frecuencia las componentes caen hacia los límites de aire libre y , de modo que una capa delgada solo trabaja donde su espesor es una fracción apreciable de la longitud de onda dentro del material.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom phonometry import materials
f = np.geomspace(100.0, 5000.0, 260)mk = materials.miki(f, 20000.0) # sigma = 20 kPa s/m^2
# Una línea: componentes normalizadas de Zc y k en una rejilla log-log.mk.plot(language="es")plt.show()
# A mano, desde los campos del resultado:fig, ax = plt.subplots()ax.loglog(f, mk.normalized_impedance.real, label="Re(Zc)/rho c")ax.loglog(f, -mk.normalized_impedance.imag, "--", label="-Im(Zc)/rho c")ax.loglog(f, mk.normalized_wavenumber.real, label="Re(k)/k0")ax.loglog(f, -mk.normalized_wavenumber.imag, "--", label="-Im(k)/k0")ax.set(xlabel="Frecuencia [Hz]", ylabel="Valor característico normalizado")ax.legend()plt.show()Los tres modelos coinciden estrechamente dentro del rango de ajuste de
Delany–Bazley (Cox & D’Antonio, figs. 6.19–6.21, hacen la misma
comparación); JCA extiende la predicción con base física fuera de él. Un
PorousMediumResult construido con datos medidos (por ejemplo los ,
recuperados por la
reducción de matriz de transferencia ASTM E2611)
se conecta al modelo de capas exactamente igual que uno modelado.
Los tres modelos, y lo que cuesta salirse del rango de ajuste. Dentro de la
ventana las curvas son prácticamente el mismo material, que es
la razón de que los ajustes de un parámetro se sigan usando. Por debajo se
separan, y el panel derecho enseña la consecuencia en la magnitud que usa de
verdad quien diseña: para esta capa de 50 mm con respaldo rígido, Delany–Bazley
devuelve una resistencia negativa por debajo de 74,6 Hz, una capa pasiva que
genera energía. La restricción de pasividad de Miki la mantiene positiva, y JCA
es física en todo el rango por construcción. El aviso PorousAbsorberWarning
salta aquí; los valores extrapolados se devuelven igualmente, así que darse
cuenta es cosa de quien llama.
Mostrar el código de esta figura
f_cmp = np.geomspace(20.0, 20000.0, 400)for name, medium in ( ("Delany-Bazley", materials.delany_bazley(f_cmp, 20000.0)), ("Miki", materials.miki(f_cmp, 20000.0)),): zs = materials.layered_absorber( f_cmp, [materials.PorousLayer(0.05, medium)] ).normalized_impedance below = f_cmp[zs.real < 0.0] print(name, "Re(Zs) < 0 por debajo de", f"{below.max():.1f} Hz" if below.size else "nunca")# Delany-Bazley Re(Zs) < 0 por debajo de 74.6 Hz# Miki Re(Zs) < 0 nunca1.1 De dónde salen los cinco números de JCA
Sección titulada «1.1 De dónde salen los cinco números de JCA»Delany–Bazley y Miki necesitan un número medido. JCA necesita cinco, y quien tenga una muestra real ha de sacar los otros cuatro de algún sitio.
La resistividad al flujo es la única que tiene una norma detrás: ISO 9053-1 o -2, en la guía de resistencia al flujo de aire. Es además la primera que hay que volver a medir cuando un modelo y una medida discrepan.
La porosidad es la porosidad abierta (conectada): la relación entre el volumen de aire y el volumen total, contando solo el aire que no queda encerrado dentro del esqueleto, de modo que una burbuja cerrada de una espuma pertenece al esqueleto y no a (Allard & Atalla 2e, secc. 2.5.1). Se mide por métodos de desplazamiento de gas (Zwikker y Kosten 1949; Champoux et al. 1991) y, para la mayoría de los materiales fibrosos y las espumas de celda abierta, «queda muy cerca de 1», que es la razón de que 0,95–0,99 sea una conjetura de partida defendible y de que rara vez sea el parámetro que importa.
La tortuosidad es una propiedad intrínseca de la microgeometría: es aquello a lo que tiende la densidad efectiva, multiplicado por , cuando se anula el espesor de piel viscoso. Se puede evaluar a partir de medidas de conductividad eléctrica sobre un esqueleto saturado con un fluido conductor (secc. 4.9), o junto con las dos longitudes características mediante transmisión ultrasónica (secc. 5.3.5). Vale 1 para poros rectos normales a la superficie y crece con cualquier dispersión de la velocidad microscópica.
Las longitudes características , son las más difíciles de obtener directamente: el método de referencia es la transmisión ultrasónica en dos gases (helio y aire), y la espuma resuelta del propio libro, con , sale con µm, µm y justo de esa medida (Leclaire et al. 1996, reproducida como fig. 5.5). Fíjate en la relación: ahí , ni 1 ni 3. Es una propiedad de la geometría del poro, así que trátala como algo que hay que encontrar, no que suponer. Cuando no se dispone de un banco ultrasónico, la vía práctica es un ajuste inverso contra una impedancia superficial medida a incidencia normal, la magnitud que devuelve el tubo de impedancia; y cuando ni siquiera eso está al alcance, el recurso en forma cerrada con hace que JCA vuelva a caer sobre Delany–Bazley dentro de su rango de ajuste.
El ajuste inverso son unas pocas líneas, y merece la pena ejecutarlo primero contra una «medida» sintética para poder comprobar la recuperación:
from scipy.optimize import least_squares
f_fit = np.geomspace(200.0, 1600.0, 40) # la banda útil de un tubo de 100 mm
def surface_impedance(sigma, viscous): """Zs normalizada de una capa JCA de 50 mm con respaldo rígido.""" medium = materials.johnson_champoux_allard( f_fit, sigma, porosity=0.98, tortuosity=1.05, viscous_length=viscous, thermal_length=2.5 * viscous, ) layer = materials.layered_absorber(f_fit, [materials.PorousLayer(0.05, medium)]) return layer.normalized_impedance
# Hace las veces del resultado de tubo: una probeta cuyos parámetros verdaderos# conocemos.measured = surface_impedance(22000.0, 9.0e-5)
def residual(p): # sigma en kPa s/m2, Lambda en um z = surface_impedance(p[0] * 1e3, p[1] * 1e-6) return np.concatenate([(z - measured).real, (z - measured).imag])
fit = least_squares(residual, x0=[10.0, 50.0], bounds=([1.0, 10.0], [200.0, 500.0]))print(round(fit.x[0] * 1e3), round(fit.x[1], 1)) # 22000 90.0 -- ambos recuperadosVan con él dos advertencias. Ajustar los cinco parámetros a la vez está indeterminado frente a un solo espectro de impedancia: mantén en su valor medido o cercano a la unidad, mantén salvo que haya una razón para moverlo, y deja que el ajuste encuentre y las longitudes. Y cuando una ajustada sale lejos de la respuesta del banco de flujo, cree al banco: un ajuste que ha absorbido un error de montaje dentro de los parámetros del material predecirá mal cualquier otra construcción.
Esqueletos flexibles: cuando el armazón se mueve (Allard & Atalla 11.3.4)
Sección titulada «Esqueletos flexibles: cuando el armazón se mueve (Allard & Atalla 11.3.4)»Todos los modelos anteriores suponen que el esqueleto no se mueve. Eso solo es cierto por encima de la frecuencia de desacoplo de Zwikker y Kosten,
con la densidad aparente del esqueleto (la densidad de la muestra tal como se pesa, no la del material del que están hechas las fibras). Por debajo de el acoplamiento visco-inercial es lo bastante fuerte para que la onda en los poros arrastre al esqueleto, y un esqueleto ligero (fibra de vidrio de grado aeronáutico, fieltros, velos finos) aporta una inercia nada despreciable. Despreciar la rigidez del esqueleto pero no su masa en la formulación mixta presión-desplazamiento de Biot deja un fluido equivalente con el mismo módulo de compresibilidad y una densidad efectiva corregida (Allard & Atalla 2e, ecs. 11.53-11.55, según Panneton 2007):
donde es la densidad efectiva de esqueleto rígido de cualquiera de los tres modelos anteriores y es la densidad total aparente del material. En qué se ancla esa forma, y con qué debilidad, lo expone la nota de validación del final de este apartado. Tiene dos límites que merece la pena conocer como física:
- esqueleto pesado: al crecer la corrección se anula y se recupera el resultado de esqueleto rígido;
- baja frecuencia: la densidad de esqueleto rígido diverge como , mientras que la flexible converge al valor finito y real . Un esqueleto rígido prohíbe el movimiento de cuerpo rígido de la muestra; uno flexible lo permite, y por eso el modelo flexible es el adecuado para una probeta sin sujeción dentro de un tubo de impedancia.
limp_frame recibe un PorousMediumResult y devuelve otro, así que encaja
directamente en un PorousLayer de la pila.
La misma capa fibrosa blanda de 50 mm con ambos modelos (Allard & Atalla, tabla 11.2, el juego de datos de entrada de su fig. 11.2). Por encima de la frecuencia de desacoplo las dos predicciones son indistinguibles, que es la comprobación que el propio gráfico hace de la corrección; por debajo, la densidad efectiva de esqueleto rígido se dispara y la flexible se asienta en .
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom phonometry import ( PorousLayer, decoupling_frequency, johnson_champoux_allard, layered_absorber, limp_frame, limp_frame_applicable,)
# Allard & Atalla, tabla 11.2: capa fibrosa blanda, 50 mm.f = np.linspace(1.0, 2000.0, 800)rigid = johnson_champoux_allard( f, 25e3, porosity=0.98, tortuosity=1.02, viscous_length=90e-6, thermal_length=180e-6,)limp = limp_frame(rigid, frame_density=30.0, porosity=0.98)
print(round(decoupling_frequency(25e3, porosity=0.98, frame_density=30.0), 1))# 127.4print(round(float(limp.effective_density[0].real), 1)) # 31.2 = rho_tprint(limp_frame_applicable(20e3), limp_frame_applicable(25e3)) # True False
limp.plot(language="es") # Zc y k normalizados del medio corregidoplt.show()
# A mano, la vista de la fig. 11.2:rho0 = rigid.air_densityfig, ax = plt.subplots()for medium, style in ((rigid, "--"), (limp, "-")): ax.plot(f, medium.effective_density.real / rho0, style) ax.plot(f, medium.effective_density.imag / rho0, style)ax.set(xlabel="Frecuencia [Hz]", ylabel="rho_e / rho_0", ylim=(-30, 30))plt.show()La corrección solo merece la pena donde el esqueleto es realmente flexible.
Beranek (1947) exigía entre el módulo de compresibilidad del
esqueleto en vacío y el del fluido de los poros; el estudio de interacción
esqueleto-estructura de Doutres et al. (2007) lo relajó a , que para el
aire ( kPa) es la regla práctica de que el esqueleto
ha de ser más blando que unos 20 kPa. limp_frame_applicable aplica cualquiera
de los dos umbrales. Ninguno tiene en cuenta el montaje: una espuma fina y
ligera desacoplada de una estructura vibrante por una cámara de aire se
comporta como flexible muy por encima del límite, y un material adherido a una
estructura vibrante no debe tratarse como de esqueleto rígido en absoluto.
La consecuencia práctica, para la capa de 50 mm anterior con respaldo rígido, es un coeficiente de absorción menor en los dos tercios inferiores de una octava y algo mayor a ambos lados de 500 Hz:
import numpy as npfrom phonometry import ( PorousLayer, johnson_champoux_allard, layered_absorber, limp_frame,)
bands = np.array([100, 125, 160, 200, 250, 315, 400, 500, 1000], dtype=float)rigid = johnson_champoux_allard( bands, 25e3, porosity=0.98, tortuosity=1.02, viscous_length=90e-6, thermal_length=180e-6,)limp = limp_frame(rigid, frame_density=30.0, porosity=0.98)for medium in (rigid, limp): print(layered_absorber(bands, [PorousLayer(0.05, medium)]).absorption.round(2))# [0.07 0.11 0.17 0.24 0.32 0.43 0.54 0.64 0.88] esqueleto rígido# [0.04 0.08 0.15 0.24 0.36 0.48 0.61 0.71 0.91] esqueleto flexibleNota honesta sobre la validación. Allard & Atalla contiene exactamente una tabla de valores calculados en todo el libro, y no es una impedancia superficial: todas las parejas predicción-medida de los capítulos de materiales porosos, la fig. 11.2 incluida, son figuras. Ninguna fuente publicada de las comprobadas (el propio Allard & Atalla, Cox & D’Antonio, Mechel y la bibliografía de Biot y de los ensayos interlaboratorio) tabula tampoco esta magnitud. El anclaje es por tanto la propia ec. 11.55 impresa, transcrita término a término frente a la página. Los dos límites exactos que el libro enuncia en prosa (esqueleto pesado y ) también se comprueban, pero valen menos de lo que parece: una variante de la ecuación con el signo cambiado satisface ambos, y reproduce además la caída como del residuo de esqueleto pesado, así que los límites no distinguen la forma impresa de esa variante. La frecuencia de desacoplo evaluada sobre la lana de vidrio completamente especificada de su tabla 6.1, donde la aritmética pura da 43,27 Hz, es independiente de todo esto.
Esqueletos elásticos: la capa de Biot completa (Allard & Atalla 6 y 11)
Sección titulada «Esqueletos elásticos: la capa de Biot completa (Allard & Atalla 6 y 11)»El modelo flexible tira la rigidez del esqueleto a la basura. Consérvala y la capa porosa deja de ser un fluido: la teoría de Biot trata el armazón como un sólido elástico acoplado al fluido de los poros mediante un coeficiente de acoplamiento potencial y un coeficiente de acoplamiento inercial, y predice tres ondas en un material isótropo en lugar de una. Dos son de compresión y una de cizalla (Allard & Atalla 2e, cap. 6). Las relaciones tensión-deformación son
y para el caso habitual de un armazón cuyos granos sólidos son mucho más rígidos que el armazón que forman (, cierto en esqueletos de vidrio, roca y polímero) los tres coeficientes elásticos salen del módulo de cizalla , el coeficiente de Poisson y el módulo de compresibilidad del fluido de los poros (ecs. 6.26-6.29):
Con las densidades modificadas , ,
de la ec. 6.56, los dos números de onda de compresión salen
como los autovalores de un problema 2x2 (ecs. 6.67-6.69) y el de cizalla de la
ec. 6.83. biot_waves devuelve los tres, junto con las razones entre el
desplazamiento del fluido y el del esqueleto, que indican en qué medio viaja
cada onda. La onda cuyo es grande es la onda del aire, la que un
fluido equivalente ya modela; la otra es la onda del esqueleto, que no tiene
ningún equivalente en un fluido.
Las tres ondas que predice la teoría de Biot donde un fluido equivalente predice una, para la lana de vidrio de la tabla 6.1 de Allard & Atalla. El panel inferior es lo que las nombra: nunca baja de 42, así que en la onda del aire se mueve el fluido de los poros y el esqueleto apenas, y esa es la onda que ya describen los modelos de fluido equivalente. se queda en 1, así que en la onda del esqueleto el fluido y el esqueleto se mueven juntos, y ningún fluido equivalente tiene siquiera esa rama. La línea punteada en 495 Hz es donde las dos raíces de compresión del modelo intercambian su lugar; el etiquetado sigue a y no al orden de los autovalores, así que las curvas siguen siendo continuas al cruzarla.
Mostrar el código de esta figura
# El BiotWavesResult de la lana de vidrio de la tabla 6.1. Su .plot() dibuja el# panel superior; el inferior son dos de sus campos.f_biot = np.linspace(50.0, 1500.0, 1451)biot = materials.biot_waves( materials.johnson_champoux_allard( f_biot, 40e3, porosity=0.94, tortuosity=1.06, viscous_length=0.56e-4, thermal_length=1.1e-4, ), porosity=0.94, tortuosity=1.06, frame_density=130.0, shear_modulus=2.2e6 * (1 + 0.1j),)print(round(float(abs(biot.airborne_velocity_ratio).min()), 1)) # 42.4print(round(float(abs(biot.frame_borne_velocity_ratio[0])), 3)) # 1.002biot_waves recibe el fluido equivalente de esqueleto rígido de los poros,
normalmente un resultado de johnson_champoux_allard. Es deliberado: la inercia
del esqueleto es asunto del propio modelo de Biot, así que pasarle un medio de
limp_frame contaría esa inercia dos veces.
La consecuencia que le importa a quien diseña es una resonancia. Una capa pegada a una pared rígida mantiene su esqueleto quieto en la pared y libre en la cara frontal, de modo que la onda del esqueleto resuena a un cuarto de longitud de onda dentro de la capa, en
(ecs. 6.109-6.111), donde es el coeficiente elástico longitudinal del
esqueleto en el vacío y su densidad aparente.
frame_quarter_wave_resonance la evalúa. Nada en los modelos de esqueleto
rígido o flexible puede producir ese pico.
La lana de vidrio de la tabla 6.1 de Allard & Atalla, 100 mm pegada a una pared rígida, con ambos modelos. Lejos de la resonancia las dos son indistinguibles, que es la comprobación que el propio gráfico hace de la capa de Biot; alrededor de ella la predicción poroelástica desarrolla el valle y el pico de la parte real y el máximo agudo de la parte imaginaria que el libro mide y dibuja en su fig. 6.10.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom phonometry import ( PoroelasticLayer, PorousLayer, biot_waves, frame_elastic_coefficient, frame_quarter_wave_resonance, johnson_champoux_allard, layered_absorber,)
# Allard & Atalla, tabla 6.1: lana de vidrio "Domisol Coffrage", 100 mm, pegada.f = np.linspace(200.0, 1500.0, 1301)shear = 2.2e6 * (1 + 0.1j) # 220 N/cm2, factor de pérdidas 0,1med = johnson_champoux_allard( f, 40e3, porosity=0.94, tortuosity=1.06, viscous_length=0.56e-4, thermal_length=1.1e-4,)
print(frame_elastic_coefficient(shear, 0.0)) # (4400000+440000j)print(round(frame_quarter_wave_resonance( 0.10, shear_modulus=shear, poisson_ratio=0.0, frame_density=130.0), 1))# 459.9
waves = biot_waves(med, porosity=0.94, tortuosity=1.06, frame_density=130.0, shear_modulus=shear)print(round(float(abs(waves.airborne_velocity_ratio[800])), 1)) # 42.4print(np.round(waves.frame_borne_velocity_ratio[-1], 3)) # (0.811+0.473j)
biot = layered_absorber(f, [PoroelasticLayer(0.10, med, 0.94, 1.06, 130.0, shear)])rigid = layered_absorber(f, [PorousLayer(0.10, med)])
fig, ax = plt.subplots()for res, style in ((rigid, "--"), (biot, "-")): ax.plot(f, res.normalized_impedance.real, style) ax.plot(f, res.normalized_impedance.imag, style)ax.set(xlabel="Frecuencia [Hz]", ylabel="Zs / rho0 c0", ylim=(-3, 3))plt.show()
waves.plot(language="es") # los tres números de onda de Biotplt.show()Dentro de una pila, una PoroelasticLayer lleva las seis variables que la
teoría necesita, , de modo que layered_absorber pasa de la cadena de dos
variables al ensamblado por matriz global del apdo. 11.5 de Allard & Atalla: las
capas de fluido y las láminas conservan sus matrices 2x2, cada capa
poroelástica entra por las seis amplitudes de onda de sus propios bloques
y no por una matriz de transferencia, y ambas se unen mediante las
matrices de acoplamiento impresas del apdo. 11.4. Resolver directamente en las
amplitudes evita invertir , que es lo que hace tratable un
esqueleto muy blando o muy grueso. Dos capas poroelásticas contiguas se
acoplan como esqueletos pegados (su ec. 11.67); una lámina junto a una de
ellas se acopla como pantalla libre, desacoplada mecánicamente. El
transfer_matrix devuelto se rellena con nan en una pila así, porque para
ella no existe una matriz de cadena 2x2; la impedancia superficial, el factor de
reflexión y la absorción no se ven afectados.
Para la misma capa de 100 mm la resonancia mueve la absorción hasta 0,21 en su punto más agudo; en los centros de tercio de octava el mayor cambio es el 0,12 de 500 Hz:
import numpy as npfrom phonometry import ( PoroelasticLayer, PorousLayer, johnson_champoux_allard, layered_absorber,)
bands = np.array([250, 315, 400, 500, 630, 800, 1000], dtype=float)med = johnson_champoux_allard( bands, 40e3, porosity=0.94, tortuosity=1.06, viscous_length=0.56e-4, thermal_length=1.1e-4,)shear = 2.2e6 * (1 + 0.1j)for layer in (PorousLayer(0.10, med), PoroelasticLayer(0.10, med, 0.94, 1.06, 130.0, shear)): print(layered_absorber(bands, [layer]).absorption.round(2))# [0.55 0.58 0.62 0.65 0.69 0.74 0.78] esqueleto rígido# [0.53 0.56 0.61 0.77 0.71 0.74 0.78] Biot poroelásticoLa capa compensa los cinco parámetros adicionales cuando el esqueleto es lo
bastante rígido y pesado como para resonar en la banda de interés (lana mineral
densa, espumas estructurales), cuando el material está pegado a una placa que lo
sacude directamente, o cuando una impedancia medida muestra un rasgo que ningún
fluido equivalente explica. Para una manta ligera y blanda al aire, limp_frame
es mejor opción.
Nota honesta sobre la validación. No existe ninguna tabla publicada de
ni de para una capa de Biot completamente especificada, ni
aquí ni en ninguna otra fuente comprobada, así que este modelo no se puede
anclar dígito a dígito como sí se hace con los módulos basados en normas. Lo que
lo ancla, en orden decreciente de fuerza: el límite de esqueleto rígido, en
el que hacer el esqueleto infinitamente rígido y pesado debe reproducir el
fluido equivalente JCA, cuya conformidad sí está anclada en dígitos
publicados, y lo hace con un residuo que cae exactamente como la inversa de la
rigidez a lo largo de ocho décadas, con cuatro ángulos de incidencia y con y sin
respaldo rígido; el límite flexible, en el que llevar la rigidez a cero
reproduce limp_frame; la coincidencia a precisión de máquina entre las dos
derivaciones independientes que da el libro, la forma cerrada de la ec. 6.107
del cap. 6 y el ensamblado por matriz global del cap. 11; y los tres números
calculados que el libro sí imprime en prosa para la lana de vidrio de la tabla
6.1, los tres reproducidos: la onda del aire cambia de raíz en 495 Hz,
por encima de 50 Hz y cae de 1,0 en 50 Hz a 0,82 en
1500 Hz. Este último lo reproduce , no , aunque
la frase impresa diga «el módulo del cociente»: el modelo da
, cuya parte real queda a un 1,1 % del valor
impreso mientras su módulo, 0,939, se aparta un 14,5 %. Queda registrado en
Erratas, junto con el barrido de parámetros
que no logra acercar a 0,82. El pico de impedancia de la muestra más
delgada del libro está impreso como 860 Hz y sale en 863,5 Hz con la regla del
máximo de . Todo lo demás, incluido el comportamiento en
incidencia oblicua más allá de su límite de esqueleto rígido, descansa en formas
cerradas y en identidades estructurales, no en dígitos publicados.
2. Predicción multicapa por matrices de transferencia
Sección titulada «2. Predicción multicapa por matrices de transferencia»Cada capa fluida de espesor aporta la matriz de cadena (Cox & D’Antonio ec. 2.29; equivalente a la recursión de impedancias de Bies ec. D.95 y al esquema de Mechel secc. D.4)
con el número de onda en profundidad por la ley de Snell y . Las láminas resonantes delgadas entran como impedancias en serie . Cerrar la cadena con una pared rígida (o aire libre, o cualquier impedancia) da la impedancia de superficie, el factor de reflexión y . Una única capa porosa sobre pared rígida se reduce a la forma cerrada de libro (Mechel secc. D.3, ec. 1).
Detrás de las matrices hay una sola imagen física: una capa porosa con respaldo rígido es un fluido equivalente resumido en cinco números medibles. La capa de 50 mm de abajo, evaluada con el modelo JCA de cinco parámetros al que pertenecen esos números, absorbe el 91 % de una onda de 1 kHz en incidencia normal; el código que sigue pasa la misma capa por el ajuste de Miki de un parámetro, que queda algo más alto (0,937), una imagen honesta de la separación entre ambos modelos.
import numpy as npfrom phonometry import materials
f = np.geomspace(200.0, 4000.0, 300)med = materials.miki(f, 20000.0)res = materials.layered_absorber(f, [materials.PorousLayer(0.05, med)])i = np.argmin(np.abs(f - 1000.0))print(round(res.absorption[i], 3)) # 0.937 a 1 kHz
res.plot() # alpha(f) con |R| superpuestoSeparar la capa de la pared. La jugada más habitual del diseño de absorbentes no es más material, es una cámara, y la razón está en la condición de contorno. Una capa porosa disipa a través de la velocidad de partícula de sus poros, y un respaldo rígido fuerza esa velocidad a cero en la pared, así que una capa delgada frente a la longitud de onda queda en la zona muerta y no hace casi nada en baja frecuencia. Sepárala de la pared y quedará cerca del máximo de velocidad a la frecuencia en la que la cámara es un cuarto de longitud de onda, , que son 858 Hz para una cámara de 100 mm (la propia presencia de la capa baja todavía más la ganancia útil). Merece la pena ver la aritmética:
# La misma manta de 50 mm, pegada a la pared y separada de ella.bands_gap = np.array([125.0, 250.0, 500.0, 1000.0])med_gap = materials.miki(bands_gap, 20000.0)flat = materials.layered_absorber(bands_gap, [materials.PorousLayer(0.05, med_gap)])spaced = materials.layered_absorber( bands_gap, [materials.PorousLayer(0.05, med_gap), materials.AirLayer(0.10)])thick = materials.layered_absorber(bands_gap, [materials.PorousLayer(0.15, med_gap)])print(np.round(flat.absorption, 2)) # [0.09 0.26 0.62 0.94] 50 mm en la paredprint(np.round(spaced.absorption, 2)) # [0.44 0.78 0.9 0.77] 50 mm + cámara 100 mmprint(np.round(thick.absorption, 2)) # [0.52 0.71 0.8 0.89] 150 mm en la paredA 250 Hz la capa de 50 mm sobre una cámara de 100 mm supera a 150 mm de manta maciza, 0,78 frente a 0,71, con un tercio del material y los mismos 150 mm de profundidad total. La jugada trae dos límites: la ganancia desaparece por encima de la primera media onda de la cámara, donde la capa vuelve a caer en un nodo de velocidad (se ve en la curva separada quedando por debajo de la pegada a 1 kHz), y sobre una superficie grande hay que compartimentar la cámara o el campo se propaga lateralmente por dentro en incidencia oblicua. Esta es la contraparte de predicción de los montajes tipo E-xxx y G-xxx de ISO 354, cuyo sufijo es exactamente esta .
El modelo multicapa evalúa las magnitudes físicas mediante una recursión de
admitancias numéricamente robusta (inmune al desbordamiento
de las entradas matriciales en bruto en capas
extremadamente atenuantes) y aun así expone la matriz de cadena completa
(recíproca por construcción, ) en transfer_matrix, lista para
la maquinaria ASTM E2611
(TransferMatrix).
Cuatro construcciones, un mismo presupuesto de 50 mm: la capa porosa funciona en banda ancha pero decae a baja frecuencia; los diseños microperforado, perforado y de membrana cambian ancho de banda por un pico resonante situado cada vez más abajo. Las líneas punteadas son las formas cerradas de cavidad poco profunda; el modelo completo queda por debajo porque la masa viscosa del tapón de aire y la profundidad finita de la cámara no son despreciables.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom phonometry import materials as m
f = np.geomspace(50.0, 5000.0, 500)med = m.miki(f, 20000.0)med_light = m.miki(f, 10000.0)designs = { "Poroso 50 mm": [m.PorousLayer(0.05, med)], "MPP + cámara": [m.MicroperforatedPlateLayer(0.5e-3, 0.15e-3, 0.008), m.AirLayer(0.048)], "Perforado + poroso": [m.PerforatedPlateLayer(0.006, 0.0025, 0.05), m.PorousLayer(0.025, med), m.AirLayer(0.019)], "Membrana + poroso": [m.MembraneLayer(2.0), m.AirLayer(0.01), m.PorousLayer(0.038, med_light)],}fig, ax = plt.subplots()for label, layers in designs.items(): ax.semilogx(f, m.layered_absorber(f, layers).absorption, label=label)ax.set(xlabel="Frecuencia [Hz]", ylabel="Coeficiente de absorción")ax.legend()plt.show()Detrás de cada una de esas curvas hay una simple lista de capas, leída de
delante hacia atrás en el orden en que la onda incidente la encuentra.
plot_absorber_stack dibuja esa lista a escala antes de ejecutar ninguna
física, y un resultado resuelto retiene sus capas, así que
materials.layered_absorber(f, layers).plot_geometry() dibuja la misma
sección desde el propio resultado.
La lista de capas tal y como la encuentra la onda: placa microperforada, cámara de aire, capa porosa, respaldo rígido. Dibujar el apilado a escala antes de calcular nada permite cazar de un vistazo el clásico despiste de metros frente a milímetros en un espesor.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom phonometry import materials
f = np.linspace(200.0, 4000.0, 100)layers = [ materials.MicroperforatedPlateLayer(0.001, 0.0002, 0.01), materials.AirLayer(0.03), materials.PorousLayer(0.05, materials.miki(f, 20000.0)),]
# La función libre dibuja cualquier lista de capas; un resultado resuelto# retiene sus capas, así que esto dibuja la misma sección:# materials.layered_absorber(f, layers).plot_geometry()materials.plot_absorber_stack(layers, language="es")plt.show()3. Láminas resonantes: perforado, microperforado, membrana
Sección titulada «3. Láminas resonantes: perforado, microperforado, membrana»Panel perforado. Los tapones de aire de los orificios son la masa de un resonador de Helmholtz: con el área abierta , el factor de corrección de extremo por extremo de orificio y la resistencia viscotérmica (Cox & D’Antonio ecs. 7.6/7.12). La corrección de extremo por defecto es el ajuste de interacción de la función de Fok (tabla 7.1), válido para cualquier área abierta. Para una cámara poco profunda la resonancia es (ec. 7.4). En esas dos expresiones, es el espesor de la placa, el radio del orificio, el área abierta (área de orificios sobre área de panel), la viscosidad cinemática del aire, el espesor de placa con corrección de extremo y la profundidad de la cámara tras el panel.
Por qué un panel perforado necesita material poroso detrás. La fórmula de
resonancia coloca el pico; la resistencia decide su altura y su anchura, y ahí
es donde un panel perforado corriente es flojo. Sus orificios miden milímetros,
así que la pérdida viscosa de cada tapón es una fracción pequeña de
: sobre una cámara vacía la construcción es un resonador de Q alta
que absorbe en una banda estrecha y no hace casi nada fuera de ella. El arreglo
habitual es poner la resistencia que falta dentro de la cámara, una capa porosa
o un velo resistivo, lo que baja y ensancha el pico hacia la condición de
adaptación. Esa es exactamente la razón de que el diseño «perforado + poroso» de
la figura de arriba lleve un PorousLayer detrás de la placa, y de que el MPP
de más abajo pueda prescindir de él: sus orificios submilimétricos aportan ellos
mismos la resistencia. De ahí salen dos consecuencias de diseño: colocar la capa
porosa donde la velocidad de partícula es alta, es decir, contra la placa
perforada y no tumbada sobre el respaldo rígido, y apuntar a una resistencia
total al flujo del orden de . Ese mismo enunciado leído como
adaptación de impedancia es la condición de acoplamiento crítico de la
guía de metaabsorbentes.
Las clases de lámina: parámetros
Sección titulada «Las clases de lámina: parámetros»Las tres láminas toman argumentos posicionales, y la dimensión del orificio es un radio, no un diámetro: la mitad del orificio taladrado. Equivocarse ahí calcula la resonancia y la absorción de pico de un orificio del doble del tamaño real.
| Clase | Parámetro | Unidades | Notas |
|---|---|---|---|
PerforatedPlateLayer | thickness | m | Espesor de la placa |
hole_radius | m | Radio del orificio , la mitad del diámetro taladrado | |
open_area | — | Razón de perforación = área de orificios / área de panel | |
end_correction | — | por extremo de orificio; None usa el ajuste de interacción de Fok | |
MicroperforatedPlateLayer | thickness | m | Espesor de la placa |
hole_radius | m | Radio del orificio | |
open_area | — | Razón de perforación | |
end_correction | — | Por defecto 0.85, la reactancia de pistón de Maa | |
MembraneLayer | surface_density | kg/m² | Masa por unidad de superficie |
resistance | Pa·s/m | Resistencia al flujo añadida; por defecto 0.0 |
Panel microperforado (MPP). Con orificios submilimétricos la capa límite viscosa llena el orificio y el panel absorbe sin ningún material poroso. La biblioteca implementa la impedancia exacta de tubo corto de Maa (Maa 1998, ec. 2),
más las correcciones de extremo de la ec. 5 (resistencia superficial y reactancia de pistón en total), dividida por el área abierta. La constante de perforado (proporcional al radio del orificio sobre el espesor de la capa límite viscosa) lo gobierna todo: en la resonancia la absorción máxima es y el ancho de banda de media absorción es (Maa, ecs. 9–21, tabla I).
import numpy as npfrom phonometry import materials
# Maa (1998), fig. 5: diámetro de orificio 0,2 mm (o sea hole_radius = 0,1 mm),# placa de 0,2 mm de espesor, orificios cada 2,5 mm, cámara de 6 cm.eps = (np.pi / 4.0) * (0.2 / 2.5) ** 2f = np.linspace(100.0, 4000.0, 2000)res = materials.layered_absorber( f, [materials.MicroperforatedPlateLayer(0.2e-3, 0.1e-3, eps), materials.AirLayer(0.06)],)i = np.argmax(res.absorption)print(f"alpha máximo = {res.absorption[i]:.2f} a {f[i]:.0f} Hz")# alpha máximo = 0.96 a 677 Hzres.plot() # alpha(f) con |R| superpuesto: el pico resonante del MPPEl propio diseño de la fig. 5 de Maa, sin material poroso alguno: las pérdidas viscosas de los orificios submilimétricos amortiguan la resonancia panel-cámara en un pico de absorción ancho. El rasgo estrecho cerca de 2,9 kHz es la resonancia de media onda de la cámara, donde la cámara presenta un nodo de presión al panel y la absorción se hunde antes de que la siguiente resonancia la recupere.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom phonometry import materials
# Maa (1998), fig. 5: diámetro de orificio 0,2 mm (o sea hole_radius = 0,1 mm),# placa de 0,2 mm de espesor, orificios cada 2,5 mm, cámara de 6 cm.eps = (np.pi / 4.0) * (0.2 / 2.5) ** 2f = np.linspace(100.0, 4000.0, 1200)res = materials.layered_absorber( f, [materials.MicroperforatedPlateLayer(0.2e-3, 0.1e-3, eps), materials.AirLayer(0.06)],)
# Una línea: alpha(f) con |R| superpuesto.res.plot(language="es")plt.show()
# A mano, desde los campos del resultado:fig, ax = plt.subplots()ax.semilogx(f, res.absorption, label="Absorción alpha")ax.semilogx(f, np.abs(res.reflection), "--", label="Factor de reflexión |R|")ax.set(xlabel="Frecuencia [Hz]", ylabel="Coeficiente")ax.legend()plt.show()Membrana. Una lámina impermeable flexible es la masa superficial
(Cox ec. 7.14; Bies ec. D.96); sobre una cámara resuena en
el clásico (adiabático;
cuando la cámara está rellena de poroso y es
isoterma, Cox ecs. 7.9/7.10). Las formas cerradas se exponen como
helmholtz_resonance_frequency y membrane_resonance_frequency; la
respuesta completa en frecuencia sale de la misma pila de capas.
La impedancia de lámina en sí
Sección titulada «La impedancia de lámina en sí»Las clases de capa de arriba entregan su impedancia de transferencia al
modelo multicapa, y el modelo devuelve , que es como se
evalúa una lámina resonante, no como se diseña. Toda relación de diseño de
esta sección está escrita en y , así que las mismas impedancias
están expuestas por separado: perforated_plate_impedance,
microperforated_plate_impedance y membrane_impedance, que devuelven en
Pa·s/m antes de normalizar, más perforation_end_correction para el factor de
Fok. Con ellas el argumento de diseño se cierra sobre sí mismo: la reactancia
cruza la de la cámara en la resonancia, y la resistencia
ahí fija tanto la altura del pico como el ancho de banda:
# La geometría de la propia fig. 5 de Maa, leída como impedancia en su pico de# 677,5 Hz.rho_c = 1.205 * 343.0f_peak = np.array([677.5])z_mpp = materials.microperforated_plate_impedance( f_peak, thickness=0.2e-3, hole_radius=0.1e-3, open_area=eps)r_mpp = float(z_mpp.real[0]) / rho_cprint(round(r_mpp, 3), round(float(z_mpp.imag[0]) / rho_c, 3)) # 1.531 1.077print(round(4 * r_mpp / (1 + r_mpp) ** 2, 3)) # 0.956 = el alpha del pico de arriba
# El mismo panel con orificios milimétricos: un orden de magnitud menos de# resistencia, de ahí el pico estrecho que necesita respaldo poroso.z_perf = materials.perforated_plate_impedance( f_peak, thickness=0.006, hole_radius=0.0025, open_area=0.05)print(round(float(z_perf.real[0]) / rho_c, 4)) # 0.0925, 16 veces menor
# Una membrana es reactancia pura salvo que se aporte una resistencia de fijación.print(np.round(materials.membrane_impedance(f_peak, surface_density=2.0), 1))# [0.+8513.6j]
# La interacción de Fok: los orificios apretados acortan el tapón efectivo.print(round(materials.perforation_end_correction(0.05), 3)) # 0.575 frente a 0.85Toda la regla de diseño de esta sección en una imagen. La reactancia del panel y la de la cámara se cruzan en 677 Hz: ese cruce es la resonancia, y la coloca la geometría. Lo que ocurre en el cruce lo fija la resistencia de ahí, , que da , el pico que calcula la pila, recuperado a partir de dos números. Un panel con orificios milimétricos tiene una dieciséis veces menor, así que su cruce sería igual de agudo y mucho menos absorbente, que es todo el argumento a favor de los orificios submilimétricos o del respaldo poroso.
Mostrar el código de esta figura
f_sheet = np.geomspace(100.0, 4000.0, 400)z_sheet = materials.microperforated_plate_impedance( f_sheet, thickness=0.2e-3, hole_radius=0.1e-3, open_area=eps) / rho_ccavity = -1.0 / np.tan(2.0 * np.pi * f_sheet * 0.06 / 343.0)print(round(float(z_sheet.real[0]), 2), round(float(cavity[0]), 2))Construir lo que predice la pila
Sección titulada «Construir lo que predice la pila»La pila de matrices de transferencia supone una construcción infinita, lateralmente uniforme y de reacción local. Para que esa hipótesis sobreviva en obra tienen que cumplirse cinco cosas.
- Compartimenta o rellena la cámara que hay tras una lámina resonante. El modelo unidimensional y la hipótesis de reacción local necesitan los dos celdas pequeñas frente a la longitud de onda a la frecuencia de diseño. Una cámara sin compartimentar tras una lámina perforada deja que el campo se propague lateralmente, lo que convierte un diseño de reacción local en uno de reacción volumétrica y suele ensanchar y bajar el pico.
- Sella el perímetro contra el soporte, o la cámara queda ventilada y la resonancia para la que se sintonizó no existe.
- Comprueba el área abierta contra la lámina que realmente compraste. La del modelo es la relación geométrica para orificios de diámetro a un paso . Las rebabas, la pintura y los orificios submilimétricos parcialmente obturados mueven directamente la resistencia del MPP, y la resistencia es de lo que depende la altura del pico.
- Monta la membrana flexible y sin tensión. Sujetarla y rigidizarla añade una fuerza recuperadora que el modelo no tiene, y empuja por encima de la estimación .
- No des el respaldo por supuesto. La pila dibujada termina en una pared
rígida; una construcción sobre un soporte elástico necesita que esa
impedancia de respaldo se pase explícitamente con
termination=en lugar de dejarla en"rigid".
4. Incidencia oblicua y aleatoria
Sección titulada «4. Incidencia oblicua y aleatoria»layered_absorber(..., angle=theta) evalúa la pila completa de reacción
volumétrica a cualquier ángulo polar; las láminas son de reacción local
(independientes del ángulo) y las capas fluidas refractan según la ley de
Snell; para un MPP sobre cámara esto reproduce exactamente la forma cerrada
oblicua de Maa (ec. 23). El coeficiente de incidencia aleatoria es la
integral de Paris (Mechel secc. D.5, ec. 9)
evaluada por cuadratura de Gauss–Legendre en diffuse_field_absorption
(angle_limit por defecto 90°; se usan truncamientos a 75–87°). Ese
truncamiento no es decoración y merece una regla de decisión. El integrando
pondera sobre todo los ángulos oblicuos, y es justo cerca de la incidencia
rasante donde la teoría del plano infinito deja de describir un ensayo real:
una probeta finita y montada no se comporta como una capa ilimitada a 85°, y un
campo difuso sobre una muestra de 10 a 12 m² sencillamente no entrega la
energía rasante que supone la integral completa, así que el resultado sin
truncar tiende a quedar por debajo de los valores medidos. Lo que hace la
práctica se sigue de ahí: truncar en torno a 78° cuando la intención es
compararse con una medición en cámara reverberante, y mantener 90° cuando la
intención es el coeficiente teórico de incidencia aleatoria de una superficie
infinita. Un truncado es una magnitud de ingeniería ajustada y
no una magnitud física, así que el límite debe citarse junto al número: el
fragmento de abajo imprime el tamaño de la decisión. Para una
superficie de reacción local con impedancia normalizada conocida la
integral tiene la forma cerrada de Mechel ec. 10, expuesta como
statistical_absorption; su máximo sobre todas las impedancias pasivas es
el 0,951 publicado (en ).
import numpy as npfrom phonometry import materials
f = np.array([250.0, 500.0, 1000.0, 2000.0])med = materials.miki(f, 20000.0)layers = [materials.PorousLayer(0.05, med)]normal = materials.layered_absorber(f, layers)diffuse = materials.diffuse_field_absorption(f, layers)print(np.round(normal.absorption, 2)) # [0.26 0.62 0.94 0.95]print(np.round(diffuse.absorption, 2)) # [0.37 0.68 0.9 0.95]diffuse.plot() # alpha_dif(f); superpón normal.absorption para comparar
print(round(float(materials.statistical_absorption(1.567 + 0j)), 3)) # 0.951
# Cuánto vale el truncamiento, sobre la misma capa.truncated = materials.diffuse_field_absorption(f, layers, angle_limit=np.radians(78.0))print(np.round(truncated.absorption - diffuse.absorption, 3))# [-0.001 0.01 0.019 0.018] unas centésimas, y van en el sentido correctoPor qué la cámara reverberante lee más alto que el tubo: la integral de Paris pondera los ángulos oblicuos, cuyas ondas recorren un camino más largo dentro de la capa, así que supera al de incidencia normal justo donde la capa es delgada frente a la longitud de onda. Es la contraparte de modelo de la discusión tubo frente a cámara reverberante de Medida y clasificación de la absorción sonora.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom phonometry import materials
f = np.geomspace(125.0, 4000.0, 200)layers = [materials.PorousLayer(0.05, materials.miki(f, 20000.0))]normal = materials.layered_absorber(f, layers)diffuse = materials.diffuse_field_absorption(f, layers)
# Una línea, y después la superposición de incidencia normal en los mismos ejes:ax = diffuse.plot(language="es")ax.plot(f, normal.absorption, "--", label="Incidencia normal alpha(0)")ax.legend()plt.show()No compares esto con el de una hoja de características. La integral de Paris se evalúa sobre una capa infinita y lateralmente uniforme. Una medición ISO 354 se hace sobre una probeta montada de 10 a 12 m² cuyos bordes difractan energía hacia dentro, que es la razón de que el medido supere 1 de forma rutinaria y de que el mismo producto salga distinto en dos salas. Espera que el valor medido corra por encima del predicho en torno a 0,1 a 0,2 en las bandas medias, y más cuanto menor sea la probeta y mayor su relación perímetro-superficie. El corolario para el ajuste de modelos es la mitad importante: ajusta los parámetros del material contra una medida de tubo, o contra la predicción difusa de un modelo en el que confíes, y nunca contra el de una hoja de características, porque el excedente de tamaño finito se absorbería dentro de una resistividad al flujo equivocada y se propagaría después a todas las construcciones que predigas con ella. Para lo que la predicción sí sirve es para comparar construcciones, para dimensionar un tratamiento antes de que exista y para alimentar un cálculo de sala que espera entrada de incidencia aleatoria; una especificación escrita contra un medido sigue teniendo que cerrarse con una medida.
El integrando que consume el promedio de Paris, y las dos maneras de
promediarlo. Izquierda: de la misma capa de 50 mm a cuatro
frecuencias, cada curva continua de reacción volumétrica
(layered_absorber(..., angle=theta), en la que las capas fluidas refractan)
acompañada por la curva de reacción local obtenida de la misma impedancia
superficial a incidencia normal. Las dos coinciden en incidencia normal por
construcción, se separan en el intervalo de 40° a 75° donde el integrando de
Paris lleva la mayor parte de su peso (el modelo volumétrico absorbe más, porque
la onda refracta y viaja más lejos dentro de la capa) y vuelven a converger
cuando ambas se desploman hacia cero en rasante. La elección del modelo de
reacción es, por tanto, una elección sobre la parte de la integral que más
importa. Derecha: los dos resultados integrados a lo largo de la frecuencia, con
el máximo de 0,951 de la forma cerrada de reacción local dibujado como un techo
que ninguna impedancia pasiva puede superar.
Mostrar el código de esta figura
# alpha(theta) a una frecuencia, de las dos maneras.theta = np.radians(np.linspace(0.0, 88.0, 60))f_one = np.array([1000.0])layers_one = [materials.PorousLayer(0.05, materials.miki(f_one, 20000.0))]bulk = [float(materials.layered_absorber(f_one, layers_one, angle=float(t)).absorption[0]) for t in theta]z_normal = materials.layered_absorber(f_one, layers_one).normalized_impedance[0]local = [1.0 - abs((z_normal * np.cos(t) - 1.0) / (z_normal * np.cos(t) + 1.0)) ** 2 for t in theta]print(round(bulk[0], 3), round(bulk[-1], 3)) # 0.937 0.161print(round(local[0], 3), round(local[-1], 3)) # 0.937 0.138Las capas clásicas de arriba absorben con volumen o con una cavidad de cuarto de onda. Sus parientes de metamaterial resonante, paneles rígidos de ranuras submilimétricas cargadas con resonadores de Helmholtz que ralentizan el sonido y alcanzan la absorción perfecta () en el acoplamiento crítico con paneles de solo de profundidad, se mudaron a su propia guía: Metaabsorbentes cubre el modelo de matrices de transferencia, el diseño por acoplamiento crítico y la comprobación cruzada FDTD de la celda mallada.
Notas prácticas
Sección titulada «Notas prácticas»Rangos de ajuste. Delany–Bazley avisa (y extrapola) fuera de y Miki fuera de ; los valores por debajo del rango deben tratarse como cualitativos. JCA necesita cuatro parámetros más pero se comporta físicamente en todo el rango; con y sigue a Delany–Bazley dentro del rango de ajuste.
Esqueleto rígido o flexible. Todos los modelos de fluido equivalente
anteriores suponen un esqueleto inmóvil, lo que solo se cumple por encima de la
frecuencia de desacoplo . Por debajo, un
esqueleto ligero se mueve con el fluido de los poros, y limp_frame añade su
inercia (Allard & Atalla, ecs. 11.53-11.55). Úsalo con fieltros, velos y fibra
de vidrio ligera, con cualquier material medido sin sujeción en un tubo de
impedancia y siempre que el esqueleto en vacío sea más blando que unos 20 kPa
(limp_frame_applicable); no lo uses, ni tampoco el modelo rígido, con un
material adherido a una estructura vibrante. Cuando el esqueleto es lo bastante
rígido y pesado como para resonar en la banda de interés no vale ningún fluido
equivalente: usa una PoroelasticLayer y la teoría de Biot completa.
Reacción local frente a volumétrica. El modelo de capas es de
reacción volumétrica (el sonido refracta y viaja dentro de las capas).
statistical_absorption supone reacción local, una buena aproximación para
resistividades altas, cámaras compartimentadas o revestimientos resonantes
delgados; para capas porosas gruesas y ligeras integra el modelo volumétrico
con diffuse_field_absorption (Mechel secc. D.6).
Dónde se comprobaron los números. Ningún estándar rige estos modelos
de predicción; son métodos de libro y de revista implementados en sala
limpia desde las fuentes de las referencias de más abajo. Los modelos están
fijados dígito a
dígito a las tablas de coeficientes impresas (Bies tabla D.1, Miki
ecs. 30–34), el modelo multicapa a las formas cerradas anteriores y a la
recuperación por TransferMatrix de la
página del tubo de
impedancia, el MPP a
la propia aproximación de Maa (acuerdo declarado de ~6 % con la ec. 2
exacta), a su ejemplo de diseño y a su tabla I, y la integral de Paris a su
forma cerrada de reacción local. Las erratas encontradas en las fuentes
durante este trabajo están registradas en el
registro de erratas.
Qué cubre esta guía
Sección titulada «Qué cubre esta guía»Cubierto
Los métodos de libro y de revista de Mechel, Bies, Cox y D’Antonio, Miki (1990), Maa (1998) y Johnson, Koplik y Dashen (1987), implementados en sala limpia como se describe arriba, junto con la teoría de Biot de los capítulos 6 y 11 de Allard y Atalla. Esto cubre los modelos de fluido equivalente porosos (
delany_bazley,miki,johnson_champoux_allard,limp_frame), la capa poroelástica (biot_waves,biot_surface_impedance,PoroelasticLayer), el modelo multicapa por matrices de transferencia (layered_absorberconAirLayer,PorousLayer,PoroelasticLayer,PerforatedPlateLayer,MicroperforatedPlateLayeryMembraneLayer) y los coeficientes de incidencia aleatoria por la integral de Paris (diffuse_field_absorption,statistical_absorption). Las impedancias de transferencia de lámina que consumen las clases de capa también están expuestas por separado, que es como se diseña una lámina resonante en vez de solo evaluarla:perforated_plate_impedance,microperforated_plate_impedance,membrane_impedanceyperforation_end_correction.No cubierto
Aquí no se mide nada: los cinco parámetros de JCA, el módulo de cizalla y el coeficiente de Poisson del esqueleto y la geometría de la lámina son todos entradas, y la sección 1.1 dice de dónde salen sin implementar ninguno de esos métodos de caracterización (solo se muestra el ajuste inverso contra una impedancia medida, y eso es
scipy.optimize, no esta biblioteca). Las reglas de construcción del final de la sección 3 son práctica de ingeniería sin norma detrás, y la diferencia de tamaño finito entre un predicho y un medido se enuncia pero no se modela: nada de aquí reproduce el efecto de borde. El libro de Cox y D’Antonio trata tanto difusores como absorbentes, pero esta guía solo implementa la mitad de absorbentes. La predicción del difusor de rejilla de fase de Schroeder vive en un módulo aparte (materials.diffusers.design), documentada en Difusores y sus coeficientes y, para los paneles en sublongitud de onda profunda cargados con resonadores, en Metadifusores. El absorbente de ranura con resonador de Helmholtz de acoplamiento crítico (slit_helmholtz_absorber,critical_coupling_design) es el tema de Metaabsorbentes.
Véase también
Sección titulada «Véase también»- Resistencia al flujo de aire, Tubo de impedancia y Medida y clasificación de la absorción sonora: las normas de medida con las que conectan estos modelos de predicción, a saber, ISO 9053-1/-2 (resistividad al flujo), ISO 10534-1/-2 y ASTM E2611 (tubo de impedancia) e ISO 354 / ISO 11654 (absorción de incidencia aleatoria y su valoración).
- Metaabsorbentes: los paneles ranurados de sonido lento y la condición de acoplamiento crítico que llevan la absorción perfecta al régimen de sublongitud de onda profunda.
- Teoría: Caracterización de materiales acústicos: las magnitudes de caracterización que estos modelos empíricos y fenomenológicos toman como entrada.
Referencias
Sección titulada «Referencias»- Allard, J. F. y Atalla, N. (2009). Propagation of Sound in Porous Media: Modelling Sound Absorbing Materials (2.ª ed.). Wiley. https://doi.org/10.1002/9780470747339Capítulo 6: la teoría de Biot de un material poroso de esqueleto elástico, sus coeficientes elásticos, sus dos ondas de compresión y su onda de cizalla, y la impedancia de superficie y la resonancia de cuarto de onda del esqueleto de una capa con fondo rígido (ecs. 6.107-6.111). Capítulo 11: el método de matrices de transferencia, la matriz de capa poroelástica de seis variables (tabla 11.1), las matrices de acoplamiento (apdo. 11.4) y el ensamblado global (apdo. 11.5). Apartado 11.3.4: los límites de esqueleto rígido y blando de la teoría de Biot, la frecuencia de desacoplo y la densidad efectiva blanda (ecs. 11.53-11.55, según Panneton 2007). ISBN 978-0-470-74661-5.
- Attenborough, K. y Van Renterghem, T. (2021). Predicting outdoor sound (2.ª ed.). CRC Press. https://doi.org/10.1201/9780429470806Capítulo 5: modelos de impedancia de suelos, incluida la familia JCA.
- Bies, D. A., Hansen, C. H. y Howard, C. Q. (2017). Engineering noise control (5.ª ed.). CRC Press. https://doi.org/10.1201/9781351228152Apéndice D: propiedades de materiales porosos, juegos de coeficientes de la tabla D.1 y las recursiones de construcciones en capas D.91-D.99.
- Cox, T. J. y D'Antonio, P. (2017). Acoustic absorbers and diffusers: Theory, design and application (3.ª ed.). CRC Press. https://doi.org/10.1201/9781315369211Modelado por matrices de transferencia (secc. 2.6), modelos porosos (secc. 6.5) y ecuaciones de diseño de absorbentes resonantes (seccs. 7.3/7.5).
- Delany, M. E. y Bazley, E. N. (1970). Acoustical properties of fibrous absorbent materials. Applied Acoustics, 3(2), 105-116. https://doi.org/10.1016/0003-682X(70)90031-9Las relaciones empíricas originales y su validez declarada.
- Hopkins, C. (2007). Sound insulation. Butterworth-Heinemann. https://doi.org/10.4324/9780080550473Sección 1.3.2.2: el modelo de gas equivalente y la forma SI de Delany-Bazley.
- Johnson, D. L., Koplik, J. y Dashen, R. (1987). Theory of dynamic permeability and tortuosity in fluid-saturated porous media. Journal of Fluid Mechanics, 176, 379-402. https://doi.org/10.1017/S0022112087000727El modelo de tortuosidad dinámica tras la densidad efectiva JCA.
- Maa, D.-Y. (1998). Potential of microperforated panel absorber. The Journal of the Acoustical Society of America, 104(5), 2861-2866. https://doi.org/10.1121/1.423870La impedancia exacta del MPP (ec. 2), las correcciones de extremo, las fórmulas de diseño y el ejemplo de la fig. 5 fijado en los tests.
- Mechel, F. P. (Ed.). (2008). Formulas of acoustics (2.ª ed.). Springer. https://doi.org/10.1007/978-3-540-76833-3Secciones D.3-D.6 (reflexión en capas, esquema multicapa, integrales de campo difuso) y G.11 (relaciones empíricas de porosos).
- Miki, Y. (1990). Acoustical properties of porous materials — Modifications of Delany-Bazley models. Journal of the Acoustical Society of Japan (E), 11(1), 19-24. https://doi.org/10.1250/ast.11.19La regresión positivo-real implementada en miki.