Ir al contenido

Tubo de impedancia

Normas aplicables: ISO 10534ASTM E2611Referencias: Allard y Atalla 2009

El tubo de impedancia es el laboratorio de materiales reducido a un banco: un conducto rígido de unos pocos centímetros por el que un altavoz lanza una única onda plana contra una muestra pequeña, y todo lo que la muestra le hace a esa onda se lee desde micrófonos en la pared del tubo. Como hay una sola onda y un solo ángulo, el tubo recupera lo que una cámara reverberante no puede: el factor de reflexión y la impedancia superficial complejos a incidencia normal, módulo y fase, de una probeta del tamaño de la tapa de una taza de café. Tres normas comparten el hardware y difieren en el método, y la biblioteca mantiene sus funciones auxiliares separadas y nunca los mezcla: el método de la razón de onda estacionaria de ISO 10534-1, el método de la función de transferencia con dos micrófonos de ISO 10534-2 y el método de la matriz de transferencia con cuatro micrófonos de ASTM E2611, que añade la pérdida por transmisión. La sección final ejecuta el instrumento completo, muestra incluida, dentro del simulación FDTD y recupera la respuesta analítica con las mismas cadenas de reducción.

Tubo de impedancia de dos micrófonos de ISO 10534-2: un altavoz radiando una onda plana por el tubo, dos micrófonos enrasados en la pared a la separación s y a la distancia x1 de la cara de la probeta, la probeta de ensayo contra un respaldo rígido, y las ondas incidente y reflejadaTubo de impedancia de dos micrófonos de ISO 10534-2: un altavoz radiando una onda plana por el tubo, dos micrófonos enrasados en la pared a la separación s y a la distancia x1 de la cara de la probeta, la probeta de ensayo contra un respaldo rígido, y las ondas incidente y reflejada

Todo lo que informa el tubo (ISO 10534-2, apartado 4) supone que el campo interior es una única onda plana, y la geometría fija los dos extremos de la banda útil. Por encima del corte del primer modo transversal el campo deja de ser plano: un tubo circular de diámetro exige (Ec. (2); para un tubo rectangular, Ec. (3)). La separación de micrófonos debe además mantenerse lejos de la singularidad de media longitud de onda del método de la función de transferencia, (Ec. (4)). En el extremo bajo aparece el problema opuesto: una separación mucho menor que la longitud de onda apenas deja diferencia de fase entre micrófonos que medir, así que la pauta del apartado 4.2 mantiene la separación por encima del 5 % de la longitud de onda:

Ningún tubo cubre por sí solo el rango de la acústica de edificios. Un tubo de 100 mm con separación de 100 mm trabaja aproximadamente de 170 Hz a 1,5 kHz; llegar a las bandas de 5 kHz exige un tubo pequeño (29 mm) con separación corta, que a su vez no ve las bandas bajas. Los laboratorios emparejan por eso un tubo grande y uno pequeño (o un tubo con dos separaciones) y empalman los espectros; ambos deben coincidir en las bandas de solape, y una discrepancia ahí apunta al corte o al montaje de la muestra, no a la física.

from phonometry import materials
# Un tubo de 100 mm con separación de 100 mm y uno de 29 mm con 20 mm.
f_l, f_u = materials.plane_wave_frequency_range(0.100, 343.2, diameter=0.100)
print(round(f_l, 1), round(f_u, 1)) # 171.6 1544.4
f_l, f_u = materials.plane_wave_frequency_range(0.020, 343.2, diameter=0.029)
print(round(f_l, 1), round(f_u, 1)) # 858.0 6864.0
Barras horizontales sobre un eje de frecuencia logarítmico compartido de 100 Hz a 8 kHz con la rejilla de tercios de octava marcada: un tubo de 100 mm con separaciones de micrófono de 100 mm y 50 mm, un tubo de 29 mm con separación de 20 mm, y el mismo tubo de 100 mm bajo los límites de ASTM E2611; cada barra lleva rotulado el límite que la restringe en cada extremo, y el solape entre el tubo grande y el pequeño va rayadoBarras horizontales sobre un eje de frecuencia logarítmico compartido de 100 Hz a 8 kHz con la rejilla de tercios de octava marcada: un tubo de 100 mm con separaciones de micrófono de 100 mm y 50 mm, un tubo de 29 mm con separación de 20 mm, y el mismo tubo de 100 mm bajo los límites de ASTM E2611; cada barra lleva rotulado el límite que la restringe en cada extremo, y el solape entre el tubo grande y el pequeño va rayado

Qué tubo ve qué bandas. Cada barra es una geometría, y cada extremo lleva rotulada la restricción que lo limita: el extremo bajo es siempre el suelo de resolución de fase , mientras que el extremo alto es el corte para un tubo de separación amplia y la singularidad de separación en cuanto los micrófonos se alejan. El tubo de 100 mm con separación de 100 mm cubre las bandas de tercio de octava de 200 Hz a 1250 Hz, y el de 29 mm con separación de 20 mm las bandas de 1 kHz a 5 kHz, así que la pareja empalma en el solape de 1 kHz a 1,25 kHz; y ni siquiera juntos llegan a las bandas de 100 Hz, 125 Hz y 160 Hz, que es la razón de que los datos de absorción en baja frecuencia vengan de la cámara reverberante y no de un tubo. La barra ASTM es el mismo equipo bajo las constantes de E2611: más ancha por abajo (un suelo del 1 % de la longitud de onda en lugar del 5 %) y más estrecha por arriba (una cota de separación de en lugar de ).

Mostrar el código de esta figura
for spacing, diameter in ((0.100, 0.100), (0.050, 0.100), (0.020, 0.029)):
iso = materials.plane_wave_frequency_range(spacing, 343.2, diameter=diameter)
astm = materials.plane_wave_frequency_range_astm(spacing, 343.2, diameter=diameter)
print(f"tubo de {diameter * 1e3:.0f} mm, s = {spacing * 1e3:.0f} mm:",
f"ISO {iso[0]:.0f}-{iso[1]:.0f} Hz, ASTM {astm[0]:.0f}-{astm[1]:.0f} Hz")

Esos límites se ven mejor sobre el propio equipo. plot_impedance_tube_geometry dibuja un tubo a escala con su banda de onda plana ya calculada, y un resultado medido de two_microphone_impedance al que se le dio su geometría (spacing, x1, diameter) redibuja su propio montaje con result.plot_geometry().

Vista lateral a escala de un tubo de impedancia ISO 10534-2 de 100 mm: el altavoz en el extremo izquierdo, los micrófonos 1 y 2 enrasados en la pared con separación s = 50 mm y el micrófono 1 a x1 = 150 mm de la cara de la probeta, la probeta contra el respaldo rígido a la derecha, la sección transversal circular junto al tubo y el rango de trabajo de onda plana de 343 a 1991 Hz que fija esta geometríaVista lateral a escala de un tubo de impedancia ISO 10534-2 de 100 mm: el altavoz en el extremo izquierdo, los micrófonos 1 y 2 enrasados en la pared con separación s = 50 mm y el micrófono 1 a x1 = 150 mm de la cara de la probeta, la probeta contra el respaldo rígido a la derecha, la sección transversal circular junto al tubo y el rango de trabajo de onda plana de 343 a 1991 Hz que fija esta geometría

Todo lo que cuentan las desigualdades del rango de trabajo, en una vista lateral a escala: el diámetro de 100 mm fija el extremo superior de 1991 Hz, la separación de 50 mm fija el extremo inferior de 343 Hz, y los micrófonos quedan a = 50 mm con el más lejano a = 150 mm de la cara de la probeta.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
from phonometry import materials
materials.plot_impedance_tube_geometry(spacing=0.05, x1=0.15,
diameter=0.10, language="es")
plt.show()
# Un resultado medido que retiene su geometría dibuja su propio tubo:
# res = materials.two_microphone_impedance(
# h12, frequency=f, spacing=0.05, x1=0.15, diameter=0.10, ...)
# res.plot_geometry()

El rango de trabajo lo fijan y ; en qué punto del tubo se coloca la pareja es otro conjunto de restricciones, y el apartado 4.3 fija sus dos extremos.

Lejos de la fuente. El altavoz radia modos transversales además de la onda plana. Por debajo del primer corte se extinguen en unos tres diámetros de tubo, así que se recomienda que el micrófono más cercano esté al menos a tres diámetros de la fuente y, en todo caso, nunca a menos de uno: 300 mm y 100 mm respectivamente en el tubo de 100 mm de la figura de arriba.

Lejos de la probeta. La probeta también distorsiona el campo cerca de su cara, y el mínimo depende de qué aspecto tenga: medio diámetro para una muestra no estructurada, un diámetro para una semiestructurada lateralmente y dos diámetros para una fuertemente asimétrica. En un tubo de 100 mm eso son 50 mm, 100 mm y 200 mm, así que el = 150 mm de la figura de arriba es holgado para una muestra porosa simple, suficiente para una lámina perforada y demasiado corto para una probeta muy estructurada, como una matriz de resonadores. Nada de esto se hace cumplir: reflection_factor solo rechaza , así que un elegido a ojo puede caer dentro del campo cercano evanescente de una muestra perforada y aun así devolver un espectro de aspecto perfectamente plausible.

Con qué exactitud hay que conocer las distancias. Posiciones fijas de micrófono a ±0,2 mm o mejor, y las de traslación a ±0,5 mm (apartado 4.5); la posición del plano de referencia respecto al micrófono 1 declarada a ±0,5 mm (apartado 7.1); y el diámetro del micrófono por debajo del 20 % de la separación, y pequeño frente a , para que la cápsula promedie un trozo despreciable de la onda (apartado 4.4). El plano de referencia, , es normalmente la superficie de la probeta, pero una probeta perfilada o estructurada lateralmente tiene su plano de referencia situado a cierta distancia por delante de ella, y se mide hasta ese plano, no hasta el portamuestras.

La misma función auxiliar cubre tubos cuadrados y rectangulares: con shape="square" o shape="rectangular" el factor de la Ec. (3) sustituye al circular, con el lado mayor. La rama de cuatro micrófonos mantiene sus propios límites en plane_wave_frequency_range_astm: ASTM E2611 conserva la constante circular sin redondear (, 6.2.4.1), el mismo rectangular (6.2.5), una cota de separación algo más estricta (6.5.4) y un extremo bajo más laxo en el 1 % de la longitud de onda (6.2.3). Pasar diameter= (y shape=) a two_microphone_impedance, wave_decomposition o las funciones transfer_matrix_* convierte la comprobación correspondiente en un aviso, y para la estimación de atenuación del anexo A en tubo rectangular hydraulic_diameter(width, height) proporciona el diámetro que espera tube_attenuation_constant.

El tubo completo, muestra incluida, también se puede simular: la sección 5 ejecuta esta misma medición de forma virtual dentro de la simulación FDTD y recupera la absorción analítica de la muestra modelada a través de la misma cadena de reducción.

2. Método de la razón de onda estacionaria (ISO 10534-1)

Sección titulada «2. Método de la razón de onda estacionaria (ISO 10534-1)»
Aparato de onda estacionaria de ISO 10534-1 en vista lateral: un altavoz sellado al extremo izquierdo excitado con un tono puro cada vez a través de un analizador de banda estrecha, un micrófono de sonda sobre un carro graduado que recorre el eje del tubo, la probeta de ensayo contra el respaldo rígido a la derecha con su cara marcada como x = 0, la envolvente de onda estacionaria dibujada dentro del tubo con sus máximos decayendo al alejarse de la probeta, la diferencia de nivel entre el primer máximo y el primer mínimo, y el primer mínimo acotado desde la cara de la probetaAparato de onda estacionaria de ISO 10534-1 en vista lateral: un altavoz sellado al extremo izquierdo excitado con un tono puro cada vez a través de un analizador de banda estrecha, un micrófono de sonda sobre un carro graduado que recorre el eje del tubo, la probeta de ensayo contra el respaldo rígido a la derecha con su cara marcada como x = 0, la envolvente de onda estacionaria dibujada dentro del tubo con sus máximos decayendo al alejarse de la probeta, la diferencia de nivel entre el primer máximo y el primer mínimo, y el primer mínimo acotado desde la cara de la probeta

Una sonda recorre la onda estacionaria y lee la diferencia de nivel entre un máximo de presión y el mínimo adyacente. La razón de onda estacionaria (escrita en ISO 10534-1, la misma letra que la parte 2 usa para la separación de micrófonos de la sección 1; las dos nunca aparecen en la misma ecuación, y el código las mantiene separadas como swr y spacing) se obtiene en forma cerrada junto con la magnitud de reflexión y la absorción:

Método de la razón de onda estacionaria de ISO 10534-1: el coeficiente de absorción y la magnitud del factor de reflexión en función de la diferencia de nivel de la onda estacionaria, mostrando que una diferencia de 9,54 dB corresponde a una razón de onda estacionaria de 3, una magnitud de reflexión de 0,5 y una absorción de 0,75Método de la razón de onda estacionaria de ISO 10534-1: el coeficiente de absorción y la magnitud del factor de reflexión en función de la diferencia de nivel de la onda estacionaria, mostrando que una diferencia de 9,54 dB corresponde a una razón de onda estacionaria de 3, una magnitud de reflexión de 0,5 y una absorción de 0,75

Una diferencia de nivel pequeña significa un absorbente casi perfecto; una diferencia de nivel de 9,54 dB da , y .

Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import materials
level_diff = np.linspace(0.5, 40.0, 300) # L_max - L_min [dB]
swr = materials.standing_wave_ratio_from_level(level_diff)
fig, ax = plt.subplots()
ax.plot(level_diff, materials.standing_wave_absorption(swr),
label="Coeficiente de absorción alpha")
ax.plot(level_diff, materials.standing_wave_reflection_magnitude(swr), "--",
label="Magnitud del factor de reflexión |r|")
ax.set_xlabel("Diferencia de nivel de onda estacionaria L_max - L_min [dB]")
ax.set_ylabel("alpha, |r|")
ax.legend()
plt.show()
from phonometry import materials
s = float(materials.standing_wave_ratio_from_level(9.542)) # diferencia de nivel [dB] -> SWR
print(round(s, 2)) # 3.0
print(round(float(materials.standing_wave_absorption(s)), 2)) # 0.75

El método de la razón es anterior al analizador FFT y sobrevive porque es autosuficiente. El aparato es un micrófono de sonda sobre un carro graduado: un tubito que se desliza por el eje, muestreando el campo interior punto a punto mientras el altavoz mantiene un único tono puro. En cada frecuencia el operador (o el motor paso a paso) localiza un máximo de presión y el mínimo adyacente, lee la diferencia de nivel y pasa al siguiente tono. Lento, pero no hay nada que calibrar contra nada: un solo micrófono mide los dos niveles, así que su sensibilidad se cancela exactamente, y no hay desajuste de fase entre canales porque solo hay un canal. Por eso el método de onda estacionaria sigue siendo el método de arbitraje cuando dos tubos de función de transferencia discrepan.

Las formas cerradas de arriba usan solo la diferencia de nivel; las posiciones de los mínimos llevan el resto de la información. Con medido desde la cara de la muestra hacia la fuente, el campo interior de una onda con factor de reflexión es

de modo que los mínimos de presión caen donde el coseno vale , en

con el mínimo más próximo a la muestra. Un mínimo a un cuarto de longitud de onda de la cara significa (una muestra con respaldo rígido en resonancia); un mínimo justo en la cara significa (una pared rígida). El módulo de la razón, la fase de la posición: juntos dan el mismo complejo, y por tanto la misma impedancia normalizada , que el método de la función de transferencia de la sección 3 calcula de una vez a partir de .

El nivel de la envolvente de onda estacionaria en decibelios a lo largo del primer metro de un tubo de 100 mm a 500 Hz para tres terminaciones: una pared rígida cuyos mínimos se hunden fuera del eje, con el primero en la cara de la probeta; la muestra resuelta de magnitud de reflexión 0,5, cuyo primer mínimo queda a 12 centímetros y a menos 6 decibelios; y una terminación casi anecoica que es casi plana. Una copia punteada del caso 0,5 lleva la atenuación de tubo de ISO 10534-2, y se anotan los niveles de sus tres primeros mínimosEl nivel de la envolvente de onda estacionaria en decibelios a lo largo del primer metro de un tubo de 100 mm a 500 Hz para tres terminaciones: una pared rígida cuyos mínimos se hunden fuera del eje, con el primero en la cara de la probeta; la muestra resuelta de magnitud de reflexión 0,5, cuyo primer mínimo queda a 12 centímetros y a menos 6 decibelios; y una terminación casi anecoica que es casi plana. Una copia punteada del caso 0,5 lleva la atenuación de tubo de ISO 10534-2, y se anotan los niveles de sus tres primeros mínimos

Lo que recorre de verdad el carro, dibujado como el nivel que muestra el analizador a 500 Hz en un tubo de 100 mm. La pared rígida () tiene sus mínimos en presión nula y el primero en la cara, ; la muestra resuelta () da = 9,54 dB entre el máximo y el mínimo adyacente, con el primero en = 12 cm, y la regla del cuarto de longitud de onda convierte esa distancia en ; el caso casi anecoico () modula solo 1,74 dB, que es la razón de que el método pierda precisión justo donde un absorbente es bueno. La curva punteada es la misma muestra de con la atenuación de tubo de la Ec. (A.18): cuanto más lejos de la cara, más se ha atenuado la onda reflejada, así que los valles se rellenan; los tres primeros mínimos leen −5,99, −5,92 y −5,85 dB. Esa deriva es pequeña aquí porque la Ec. (A.18) es una cota inferior; la extrapolación aproximada de ISO 10534-1 (Anexo A.2.1.4) se ofrece mientras la diferencia entre el primer y el segundo mínimo se mantenga por debajo de 2 dB, y por encima de eso la atenuación hay que medirla con el tubo vacío. En cualquier caso, es la razón de que el operador lea el mínimo más próximo a la muestra.

Mostrar el código de esta figura
# El campo interior de la sección 2, para tres factores de reflexión.
c0 = 343.2
x = np.linspace(0.0, 1.0, 800)
k = 2 * np.pi * 500.0 / c0
for magnitude, phi in ((1.0, -np.pi), (0.5, np.radians(-54.1)), (0.1, 0.0)):
envelope = np.sqrt(1 + magnitude**2 + 2 * magnitude * np.cos(2 * k * x - phi))
print(round(float(envelope.min()), 3), round(float(envelope.max()), 3))
# La variante atenuada usa la constante de cota inferior de la Ec. (A.18).
print(round(float(materials.tube_attenuation_constant(500.0, c0, 0.10)), 4))

El módulo y la posición son las dos mitades de la lectura, y la biblioteca las toma juntas: standing_wave_reflection(swr, x_min1, wavelength) devuelve la compleja (Ecs. (17)-(23)) y standing_wave_normalized_impedance, la relación (Ecs. (24)-(26)). Las dos aceptan arrays, así que un recorrido con motor paso a paso que registre por tono se reduce a dos llamadas:

import numpy as np
from phonometry import materials
# Un recorrido de tres tonos: la diferencia de nivel y la distancia del primer
# mínimo leídas en cada frecuencia, que es todo lo que produce el método.
f = np.array([500.0, 1000.0, 2000.0])
c0 = 343.2
level_difference = np.array([9.542, 6.021, 3.522]) # L_max - L_min [dB]
x_min1 = np.array([0.120, 0.061, 0.030]) # primer mínimo [m]
swr = materials.standing_wave_ratio_from_level(level_difference)
lam = c0 / f
r = materials.standing_wave_reflection(swr, x_min1, lam)
z = materials.standing_wave_normalized_impedance(swr, x_min1, lam)
print(np.round(np.abs(r), 2)) # [0.5 0.33 0.2 ]
print(np.round(np.degrees(np.angle(r)), 1)) # [-54.1 -52. -54.1]
print(np.round(z, 2)) # Z / rho c0

Dos cautelas prácticas del propio texto de la norma. Los mínimos lejos de la muestra son menos profundos de lo que dice la teoría de arriba, porque las ondas viajeras se atenúan a lo largo del tubo (pérdidas viscosas y térmicas en la pared); ISO 10534-1 hace que el operador lea el mínimo más próximo a la muestra y, para trabajo de precisión, extrapole los niveles de los mínimos hasta la cara de la muestra. Y el método se apoya en la pureza del tono: cualquier distorsión armónica de un altavoz muy exigido pone energía en frecuencias cuyos mínimos caen en otro sitio, rellenando en parte el valle que se está midiendo, así que el analizador debe ser de banda estrecha en torno a la frecuencia de excitación y no un sonómetro de banda ancha.

3. Método de la función de transferencia (ISO 10534-2)

Sección titulada «3. Método de la función de transferencia (ISO 10534-2)»

Dos micrófonos fijos miden la función de transferencia compleja ; de ella se obtienen el factor de reflexión en la cara de la muestra, la absorción y la impedancia superficial normalizada (ecs. (17)–(19)):

con , , la separación de micrófonos (otra vez el sentido que la letra tiene en la parte 2) y la distancia del plano de referencia al micrófono más lejano.

Qué cuesta un error en , y qué no. entra solo a través de , una rotación de fase pura. Deja por tanto , y con él el espectro de absorción, completamente intacto, mientras rota las partes real e imaginaria de la impedancia superficial. A 1,5 kHz en aire, un error de 2 mm en rota la fase de reflexión unos 6°, suficiente para mover de forma apreciable una resistividad al flujo ajustada a partir de esa impedancia. Las consecuencias prácticas son dos: medir hasta el plano de referencia (la cara de la probeta, o el plano por delante de una probeta perfilada) y no hasta el portamuestras, porque una probeta que no queda donde debía se lleva consigo; y leer un de aspecto sano junto a una impedancia inverosímil (una parte real negativa, por ejemplo) como un fallo de o de desajuste, y no como un resultado del material.

Las ondas incidente y reflejada viajan dentro de un tubo de impedancia dibujado y su suma forma la envolvente de onda estacionaria; una terminación rígida con nodos profundos de la envolvente se compara con una muestra porosa con nodos someros, muestreados por los dos micrófonos enrasados en la pared.

Descargar la animación (WebM)

Las ondas incidente y reflejada viajan dentro de un tubo de impedancia dibujado y su suma forma la envolvente de onda estacionaria; una terminación rígida con nodos profundos de la envolvente se compara con una muestra porosa con nodos someros, muestreados por los dos micrófonos enrasados en la pared.

Descargar la animación (WebM)

import numpy as np
from phonometry import materials
f = np.array([500.0, 1000.0, 1800.0])
x1, spacing, c0 = 0.12, 0.03, 343.2
k0 = materials.tube_wavenumber(f, c0)
# Una función de transferencia H12 medida (aquí sintetizada a partir de r = 0.3 - 0.4j)
target = 0.3 - 0.4j
x2 = x1 - spacing
h12 = (np.exp(1j*k0*x2) + target*np.exp(-1j*k0*x2)) / \
(np.exp(1j*k0*x1) + target*np.exp(-1j*k0*x1))
r = materials.reflection_factor(h12, spacing=spacing, x1=x1, wavenumber=k0)
print(np.round(materials.absorption_from_reflection(r), 3)) # [0.75 0.75 0.75]
print(np.round(materials.normalized_surface_impedance(r), 2)) # Z / rho c0
# [1.15-1.23j 1.15-1.23j 1.15-1.23j]
print(np.round(materials.normalized_surface_admittance(r), 2)) # su recíproca,
# [0.41+0.43j 0.41+0.43j 0.41+0.43j] lo que pide una condición de impedancia

El two_microphone_impedance de alto nivel envuelve esta cadena y devuelve un ImpedanceTubeResult con la absorción, el factor de reflexión, la impedancia superficial y la impedancia normalizada, aplicando la comprobación del rango de frecuencias de onda plana y la atenuación opcional del tubo. Su .plot() dibuja el espectro de absorción con el módulo del factor de reflexión superpuesto, y normalized_surface_admittance(r) da la magnitud recíproca que consume una condición de contorno de reacción local: una pared FDTD o BEM, o la propia simulación de la biblioteca.

3.1 Corregir el desajuste entre canales (apartado 7.5)

Sección titulada «3.1 Corregir el desajuste entre canales (apartado 7.5)»

Un canal es un micrófono más su preamplificador más su entrada de analizador, y no hay dos iguales. El apartado 7.5 de ISO 10534-2 no recomienda corregir eso: lo exige, «se debe utilizar uno de los procedimientos siguientes». El Anexo E.1.2 es aún más tajante (con dos micrófonos, el desajuste de fase «es inevitable y se debe compensar»), y E.1.3 añade que las amplitudes deberían estar de entrada dentro de 0,3 dB una de otra. La corrección es una división compleja que se aplica justo donde es pequeño y la fase de lleva toda la respuesta, y por eso el síntoma de saltársela es un vagabundeo dependiente de la frecuencia y no un desplazamiento constante: el fragmento de abajo deja sin corregir un desajuste de 0,5 dB / 1° sobre una probeta cuya absorción verdadera es 0,75 y obtiene 0,73, 0,78 y 0,72 en tres bandas contiguas. Sobre un absorbente casi perfecto, ese mismo desajuste empuja el espectro contra el techo de , que es de donde sale la firma clásica del tubo sin corregir: una absorción justo por encima de 1 o justo por debajo de 0.

Los dos procedimientos permitidos usan la misma medición, hecha dos veces:

  1. Colocar una probeta absorbente en el tubo y medir en la configuración estándar.
  2. Intercambiar físicamente los dos cartuchos de micrófono, de modo que A ocupe la posición exacta que ocupaba B y viceversa, sin mover los cables del preamplificador ni del analizador. Medir .
  3. Formar (Ec. (10)) y dividir por él la función de transferencia de trabajo.

La diferencia entre los dos procedimientos es solo con qué frecuencia se hace el paso 2. El apartado 7.5.1 repite el intercambio para cada probeta, lo que conviene con pocas muestras; el apartado 7.5.2 determina una vez contra una probeta de calibración y lo conserva para toda la serie, lo que conviene en una tirada de producción, tras lo cual los micrófonos deben quedarse donde están. La técnica de un solo micrófono del Anexo B no necesita corrección alguna, porque solo hay un canal: lo paga con tiempo de medición, y es el mismo argumento que hace del método de onda estacionaria de la sección 2 el método de arbitraje.

# Una pareja de canales desajustada en 0,5 dB y 1 grado, y su eliminación. Las
# dos configuraciones difieren exactamente en ese factor, que es lo que
# recupera la Ec. (10).
mismatch = 10 ** (0.5 / 20) * np.exp(1j * np.radians(1.0))
h12_i = h12 * mismatch # configuración estándar
h12_ii = h12 / mismatch # micrófonos intercambiados físicamente
hc = materials.mic_calibration_factor(h12_i, h12_ii)
print(round(float(np.abs(hc[0])), 4), round(float(np.degrees(np.angle(hc[0]))), 2))
# 1.0593 1.0 -- el propio desajuste, recuperado
h12_corrected = materials.apply_mic_calibration(h12_i, hc)
print(float(np.abs(h12_corrected - h12).max()) < 1e-12) # True
# Lo que habrían afirmado los datos sin corregir, sobre una muestra de alpha = 0.75:
bad = materials.reflection_factor(h12_i, spacing=spacing, x1=x1, wavenumber=k0)
print(np.round(materials.absorption_from_reflection(bad), 3)) # [0.732 0.775 0.718]

La cadena de reducción de arriba son unas pocas líneas; las condiciones que hacen fiables sus entradas son la mayor parte de ISO 10534-2. En el orden en que importan:

  • El aire, medido y no supuesto (apartado 7.2). y no son constantes del método, son lecturas. La temperatura del aire del tubo debe medirse y mantenerse a ±1 K con un transductor exacto a ±0,5 K, y la presión atmosférica a ±0,5 kPa (apartado 4.12); la Ec. (5) convierte la primera en y la Ec. (7) la pareja en . La biblioteca expone las dos: speed_of_sound_iso(temperature) toma kelvin, y air_density_iso(temperature, atmospheric_pressure) toma kelvin y kilopascales; el fragmento de la ficha de abajo las alimenta directamente a two_microphone_impedance en lugar de usar literales. Ojo: las funciones auxiliares de ASTM E2611 de la sección 4 toman grados Celsius, y las dos no son intercambiables.
  • Excitación (apartados 4.10 y 7.3). Una señal estacionaria con densidad espectral plana en el rango de interés: aleatoria, pseudoaleatoria, pseudoaleatoria periódica o chirp. El nivel debe quedar al menos 10 dB por encima del fondo en todas las frecuencias de interés, y toda frecuencia cuya respuesta esté 60 dB por debajo del máximo se rechaza sin más. El número de promedios espectrales sale de la exactitud que se quiera en ; un producto ancho de banda por tiempo de 50 a 100 es el objetivo habitual (Anexo E.2), y el registro debe ser mucho más largo que o el solapamiento temporal lo corrompe (Ec. (E.1)).
  • Calentamiento (apartado 5). Al menos 10 minutos de altavoz en marcha antes de la primera medición, para que la temperatura del aire del tubo haya dejado de derivar.
  • El extremo de fuente (apartados 4.9 y 4.11). La membrana del altavoz cubre al menos dos tercios de la sección del tubo, va en una caja aislante frente a la transmisión aérea por flancos hacia los micrófonos, y está aislada elásticamente del tubo: la excitación estructural de la pared del tubo es una imitación clásica de la absorción. Al menos 200 mm de revestimiento absorbente eficaz cerca del altavoz amortiguan las resonancias de la columna de aire.
  • El extremo de la probeta (apartado 4.7). La placa trasera es rígida y está firmemente fijada, y se recomienda una placa metálica de al menos 20 mm, porque es la terminación rígida sobre la que descansan la mayoría de las mediciones. Un portamuestras independiente debe ajustar al diámetro del tubo con ±0,2 % y sellarse con vaselina en vez de con una junta elástica.
  • El analizador (apartado 4.8). Más de 65 dB de rango dinámico, y errores de función de transferencia por no linealidad, resolución, inestabilidad y temperatura por debajo de 0,2 dB.

Todo lo que el informe de ISO 10534-2 necesita sobre la geometría ya está en el bloque de metadatos de la ficha (diámetro y forma del tubo, separación de micrófonos, montaje, temperatura y presión), de modo que ese bloque se lee como una lista de comprobación del informe y no como decoración.

La atenuación del tubo, y cuándo activarla. La onda plana del tubo no está libre de pérdidas: las capas límite viscosa y térmica de la pared atenúan la onda incidente y la reflejada a lo largo de la distancia , y una atenuación que no se contabiliza se lee como absorción de la muestra. tube_attenuation_constant es la estimación de la Ec. (A.18), , y su escalado dice dónde importa: crece como y cae como , así que un tubo de 29 mm sufre unas tres veces y media la pérdida de uno de 100 mm a la misma frecuencia, y acercar la pareja de micrófonos a la probeta la reduce directamente. Importa sobre todo con un absorbente casi perfecto, donde la onda reflejada ya es débil. Vienen con ella dos cautelas. El apartado A.2.1.5 dice sin rodeos que esta estimación ignora las paredes porosas o sucias y cualquier objeto dentro del tubo, así que es un límite inferior: una discrepancia grande es señal de limpiar o volver a cualificar el tubo, no un número del que fiarse. Y la norma prefiere la vía medida: determinar la atenuación con el tubo vacío en frecuencias medias y altas (Ecs. (A.13)/(A.14), tras cada modificación del tubo) y extrapolar hacia abajo.

Resultado del tubo de dos micrófonos ISO 10534-2 para un absorbente poroso de 50 mm: el coeficiente de absorción a incidencia normal sube desde unos 0,2 a 200 Hz hasta 0,97 por encima de 1 kHz, con el módulo del factor de reflexión cayendo como su imagen especularResultado del tubo de dos micrófonos ISO 10534-2 para un absorbente poroso de 50 mm: el coeficiente de absorción a incidencia normal sube desde unos 0,2 a 200 Hz hasta 0,97 por encima de 1 kHz, con el módulo del factor de reflexión cayendo como su imagen especular

Un absorbente poroso de 50 mm medido en la banda de trabajo de un tubo de 100 mm: la absorción sube a medida que el espesor de la capa crece frente a la longitud de onda, y cae como su imagen especular ().

Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import materials
# Un absorbente poroso de 50 mm (Miki, sigma = 20 kPa s/m^2) en un tubo de
# 100 mm con separación de 100 mm (banda de trabajo ~170 Hz a 1,5 kHz): el
# modelo de capa da el factor de reflexión verdadero, del que sale la H12.
f = np.linspace(200.0, 1500.0, 260)
med = materials.miki(f, 20000.0)
layer = materials.layered_absorber(f, [materials.PorousLayer(0.05, med)])
spacing, x1, c0 = 0.10, 0.20, 343.2
k0 = materials.tube_wavenumber(f, c0)
x2 = x1 - spacing
r_true = layer.reflection
h12 = (np.exp(1j*k0*x2) + r_true*np.exp(-1j*k0*x2)) / \
(np.exp(1j*k0*x1) + r_true*np.exp(-1j*k0*x1))
result = materials.two_microphone_impedance(
h12, frequency=f, spacing=spacing, x1=x1, speed_of_sound=c0,
characteristic_impedance=407.0, diameter=0.10,
)
# Una línea: alpha(f) con |r| superpuesto.
result.plot(language="es")
plt.show()
# A mano, desde los campos del resultado:
fig, ax = plt.subplots()
ax.plot(f, result.absorption, label="Absorción alpha")
ax.plot(f, np.abs(result.reflection), "--", label="Factor de reflexión |r|")
ax.set_xlabel("Frecuencia [Hz]")
ax.set_ylabel("Coeficiente")
ax.legend()
plt.show()

ImpedanceTubeResult.report(path) genera una ficha PDF de una página con el formato de un informe de ensayo en tubo de impedancia a incidencia normal acreditado (ISO 10534-2:2001): la línea de base normativa, una cabecera de metadatos, la tabla por frecuencia (el coeficiente de absorción y las partes real e imaginaria de la impedancia superficial normalizada ) junto a la curva de (el propio .plot() del resultado, en un eje de frecuencia logarítmico continuo), un titular de caracterización en caja y un pie con el descargo fijo. La ISO 10534-2 es una caracterización, así que la ficha no incluye veredicto de cumplimiento ni número único; el coeficiente a incidencia normal no es comparable con el / a incidencia aleatoria de la ISO 354 / ISO 11654. Con verbose=True se añade la columna del módulo del factor de reflexión .

Usa el mismo contenedor ReportMetadata y el mismo motor que las demás fichas. El rango de frecuencias medido se toma del resultado; los campos descriptivos y geométricos de ReportMetadata que aplican aquí son client, manufacturer, specimen, tube_diameter, tube_shape, mic_spacing, mounting, test_room, test_date, temperature, pressure, measurement_standard, laboratory, operator, report_id y notes (tube_diameter y mic_spacing se dan en metros y se imprimen en milímetros). El campo requirement se ignora (la ISO 10534-2 no tiene veredicto). La generación necesita reportlab y, para la figura que incrusta la ficha, matplotlib (pip install "phonometry[report,plot]"); solo se admite engine="reportlab". La ficha se genera en inglés por defecto; pasa language="es" para una ficha en español (cadenas fijas traducidas y coma decimal).

El bloque de abajo es la probeta de la ficha que va debajo: una capa resistiva de resistencia al flujo normalizada sobre una cavidad de aire de 86 mm con respaldo rígido, cuya impedancia superficial se conoce en forma cerrada, así que el impreso se puede comprobar a mano: 1,00 en la resonancia de cuarto de onda de 1 kHz, donde la lámina adaptada da y ; 0,80 a 500 Hz, donde y .

import numpy as np
from phonometry import materials, ReportMetadata
# Tubo de 100 mm, s = 50 mm, micrófono lejano en x1 = 100 mm, 20 degC / 101 kPa.
c0 = float(materials.speed_of_sound_iso(293.15)) # 343.29 m/s
rho_c = materials.characteristic_impedance(
float(materials.air_density_iso(293.15, 101.0)), c0) # 405.6 Pa.s/m
diameter, spacing, x1 = 0.100, 0.050, 0.100
theta, cavity = 1.0, c0 / (4.0 * 1000.0) # cuarto de onda a 1 kHz: 86 mm
freqs = np.array([400, 500, 630, 800, 1000, 1250, 1600], dtype=float)
# La función de transferencia que mediría el tubo, sintetizada desde la r conocida.
k0 = materials.tube_wavenumber(freqs, c0)
z = theta - 1j / np.tan(2 * np.pi * freqs / c0 * cavity)
r_known = (z - 1.0) / (z + 1.0)
x2 = x1 - spacing
h12_fiche = (np.exp(1j*k0*x2) + r_known*np.exp(-1j*k0*x2)) / \
(np.exp(1j*k0*x1) + r_known*np.exp(-1j*k0*x1))
fiche = materials.two_microphone_impedance(
h12_fiche, frequency=freqs, spacing=spacing, x1=x1,
speed_of_sound=c0, characteristic_impedance=rho_c, diameter=diameter,
)
print(np.round(fiche.absorption, 2)) # [0.68 0.8 0.9 0.97 1. 0.96 0.68]
fiche.report(
"alpha_fiche.pdf",
metadata=ReportMetadata(
specimen="Capa resistiva sobre cavidad de aire de 86 mm con respaldo rígido",
tube_diameter=diameter, # m (se imprime como 100 mm)
mic_spacing=spacing, # m (se imprime como 50 mm)
measurement_standard="ISO 10534-2",
laboratory="Laboratorio de referencia Phonometry",
),
) # alpha e impedancia a incidencia normal en la banda del tubo
Informe de ejemplo en tubo de impedancia ISO 10534-2 (PDF)

Ficha de tubo de impedancia a incidencia normal de una página: una cabecera de metadatos (cliente, muestra, diámetro del tubo d, separación de micrófonos s, el rango de frecuencias medido, montaje, instalación de ensayo, temperatura y presión), la tabla por frecuencia del coeficiente de absorción alpha y las partes real e imaginaria de la impedancia superficial normalizada z junto a la curva de alpha en un eje de frecuencia logarítmico, y el titular de caracterización en caja sobre el rango de frecuencias ensayado.

Descargar el informe (PDF)

Ficha de tubo de impedancia a incidencia normal (ImpedanceTubeResult.report), el espectro de alpha con la impedancia superficial.

Con cuatro micrófonos (dos aguas arriba, dos aguas abajo de la muestra) una medición de dos cargas (o de una carga) recupera la matriz de transferencia de la muestra, cuyos elementos dan la pérdida por transmisión a incidencia normal, la reflexión y el número de onda:

Qué es una «carga», y por qué hay dos. Una carga es una terminación aguas abajo. La matriz tiene cuatro incógnitas, y una medición de las cuatro funciones de transferencia de micrófono aporta solo dos ecuaciones independientes, así que el método general cambia la terminación y repite la medición completa: el apartado 8.5.4.1 de E2611 resuelve los dos conjuntos a la vez (Ec. (22)). En la práctica el tubo termina en una terminación débilmente anecoica (una cuña o pirámide de lana de vidrio de unos 30 cm), y el apartado 6.2.8 pide que sea fácilmente extraíble precisamente para que un extremo abierto o cerrado pueda aportar la segunda carga. Las cuatro funciones de transferencia de cada carga se refieren a un mismo canal común, y cada una de ellas lleva la misma corrección de desajuste por configuración conmutada de la sección 3 (apartado 8.5.3): el método de cuatro micrófonos no se libra de ese requisito, lo multiplica. El extremo de fuente va sellado y aislado del tubo (apartado 6.4.2), igual que en la parte 2.

El método de una carga no es el método general con menos pasos. El apartado 8.5.4.2 cierra el sistema, en cambio, suponiendo que la probeta es geométricamente simétrica, «que presenta las mismas propiedades físicas al campo sonoro por ambos lados», de modo que la reciprocidad da y (Ec. (23)), y basta con una terminación, preferiblemente la anecoica. Eso vale para una capa homogénea y falla en cualquier composición asimétrica: una lámina por una cara, una densidad en gradiente, una membrana montada, un apilado de capas desiguales, que es la mayor parte de lo que la gente mete de verdad en un tubo de transmisión. transfer_matrix_one_load no detecta la asimetría, ni puede: avisa del rango de onda plana y de un denominador mal condicionado, y por lo demás devuelve una matriz plausible y equivocada, y con ella una pérdida por transmisión equivocada. La regla es sencilla: si la probeta tiene un delante y un detrás, usa dos cargas. Si crees que es simétrica, ejecuta los dos métodos y compara. Nada de esto afecta a la vía de absorción con respaldo rígido de la sección 3, que solo necesita la impedancia superficial.

Tubo de pérdida por transmisión de cuatro micrófonos de ASTM E2611: una fuente sonora, dos micrófonos aguas arriba y dos aguas abajo de la probeta de ensayo a las separaciones s1 y s2 y los desplazamientos l1 y l2, una terminación ajustable para el método de dos cargas, las ondas viajeras A y B aguas arriba y C y D aguas abajo, y las relaciones de matriz de transferencia y pérdida por transmisiónTubo de pérdida por transmisión de cuatro micrófonos de ASTM E2611: una fuente sonora, dos micrófonos aguas arriba y dos aguas abajo de la probeta de ensayo a las separaciones s1 y s2 y los desplazamientos l1 y l2, una terminación ajustable para el método de dos cargas, las ondas viajeras A y B aguas arriba y C y D aguas abajo, y las relaciones de matriz de transferencia y pérdida por transmisión

A escala tiene este aspecto. Una TransferMatrix recuperada por los métodos de dos cargas o de una carga retiene l1, s1, l2, s2 y el espesor de la probeta, así que tm.plot_geometry() redibuja el tubo en el que se midió.

Vista lateral a escala de un tubo de transmisión ASTM E2611 de 100 mm: el altavoz a la izquierda, los micrófonos 1 y 2 aguas arriba con separación s1 = 50 mm y a l1 = 100 mm de la probeta, la probeta de 50 mm en el centro del tubo, los micrófonos 3 y 4 aguas abajo con separación s2 = 50 mm y a l2 = 200 mm, la terminación intercambiable del método de dos cargas a la derecha, la sección transversal circular junto al tubo y el rango de trabajo de onda plana de 69 a 2011 HzVista lateral a escala de un tubo de transmisión ASTM E2611 de 100 mm: el altavoz a la izquierda, los micrófonos 1 y 2 aguas arriba con separación s1 = 50 mm y a l1 = 100 mm de la probeta, la probeta de 50 mm en el centro del tubo, los micrófonos 3 y 4 aguas abajo con separación s2 = 50 mm y a l2 = 200 mm, la terminación intercambiable del método de dos cargas a la derecha, la sección transversal circular junto al tubo y el rango de trabajo de onda plana de 69 a 2011 Hz

Dónde se sitúan de verdad los cuatro micrófonos del método de la matriz de transferencia alrededor de una probeta de 50 mm en un tubo de 100 mm: = 50 mm, = 100 mm, = 200 mm, y la terminación intercambiable que aporta la segunda carga. El rango de trabajo ASTM para esta geometría es de 69 a 2011 Hz.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
from phonometry import materials
materials.plot_transmission_tube_geometry(
l1=0.10, s1=0.05, l2=0.20, s2=0.05, thickness=0.05, diameter=0.10,
language="es")
plt.show()
# Una TransferMatrix de transfer_matrix_two_load / _one_load retiene su
# geometría, así que tm.plot_geometry() redibuja el tubo en el que se midió.
import numpy as np
from phonometry import materials
# Una capa de aire es una matriz de transferencia conocida; TL = 0 dB (no se pierde nada)
f = np.array([500.0, 1000.0, 2000.0])
k0 = 2*np.pi*f / 343.2
rho_c = 1.186 * 343.2
tm = materials.air_layer_transfer_matrix(thickness=0.05, wavenumber=k0,
characteristic_impedance=rho_c)
print(np.round(tm.transmission_loss(rho_c), 6)) # [0. 0. 0.]

transfer_matrix_two_load / transfer_matrix_one_load construyen la TransferMatrix a partir de las funciones de transferencia de los cuatro micrófonos (H1, H2, H3, H4) medidas en cada carga; sus métodos (transmission_loss, reflection_hard_backed, absorption_hard_backed, characteristic_impedance_material, material_wavenumber) leen entonces las magnitudes de ASTM E2611, y su .plot() dibuja la pérdida de transmisión con la absorción con respaldo rígido superpuesta (una matriz construida por esas reducciones retiene y, si se aporta, el vector de frecuencias, de modo que solo una matriz construida a mano los necesita como argumentos). La matriz no tiene por qué venir de una medición: el modelo multicapa expone la matriz de cadena de cualquier apilado modelado en el mismo convenio, de modo que una probeta predicha se lee exactamente igual que una medida.

import numpy as np
from phonometry import materials
# La matriz de cadena de una capa porosa de 50 mm modelada, leída de vuelta
# por la maquinaria de ASTM E2611: TL y absorción con respaldo rígido de la
# misma probeta.
f = np.linspace(200.0, 1600.0, 300)
med = materials.miki(f, 20000.0)
layer = materials.layered_absorber(f, [materials.PorousLayer(0.05, med)])
chain = layer.transfer_matrix # forma (2, 2, len(f))
tm = materials.TransferMatrix(t11=chain[0, 0], t12=chain[0, 1],
t21=chain[1, 0], t22=chain[1, 1])
print(np.round(float(tm.transmission_loss(407.0)[-1]), 1)) # 9.7 dB a 1,6 kHz
tm.plot(f, 407.0) # TL(f) con la absorción con respaldo rígido superpuesta
Magnitudes de la matriz de transferencia ASTM E2611 de una capa porosa de 50 mm: la pérdida de transmisión a incidencia normal sube desde unos 6,6 dB a 200 Hz hasta más de 9 dB a 1,6 kHz en el eje izquierdo, y el coeficiente de absorción con respaldo rígido sube de 0,19 a 0,97 en el eje derechoMagnitudes de la matriz de transferencia ASTM E2611 de una capa porosa de 50 mm: la pérdida de transmisión a incidencia normal sube desde unos 6,6 dB a 200 Hz hasta más de 9 dB a 1,6 kHz en el eje izquierdo, y el coeficiente de absorción con respaldo rígido sube de 0,19 a 0,97 en el eje derecho

Los mismos cuatro polos responden dos preguntas distintas: cuánto sonido deja pasar la capa exenta (la pérdida de transmisión, Ec. (26)) y cuánto absorbe la misma capa con respaldo rígido (Ec. (28)).

Un TL de tubo no es un índice de reducción sonora. La ficha de la sección 3 avisa de que el a incidencia normal no es el a incidencia aleatoria; el mismo aviso vale del lado de la transmisión, y ahí se pasa por alto más a menudo. Lo que mide el tubo es la pérdida por transmisión de una probeta de unos pocos centímetros, para una onda plana a un ángulo, con los bordes de la probeta empotrados por la pared del tubo. Lo que es el índice de reducción sonora es una magnitud de campo difuso medida sobre un elemento a tamaño real con su montaje real, y lleva consigo las ondas de flexión del propio elemento, sus condiciones de borde y su caída de aislamiento en la coincidencia, nada de lo cual existe dentro de un tubo. Espera que el valor a incidencia normal quede por encima de una estimación a incidencia de campo para una capa gobernada por la masa, y espera que el tubo se pierda por completo los valles de resonancia y de coincidencia de un panel real. Usa el TL de tubo para comparar materiales y para ajustar y verificar un modelo de matriz de transferencia; predice después la construcción con el modelo, o con EN 12354, y nunca llevando el número del tubo a un cálculo de partición.

Mostrar el código de esta figura
import matplotlib.pyplot as plt
import numpy as np
from phonometry import materials
f = np.linspace(200.0, 1600.0, 300)
med = materials.miki(f, 20000.0)
layer = materials.layered_absorber(f, [materials.PorousLayer(0.05, med)])
chain = layer.transfer_matrix # forma (2, 2, len(f))
tm = materials.TransferMatrix(t11=chain[0, 0], t12=chain[0, 1],
t21=chain[1, 0], t22=chain[1, 1])
# Una línea: TL(f) en el eje izquierdo, absorción con respaldo rígido a la derecha.
tm.plot(f, 407.0, language="es")
plt.show()
# A mano, desde los métodos de la matriz:
fig, ax = plt.subplots()
ax.plot(f, tm.transmission_loss(407.0), label="Pérdida de transmisión TL_n")
twin = ax.twinx()
twin.plot(f, tm.absorption_hard_backed(407.0), "--", color="gray",
label="Absorción con respaldo rígido alpha")
ax.set_xlabel("Frecuencia [Hz]")
ax.set_ylabel("Pérdida de transmisión TL_n [dB]")
twin.set_ylabel("Absorción con respaldo rígido alpha")
plt.show()

La mayoría de los malos datos de tubo se fabrican en el portamuestras, mucho antes del procesado de señal. Los fallos recurrentes:

  • Holguras perimetrales. Una probeta cortada ligeramente pequeña deja una lámina de aire junto a la pared del tubo. El sonido se cortocircuita alrededor y por detrás de la muestra, y la propia holgura resuena, de modo que la absorción medida gana una joroba espuria de baja a media frecuencia. Corta con ajuste deslizante ceñido y sella el borde (una película fina de vaselina es el remedio clásico) sin cargar la cara frontal.
  • Compresión. Una probeta cortada grande y embutida a la fuerza es más densa que el producto que debe representar: la resistividad al flujo sube, un esqueleto flexible se rigidiza, y la curva de absorción se desplaza y se aplana. El resultado es repetible y erróneo.
  • Cavidad trasera oculta. Si la probeta no asienta a ras del respaldo rígido, la capa de aire involuntaria actúa como cavidad de cuarto de longitud de onda y desplaza el pico de absorción hacia abajo en frecuencia, favoreciendo al material. Las cámaras de aire traseras son montajes perfectamente legítimos, pero solo cuando son deliberadas, dimensionadas y declaradas con el resultado.
  • Cara no plana. Una cara frontal abombada, inclinada o desgarrada dispersa hacia modos transversales por debajo del corte nominal y rompe la hipótesis de incidencia normal sobre la que descansan las ecuaciones. Corta con herramienta afilada; no rasgues los materiales fibrosos a medida.
  • Una probeta no es el material. Los productos porosos son inhomogéneos a la escala de una muestra de tubo. Mide varios cortes y promedia; la dispersión entre probetas es varianza del producto que merece declararse, no ruido de medida que esconder.

5. El tubo virtual: la simulación medida por las normas

Sección titulada «5. El tubo virtual: la simulación medida por las normas»

Un dominio de tres filas con paredes rígidas del simulación FDTD 2D es un tubo de onda plana, y con el mapa de damping por celda una muestra porosa se convierte en un fluido equivalente (mapas de densidad, velocidad y pérdidas). Eso cierra un círculo notable: las historias de las sondas FDTD pueden reducirse con las propias cadenas ISO 10534-2 y ASTM E2611 de la biblioteca como si fueran medidas, y los espectros recuperados coinciden con la respuesta analítica exacta de la misma capa con pérdidas dentro de 0,035 en absorción y 0,1 dB en pérdida de transmisión (las comprobaciones cruzadas de tests/simulation lo ejecutan en cada commit).

import numpy as np
from phonometry.materials import two_microphone_impedance
from phonometry.simulation import FDTD2D
c0, rho0, dx = 343.0, 1.2, 0.005
nx, d_cells = 280, 20 # tubo de 1,4 m, muestra de 10 cm
c = np.full((3, nx), c0); rho = np.full((3, nx), rho0)
sigma = np.zeros((3, nx))
c[:, -d_cells:] = 0.6 * c0 # la muestra: más lenta,
rho[:, -d_cells:] = 3.0 * rho0 # más densa y con pérdidas
sigma[:, -d_cells:] = 600.0
sim = FDTD2D(c, dx, rho=rho, damping=sigma,
edge_impedance={"left": rho0 * c0}) # extremo fuente anecoico
sim.add_plane_wave("right", center=0.35, width=0.05)
mics = (219, 229) # la pareja de micrófonos ISO
records = np.zeros((2, 9000))
for n in range(records.shape[1]):
sim.step()
records[:, n] = sim.p[1, mics]
spec = np.fft.rfft(records, axis=1)
freqs = np.fft.rfftfreq(records.shape[1], sim.dt)
band = (freqs > 300.0) & (freqs < 1200.0)
result = two_microphone_impedance(
spec[1, band] / spec[0, band], frequency=freqs[band],
spacing=0.05, x1=(nx - d_cells) * dx - (mics[0] + 0.5) * dx,
speed_of_sound=c0, characteristic_impedance=rho0 * c0)
result.plot(language="es") # la absorción que "midió" el tubo virtual

Los dos clips de abajo ejecutan exactamente este experimento. En el tubo de impedancia un tono plano sostenido construye la onda estacionaria que leen los dos micrófonos: contra el extremo rígido los mínimos son profundos, delante de la muestra quedan someros. En el tubo de transmisión un paquete con portadora cruza un conducto anecoico: el tubo vacío lo deja pasar intacto, la capa con pérdidas lo divide en una reflexión y una transmisión atenuada que resuelven los cuatro micrófonos ASTM.

Un altavoz inyecta un tono plano sostenido de 850 Hz en un tubo de impedancia virtual de 1,2 metros con paredes rígidas, dibujado como el instrumento real con sus dos micrófonos enrasados y su tapón rígido. Contra el tapón la envolvente de la onda estacionaria desarrolla mínimos profundos, mientras que una muestra con pérdidas de 10 cm delante del mismo tapón deja los mínimos someros; se anota la absorción recuperada de 0,54.

Descargar la animación (WebM)

Un altavoz inyecta un tono plano sostenido de 850 Hz en un tubo de impedancia virtual de 1,2 metros con paredes rígidas, dibujado como el instrumento real con sus dos micrófonos enrasados y su tapón rígido. Contra el tapón la envolvente de la onda estacionaria desarrolla mínimos profundos, mientras que una muestra con pérdidas de 10 cm delante del mismo tapón deja los mínimos someros; se anota la absorción recuperada de 0,54.

Descargar la animación (WebM)

El extremo del altavoz dispara un paquete con portadora por un tubo de transmisión virtual de 1,6 metros con paredes rígidas, dibujado como el instrumento real con sus cuatro micrófonos enrasados y su terminación anecoica rayada. El tubo vacío deja pasar el paquete sin cambios; una capa con pérdidas de 10 cm a mitad de tubo lo divide en un tren reflejado y una transmisión atenuada, con la pérdida de transmisión de 3,1 dB anotada.

Descargar la animación (WebM)

El extremo del altavoz dispara un paquete con portadora por un tubo de transmisión virtual de 1,6 metros con paredes rígidas, dibujado como el instrumento real con sus cuatro micrófonos enrasados y su terminación anecoica rayada. El tubo vacío deja pasar el paquete sin cambios; una capa con pérdidas de 10 cm a mitad de tubo lo divide en un tren reflejado y una transmisión atenuada, con la pérdida de transmisión de 3,1 dB anotada.

Descargar la animación (WebM)

  • Cubierto

    El trío del tubo de impedancia. El método de la razón de onda estacionaria de ISO 10534-1 (standing_wave_ratio_from_level, standing_wave_reflection_magnitude, standing_wave_absorption, y la mitad de posición de la lectura en standing_wave_reflection y standing_wave_normalized_impedance). El método de la función de transferencia de ISO 10534-2 con su comprobación de rango de frecuencias del apartado 4 (two_microphone_impedance, plane_wave_frequency_range, reflection_factor, absorption_from_reflection, normalized_surface_impedance, normalized_surface_admittance, las propiedades del aire del apartado 7.2 speed_of_sound_iso y air_density_iso, la pareja de desajuste del apartado 7.5 mic_calibration_factor y apply_mic_calibration, y tube_attenuation_constant). El método de matriz de transferencia con cuatro micrófonos de ASTM E2611 (transfer_matrix_two_load, transfer_matrix_one_load, TransferMatrix, plane_wave_frequency_range_astm, hydraulic_diameter), con los dibujos a escala de ambos tubos. Los tubos FDTD virtuales de la sección 5, cuyos espectros recuperados se contrastan con la respuesta analítica en cada commit.

  • No cubierto

    Dos ediciones citadas solo como revisiones posteriores no están implementadas: ISO 10534-2:2023 (el código sigue el método de la función de transferencia de 1998/2001) y ASTM E2611-24 (el código sigue E2611-19). ISO 10534-1:1996 está implementada como su adopción europea BS EN ISO 10534-1:2001, no leída directamente del texto ISO de 1996; sus refinamientos de sonda (extrapolar los niveles de los mínimos hasta la cara de la muestra, correcciones por el cuerpo de la sonda) se describen en la sección 2 pero no están automatizados. Tampoco lo están los apartados de equipo y procedimiento de las secciones 1.1 y 3.2: las distancias de campo cercano del apartado 4.3, las tolerancias de posición del apartado 4.5, el suelo de relación señal-ruido del apartado 7.3 y el calentamiento del apartado 5 se enuncian para el operador, y nada de la biblioteca comprueba que se haya cumplido ninguno de ellos. tube_attenuation_constant implementa solo la estimación de la Ec. (A.18), que la propia norma llama límite inferior; la determinación medida de las Ecs. (A.13)/(A.14) con el tubo vacío no está implementada. El de incidencia aleatoria de la cámara reverberante es otra magnitud con su propia guía: Medida y clasificación de la absorción sonora.