El flujo supersónico no sabe lo que ocurre aguas arriba — curvas características y ondas sonoras en las ecuaciones de Euler
Por qué una pequeña perturbación se separa en tres velocidades características
Un caza supersónico llega antes que el sonido de su propio motor: primero pasa por encima de la cabeza y solo después llega el estruendo. La razón de que esto ocurra ya está escrita dentro de las ecuaciones de Euler. Este artículo deriva cómo una pequeña perturbación se separa en tres señales distintas. Las curvas características que esas señales dibujan en el plano (la traza que deja el paso de cada señal) se examinan en una figura manipulable, y al final las tres velocidades características se extraen directamente con Python.
Las ecuaciones compresibles son propagación de señales#
El flujo compresible no viscoso en una dimensión se escribe con tres leyes de conservación.
es la densidad, la velocidad, la presión y la energía específica total. A primera vista parecen ecuaciones de un fluido que "fluye". Pero la esencia de estas ecuaciones no es el transporte, sino la propagación de señales. Toda la dinámica del flujo se descompone en unas pocas señales que viajan a velocidades determinadas. Para ver cuáles son esas velocidades basta con linealizar la ecuación por un momento.
Una pequeña perturbación genera una ecuación de onda#
Sobre un estado de fondo se superpone una perturbación muy pequeña. Tomando , y usando , se conservan solo los términos de primer orden. Definiendo la derivada que se mueve con el fondo (derivada co-móvil), al combinar las dos ecuaciones de perturbación resulta una única ecuación de onda.
Aquí es la velocidad del sonido.
es la razón de calores específicos. Al insertar en esta ecuación se obtiene la relación de dispersión.
es la frecuencia angular y el número de onda. La perturbación se deja arrastrar por el flujo de fondo y se propaga hacia ambos lados a la velocidad del sonido . Es decir, la perturbación en un punto se separa en dos velocidades: y .
Las curvas características que se separan en tres ramas#
Las dos ondas sonoras no son todo. La tercera señal es el propio fluido. Supongamos que se pinta el fluido con color. Si en se tiñe la izquierda de azul y la derecha de rojo, la frontera de color simplemente se deja arrastrar por el flujo.
Esta señal se desplaza a la velocidad . Esta es la característica de entropía (o superficie de contacto). En resumen, el flujo unidimensional tiene tres velocidades características.
En el plano , las líneas que satisfacen se llaman curvas características. son las ondas sonoras y es el transporte de materia. A lo largo de cada característica acústica se conservan constantes los invariantes de Riemann , y a lo largo de la característica material se conserva la entropía.
Se puede manipular directamente el flujo de fondo en la animación de abajo.
The blue tint marks the upstream region the left-going sound has reached. Push u₀ past 1 and the blue tint vanishes: the C− signal now has a positive speed, so every signal runs downstream and the source can no longer talk to what lies upstream.
Con en 0.4, la señal azul (onda sonora izquierda) se extiende hacia la izquierda de la fuente, es decir, aguas arriba. Al subir por encima de 1 esa traza azul desaparece. Esto ocurre porque se vuelve positivo y las tres señales viajan solo aguas abajo.
En régimen supersónico el cono de señal se vuelca#
La misma historia se ve con más claridad en un diagrama espacio-temporal. La cuña entre las tres curvas características que salen de la fuente es el dominio de influencia (domain of influence). Es el conjunto de eventos espacio-temporales a los que la fuente puede enviar una señal.
Si , esta cuña se abre hacia ambos lados de la línea vertical. La señal va tanto aguas arriba como aguas abajo. Si , la cuña entera se vuelca hacia la derecha. Incluso la característica se inclina hacia la derecha, y ningún evento aguas arriba queda dentro del dominio de influencia. Esta es la razón de que en el flujo supersónico "aguas arriba no sepa lo que ocurre aguas abajo". También es el fundamento numérico de por qué no se deben imponer condiciones de contorno en una salida supersónica.
Se puede arrastrar la sonda redonda en el diagrama de abajo.
Drag the probe across the plane. At M = 0.4 the wedge straddles the vertical, so events both upstream and downstream are reachable. Slide u₀ above 1 and the whole wedge leans right — drop the probe anywhere to the left of the source and it stays red.
Si la sonda se coloca dentro de la cuña se vuelve verde (alcanzable) y, si se coloca fuera, roja (inalcanzable). Al subir por encima de 1 y colocar la sonda en cualquier punto a la izquierda de la fuente, permanece roja. Aguas arriba queda completamente desconectado de la señal.
Verificación de las velocidades características con Python#
Comprobemos si las velocidades características son realmente y . Al escribir el Euler unidimensional con las variables primitivas se obtiene la forma cuasilineal , y los autovalores de la matriz de coeficientes son precisamente las velocidades características.
import numpy as np
def characteristic_speeds(rho, u, p, gamma=1.4):
"""Jacobiano de variables primitivas del Euler 1D A(W), W=(rho,u,p).
Autovalores de A = las tres velocidades características."""
c = np.sqrt(gamma * p / rho) # velocidad del sonido
A = np.array([[u, rho, 0.0 ],
[0.0, u, 1/rho],
[0.0, rho*c**2, u ]])
lam = np.sort(np.linalg.eigvals(A).real)
return c, lam
rho, u, p = 1.225, 220.0, 1.0e5 # aire, u = 220 m/s
c, lam = characteristic_speeds(rho, u, p)
print(f"c0 = {c:8.2f} m/s")
print(f"eig(A) = {np.round(lam, 2)}")
print(f"u-c,u,u+c = {np.round([u-c, u, u+c], 2)}")
print(f"Mach = {u/c:5.3f} -> {'supersonic' if u > c else 'subsonic'}")La salida es la siguiente.
c0 = 338.06 m/s
eig(A) = [-118.06 220. 558.06]
u-c,u,u+c = [-118.06 220. 558.06]
Mach = 0.651 -> subsonicLos autovalores coinciden exactamente con . Ahora avancemos realmente la perturbación en el tiempo y midamos la velocidad del frente de la señal. Los invariantes de Riemann acústicos son escalares que se dejan arrastrar respectivamente a , así que basta con transportarlos por separado con esquema upwind.
N, L = 400, 1.0
x = np.linspace(0, L, N, endpoint=False)
dx = L / N
rho0, c0 = 1.0, 1.0
u0 = 0.6 * c0 # Mach de fondo 0.6
bump = np.exp(-((x - 0.5) ** 2) / (2 * 0.01 ** 2))
wp = bump.copy() # invariante derecho (u0 + c0)
wm = bump.copy() # invariante izquierdo (u0 - c0)
def upwind_step(w, a, dt):
if a > 0:
dwdx = (w - np.roll(w, 1)) / dx
else:
dwdx = (np.roll(w, -1) - w) / dx
return w - a * dt * dwdx
CFL = 0.4
dt = CFL * dx / (abs(u0) + c0)
steps = int(0.25 / dt)
for _ in range(steps): # bucle de avance temporal
wp = upwind_step(wp, u0 + c0, dt)
wm = upwind_step(wm, u0 - c0, dt)
T = steps * dt
def front_speed(w):
return (x[np.argmax(w)] - 0.5) / T
print(f"u0+c0: target {u0 + c0:+.3f}, measured {front_speed(wp):+.3f}")
print(f"u0-c0: target {u0 - c0:+.3f}, measured {front_speed(wm):+.3f}")u0+c0: target +1.600, measured +1.600
u0-c0: target -0.400, measured -0.400Cada uno de los dos frentes se mueve a y . El invariante derecho va aguas abajo y el izquierdo aguas arriba. Al subir por encima de , el valor medido de la segunda línea también se vuelve positivo.
Lo que dejan las curvas características#
- La dinámica del flujo compresible es la propagación de señales que viajan a tres velocidades características . Dos son ondas sonoras y una es el transporte de materia.
- El instante en que la cuña del dominio de influencia cruza la línea vertical es . Por encima de ese punto no hay ninguna señal que vaya aguas arriba.
- Si en un contorno supersónico todas las características apuntan en una sola dirección, queda determinado también el número de condiciones de contorno que se pueden imponer. El hábito de contar el signo de las características evita errores en las condiciones de contorno.
Comparte si te resultó útil.