Velocidades de onda de un sólido
Cubierto
Las tres velocidades longitudinales de un sólido homogéneo e isótropo, cada una con la inversa que devuelve el módulo de Young, y el producto de espesor por frecuencia crítica que imprimen las tablas de materiales.
No cubierto
Ondas de flexión y de cizalla, placas anisótropas, y cualquier dependencia de la temperatura o de la edad del espécimen.
El problema que resuelve
Sección titulada «El problema que resuelve»Tienes una tabla. Te da una velocidad de onda de 5 270 m/s para el acero, una densidad y un coeficiente de Poisson, y ningún módulo de Young. Tu función quiere el módulo. Otra tabla te da 200 GPa y ninguna velocidad, y la función que alimentas después quiere la velocidad. Una tercera te da 12,3 m Hz y ninguno de los dos.
Las tres describen el mismo acero. Pasar de una a otra cuesta una línea de álgebra, que es una línea de álgebra de más para hacerla de memoria, porque la respuesta depende de algo que la tabla muchas veces no dice: si su velocidad es la de una viga, la de una placa o la de un sólido extenso.
Las tres velocidades
Sección titulada «Las tres velocidades»from phonometry import solids
modulus, density, poisson = 2.0e11, 7800.0, 0.28
beam = solids.beam_longitudinal_speed(modulus, density_kg_m3=density)plate = solids.plate_longitudinal_speed( modulus, density_kg_m3=density, poisson_ratio=poisson)bulk = solids.bulk_longitudinal_speed( modulus, density_kg_m3=density, poisson_ratio=poisson)
print(f"{beam:.0f} {plate:.0f} {bulk:.0f}") # 5064 5275 5725El orden es siempre el mismo, y es el de cuánto está sujeto el material: una viga puede contraerse de lado libremente, una placa está sujeta a lo ancho, y un sólido extenso está sujeto por todos lados.
Las dos primeras son las Ecs. (2.20) y (2.21) de Hopkins, la tercera es la Ec. (1.225) de Norton y Karczub. Con las tres colapsan en una, que es la forma más rápida de recordar que lo único que las separa es cómo se paga la deformación lateral.
Cuál está en tu tabla
Sección titulada «Cuál está en tu tabla»La acústica de la edificación imprime la de placa. La Tabla B.3 de EN 12354-1 y la Tabla A2 de Hopkins la tabulan las dos, y Hopkins lo dice en una nota al pie: los valores sirven de estimación para vigas o placas, que es a la vez admitir que las dos difieren y afirmar que para esos materiales la diferencia cae dentro de la dispersión de la tabla.
Un solucionador elástico en el dominio del tiempo integra la de sólido extenso, porque el material que discretiza no tiene bordes a escala de una celda. Meter una tabla de placa en un solucionador es una trampa documentada: para el acero de arriba la diferencia es del ocho y medio por ciento, y para el aluminio del quince.
Una velocidad de viga aparece donde de verdad se midió una barra, que es de donde una tabla de velocidades del sonido de un texto general suele sacar sus sólidos.
Volver al módulo
Sección titulada «Volver al módulo»Cada velocidad tiene su inversa, y son las que permiten comparar los libros:
from phonometry import solids
# Tabla A2 de Hopkins, acero: velocidad de placa, densidad y Poisson.modulus = solids.youngs_modulus_from_plate_speed( 5270.0, density_kg_m3=7800.0, poisson_ratio=0.28)print(f"{modulus / 1e9:.0f} GPa") # 200 GPaDoscientos gigapascales, que es lo que tiene un acero estructural, y el número que imprimen Cremer y Mechel en la columna que Hopkins deja fuera.
La columna que comprueba la tabla
Sección titulada «La columna que comprueba la tabla»Hopkins, Long y Mechel imprimen los tres el producto del espesor por la frecuencia crítica. Es una propiedad del material a secas, porque el espesor se cancela, y por eso es la comprobación cruzada más barata que hay entre libros que no comparten ninguna otra columna:
from phonometry import solids
print(f"{solids.thickness_critical_frequency_product(5270.0):.2f}") # 12.31La Tabla A2 de Hopkins imprime 12,3 m Hz para ese acero y dice en su cabecera que la columna supone m/s.
La constante importa. ISO 12354-1 escribe la frecuencia crítica con un 1,8
redondeado en el denominador, que es con dos cifras.
La forma redondeada es la aritmética de la norma y
phonometry.building.critical_frequency la conserva, porque una medida que
dice seguir la norma tiene que hacerlo. Aquí la constante exacta es la buena:
reproduce las veinticinco filas de la Tabla A2, y la redondeada falla la fila
del acero por un 0,8 por ciento.
La tabla, y lo que no dice
Sección titulada «La tabla, y lo que no dice»Teclear la fila a mano es la otra mitad del problema que resuelven las tres
velocidades. PUBLISHED_SOLIDS tiene doscientas sesenta filas leídas de nueve tablas
publicadas, con la clave de la tabla de la que salieron, así que un tabique de
placa de yeso o un forjado de hormigón parten de un número que alguien publicó
y no de uno que uno recuerda a medias. Todas están además en la página de
catálogos publicados,
filtrables, con el libro y la página en que se leyó cada fila.
from phonometry import solids
board = solids.PUBLISHED_SOLIDS["hopkins-2007-table-a2/plasterboard_natural_gypsum"]print(board.density_kg_m3, board.plate_longitudinal_speed_m_s, board.flexural_loss_factor)# 860.0 1490.0 0.0141print(round(board.youngs_modulus_pa / 1e9, 2))# 1.74Ese módulo no está en la tabla. Es la inversa del apartado anterior, aplicada a
la velocidad, la densidad y el Poisson de la propia fila, y la fila lo dice:
board.is_derived("youngs_modulus_pa") da True y
board.derived["youngs_modulus_pa"] nombra las tres celdas de las que salió.
Hopkins marca el coeficiente de Poisson de esta placa como una estimación, así
que el texto dice además que el módulo se apoya en esa estimación, junto a una
velocidad y una densidad cuya base la página no indica. Un número que calcula
esta biblioteca nunca se guarda como si lo hubiera impreso una página.
La clave nombra el libro a propósito
Sección titulada «La clave nombra el libro a propósito»Siete de las nueve tablas imprimen una fila llamada Steel, y no son el mismo
acero: Hopkins da una velocidad de placa de 5 270 m/s y un Poisson de 0,28,
Cremer un módulo de 210 GPa y 0,31, Bies 207 GPa para el dulce y 210 para el de
uno por ciento de carbono, Long una velocidad y una densidad y ningún módulo,
Norton & Karczub 195 GPa en su apéndice y solo un factor de pérdidas en su
tabla 6.1, y Vigran un módulo impreso como intervalo.
Mechel también imprime un acero y lo llama «Steel, cast steel», así que la
búsqueda no lo alcanza: emparejar un material entre libros es trabajo del
acuerdo y no del nombre. Un
"steel" a secas tendría que elegir uno de ellos sin decirlo, y elegir en
silencio entre valores publicados es justo lo que un catálogo existe para no
hacer.
for row in solids.solids_named("Steel"): modulus = row.youngs_modulus_pa print(row.table, row.variant or "-", modulus and round(modulus / 1e9, 1))# hopkins-2007-table-a2 - 199.6# cremer-2005-table-4-3 - 210.0# bies-2017-table-c1 mild 207.0# bies-2017-table-c1 1% carbon 210.0# long-2014-table-12-1 - None# norton-karczub-2003-appendix-4a - 195.0# norton-karczub-2003-table-6-1 - None# vigran-2008-table-3-1 - NoneLong y la tabla de factores de pérdidas no imprimen módulo, y el de Vigran es un intervalo, y por eso el bucle pregunta si lo hay antes de dividir. Que un libro dé menos columnas es aquí el caso normal, no la excepción.
Cada fila lleva las tres velocidades longitudinales siempre que sus propias
celdas lo permitan, así que la comparación es entre los libros y no entre dos
ondas. Dos filas de Hopkins, el hormigón celular y el ladrillo, imprimen la
densidad sólo como rango, y de una densidad que la página no quiso concretar no
se deduce nada: esas dos conservan la velocidad de placa que la página imprimió
y why_missing dice por qué faltan las otras dos. La
columna de Cremer es la de barra, que su Ec. (3.32) define como sqrt(E/rho):
el subíndice romano de c_LII cuenta las direcciones en las que la contracción
transversal es libre, así que II es una barra y no una placa. Frente a la
velocidad longitudinal pura de un sólido extenso él mismo cifra la diferencia
en un 16 por ciento con nu = 0,3, que es lo que reproducen las tres funciones
de arriba; la de placa queda en medio, un 4,8 por ciento por encima de la de
barra.
Una página llega hasta donde llegan sus columnas
Sección titulada «Una página llega hasta donde llegan sus columnas»Mechel imprime módulo y ningún coeficiente de Poisson, así que una fila suya llega hasta la velocidad de barra y ahí se para. La de placa y la de sólido extenso pedirían un coeficiente que él no imprime, y un 0,3 reproduciría su tabla estupendamente y sería un número que él no dio. Catorce de sus treinta y ocho filas ni siquiera llegan tan lejos, porque la página imprime su densidad o su módulo como rango y de una celda que el libro no quiso concretar no se deduce nada.
steel = solids.PUBLISHED_SOLIDS["mechel-2008-table-3/steel"]print(steel.poisson_ratio, steel.plate_longitudinal_speed_m_s)# None Noneprint(round(steel.bar_longitudinal_speed_m_s), steel.is_derived("bar_longitudinal_speed_m_s"))# 5064 TrueLo que cruza entre Hopkins y Mechel sin ninguna suposición es h f_c, el
producto del espesor de una placa por su frecuencia crítica, que Hopkins
imprime como columna y Mechel como f_cr d. No necesita ni coeficiente de
Poisson ni velocidad del sonido ni conversión, y eso lo convierte en la
comprobación cruzada más barata que hay entre libros que no comparten ninguna
otra columna: para el acero, los dos imprimen 12,3 m Hz. Cremer no imprime esa
columna, así que sus filas llevan una derivada y entran en la comparación sólo
a través de la suposición de cabecera que Hopkins sí declara.
La forma más cara de leer mal una tabla
Sección titulada «La forma más cara de leer mal una tabla»Bies imprime una columna titulada «Internal-in situ Loss factor», y cada celda lleva dos números y no un intervalo. Su nota al pie dice cuál es cuál: el extremo alto para paneles montados en un edificio y el bajo para paneles soldados dentro de un cerramiento. Para el acero son 0,0001 y 0,01, así que leerlos como rango del factor interno sería un factor cien.
steel = solids.PUBLISHED_SOLIDS["bies-2017-table-c1/steel_mild"]print(steel.loss_factor, steel.in_situ_loss_factor)# 0.0001 0.01Su extremo interno cae donde ponen ese mismo número los otros libros: Cremer mide el factor de pérdidas a flexión del acero entre 0,2 y 3 por 10⁻⁴, y Mechel imprime 1 por 10⁻⁴.
Cuando la página no dice cuál
Sección titulada «Cuando la página no dice cuál»Long imprime una velocidad longitudinal sin decir cuál de las tres es, y tanto él como Arau imprimen un factor de pérdidas sin decir cuál; Arau no imprime ninguna velocidad. La columna de Long se titula «Speed of Longitudinal Waves» y a su lado no hay ni módulo ni coeficiente de Poisson, así que nada de la página puede decidir si es la de barra, la de placa o la de sólido extenso.
steel = solids.PUBLISHED_SOLIDS["long-2014-table-12-1/steel"]print(steel.longitudinal_speed_m_s, steel.bar_longitudinal_speed_m_s)# 5050.0 NoneCompararla con las cuatro tablas que sí lo dicen apunta a la de barra: su acero, con 5 050 m/s, queda por debajo de todas las velocidades de placa de los aceros del catálogo, que van de 5 270 a 5 458, y su aluminio coincide al dígito con la velocidad de barra que imprime Bies. Eso es un indicio y no una lectura, y una suposición metida en un campo con nombre se compararía después contra columnas que sí se leyeron, así que el valor se queda donde lo dejó la página.
Esa misma página imprime una fila de puntos en nueve de sus celdas de velocidad y las palabras «Varies with frequency» en uno de sus factores de pérdidas, y las filas lo dicen en vez de quedarse vacías sin más.
block = solids.PUBLISHED_SOLIDS["long-2014-table-12-1/hollow_dense_concrete"]print(block.loss_factor, block.why_missing("loss_factor"))# None the table prints “Varies with frequency” where the number would beCuatro de veinticinco
Sección titulada «Cuatro de veinticinco»Una tabla de materiales no es una lista de medidas, y ésta lo dice. La mayoría
de los coeficientes de Poisson de Hopkins y de sus factores de pérdidas llevan
una nota al pie cuyo texto completo es «Estimate»: de las veinticinco filas,
sólo el aluminio, el vidrio, el mortero y el acero imprimen un Poisson que el
libro respalda. El catálogo conserva esa distinción, porque un 0,2 leído como
medida se creerá más de lo que se lo cree Hopkins. Lo que la fuente afirma de
una celda es su basis, y basis_of lo lee: "estimated" en una celda con
la nota al pie, y una cadena vacía donde la página no dice cómo se obtuvo el
número.
print(board.basis_of("poisson_ratio"))# estimatedprint(board.basis_of("flexural_loss_factor") or "no consta")# no constaOtras tres cosas que las páginas dicen y que no son números sueltos, y que la fila conserva en vez de aplanarlas:
- Una celda impresa como intervalo. El hormigón celular es de 400 a
800 kg/m³ y el ladrillo de 1 500 a 2 000, porque eso es lo que se sabe de un
bloque. Esas filas tienen
density_kg_m3aNoney el intervalo enranges, ywhy_missingdice cuál de las dos cosas pasa. - Una cota en vez de un valor. El aluminio y el acero imprimen el factor de
pérdidas como
≤, y lo mismo el latón, el níquel y la plata de Cremer; todos están enbounded_aboveademás de enranges. - Un número que el autor redondeó a propósito. Cremer imprime
≈ 3 · 10⁻⁴para el oro, que no es ni estimación ni intervalo. Eso esapproximate.
aircrete = solids.PUBLISHED_SOLIDS["hopkins-2007-table-a2/aircrete"]print(aircrete.density_kg_m3, aircrete.why_missing("density_kg_m3"))# None the page prints 400 to 800 and no value
gold = solids.PUBLISHED_SOLIDS["cremer-2005-table-4-3/gold"]print(gold.flexural_loss_factor, gold.is_approximate("flexural_loss_factor"))# 0.0003 TrueDonde una página imprime dos especímenes bajo un nombre, son dos filas. El plomo de Cremer es químicamente puro en una y con antimonio en la otra, y comparten todas las columnas menos el factor de pérdidas a flexión, donde se llevan un factor cincuenta.
for key in ("lead_chemically_pure", "lead_antimonial"): row = solids.PUBLISHED_SOLIDS[f"cremer-2005-table-4-3/{key}"] print(row.variant, row.ranges["flexural_loss_factor"])# chemically pure (0.05, 0.3)# antimonial (0.001, 0.004)Las filas cuyas columnas un libro toma de otro autor conservan el crédito, y
los números entre corchetes que imprime Cremer se resuelven contra su propia
lista de referencias en vez de quedarse en [4.19].
steel = solids.PUBLISHED_SOLIDS["hopkins-2007-table-a2/steel"]print(steel.attributed_to["flexural_loss_factor"])# Heckl, 1981Donde los libros discrepan
Sección titulada «Donde los libros discrepan»Que dos libros impriman números distintos para el mismo material es el catálogo
funcionando, no fallando. check_solid_agreement.py los pone uno al lado del
otro y ordena las discrepancias en las tres únicas cosas que pueden ser: un
dígito mal tecleado, una diferencia entre los propios libros o un defecto de
una página. Falla con la primera e informa de las otras dos, y la propiedad con
la que falla es la densidad.
La densidad es la única columna que una tabla no puede equivocar mucho sin estar describiendo otro material. En estas nueve tablas, toda densidad que el gate no acepte ya concuerda con la de los otros libros dentro del 8 por ciento, mientras que los módulos discrepan un diecinueve por ciento en el aluminio sin que nadie se equivoque. Así que una densidad a más del 8 por ciento es una errata de transcripción, por debajo de eso pasa sin decir nada, y un módulo que dobla al vecino es la literatura.
La primera pasada completa encontró el estaño, donde los libros no se ponen de acuerdo en un factor de doce.
for row in solids.solids_named("Tin"): if row.youngs_modulus_pa is not None: print(row.table.split("-")[0], round(row.youngs_modulus_pa / 1e9, 1), row.density_kg_m3)# cremer 4.4 7280.0# mechel 4.4 7280.0# bies 54.0 7300.0# norton 45.0 7300.0Las densidades concuerdan al 0,3 por ciento, así que nadie ha confundido el
material, y cada libro es coherente consigo mismo: los 4,4 GPa de Cremer
reproducen sus propios 780 m/s impresos, su módulo de cizalla y su velocidad
transversal; los 54 de Bies reproducen exactamente sus 2 720 m/s impresos; los
45 de Norton & Karczub reproducen sus 2 500 m/s impresos con menos de un uno
por ciento de diferencia; y el h f_c de 81 m Hz de Mechel sale de 4,4 y no de
54. Ninguna página se contradice a sí misma, así que esto no es una errata que
registrar y el catálogo se queda con las cuatro lecturas.
Lo que sí dice hacia dónde mirar es el resto del catálogo. Un estaño de 4,4 GPa lleva el sonido a 780 m/s, o sea entre los plásticos blandos, por debajo del polietileno de alta densidad con sus 1 030 y por debajo de todas las filas de plomo de aquí, que van de 1 180 a 1 257 m/s aunque el plomo es el metal más blando y pesa vez y media más. Así que los dos libros que coinciden son los dos contra los que argumentan las otras doscientas cincuenta filas, y el cuarto libro que imprime un estaño se pone del lado de las filas, que es justo la razón de que nada en este catálogo vote por mayoría: que dos libros coincidan no es prueba, y cuando comparten un error suele ser porque comparten un ancestro.
Nada de esto es una especificación. Las densidades de los bloques varían con el fabricante y las placas con el lote, que es la razón por la que las páginas imprimen rangos donde los imprimen, y Cremer dice con todas las letras que el factor de pérdidas de un metal no puede considerarse una constante del material. Una fila sirve para reproducir un ejemplo resuelto, para contrastar una medida o para tener un orden de magnitud.
Qué rechazan las funciones
Sección titulada «Qué rechazan las funciones»Un coeficiente de Poisson de 0,5 describe un material incompresible, y un
material incompresible no tiene onda longitudinal pura que pueda tener
velocidad, así que bulk_longitudinal_speed lanza en lugar de dividir por
cero. La forma de placa es más laxa, porque sólo necesita que siga
siendo positivo, pero rechaza un coeficiente de 1 por la misma razón. Los dos
mensajes nombran el coeficiente que recibieron y el término que se habría
anulado.