Traducción del original en coreano escrito por el autor. Leer el original (한국어)
Maxwell–Boltzmann en nueve flechas — por qué el equilibrio del LBM es un polinomio
El sesgo hacia el este del código queda en velocidad 0.0891, Mach cerca de 0.154. El polinomio de orden dos solo tiene que aguantar hasta una velocidad de malla próxima a 0.173.
El gas de red murió en 1986. La ocupación era cero o uno, y el ruido no se iba con el promedio. En 1992 esos enteros pasaron a una distribución real . El ruido desapareció. La pregunta se quedó. Cómo nueve números reales sustituyen a un Maxwell–Boltzmann de dimensión infinita.
Al mover la deriva y el orden de truncamiento , la curva sólida de Maxwell–Boltzmann se apoya en el polinomio discontinuo o se separa de él.
Con y , densidad, cantidad de movimiento y energía quedan superpuestas. Pasado , solo la curva discontinua se despega. El techo de Mach no es ese despegue. Los números se parten más adelante.
De enteros a reales — el LGCA murió en 1986 y nació el LBM#
El LGCA (Lattice Gas Cellular Automaton) era una malla cuadrada, seis direcciones, una regla de colisión. El promedio macroscópico volvía como Navier–Stokes. Las partículas booleanas (cero o uno) agrandaban el ruido estadístico. Alargar el promedio temporal mata el ruido y, con él, el transitorio que se quería ver.
McNamara y Zanetti colocaron una distribución real en cada nodo. es el recuento esperado de partículas en la posición y el instante que se mueven a lo largo de . Un paso se parte en dos. Colisión, luego streaming.
es el tiempo de relajación (relaxation time). es la distribución de equilibrio. La colisión recorta la parte de no equilibrio a escala , y el streaming desplaza esa distribución una celda. Nueve números alcanzan solo por la forma de .
Maxwell–Boltzmann carga una bomba de tiempo#
En la teoría cinética continua el equilibrio es Maxwell–Boltzmann.
es la velocidad molecular, la velocidad macroscópica, la dimensión, la temperatura, la constante de los gases. La bomba es que es continua. Dejar solo nueve o diecinueve direcciones exige adelgazar esta distribución.
Sustituir la integral gaussiana por una suma de rectángulos falla. Los momentos que pide Navier–Stokes — , , el tensor de cantidad de movimiento , la energía — no coinciden con la suma reticular. Rota la conservación y el LBM se detiene ahí.
El camino que queda es un desarrollo. Se expande Maxwell–Boltzmann en polinomios ortogonales y se conservan solo los momentos necesarios. Esos polinomios son los de Hermite.
Los polinomios de Hermite cortan la distribución a tajadas#
Los polinomios probabilísticos de Hermite (probabilist Hermite polynomial) son ortogonales bajo el peso gaussiano estándar .
Los primeros son , , , . Con el equilibrio unidimensional en isotermo, es decir , la función generatriz da lo siguiente.
es una gaussiana en reposo. es una deriva pequeña. corrige la energía cinética media. Los más altos son colas asimétricas. El LBM corta la suma en un orden finito.
En ese desarrollo isotermo , así que la velocidad térmica vale 1. La de la figura ya está dividida por esa velocidad. El techo escrito como 0.3 es en esta escala. queda 0.1 por encima del techo, y los tres primeros momentos con siguen coincidiendo. El despegue en ya pasó Mach 1. El 0.3 y el 1 no son el mismo fallo.
El término es , con . El coeficiente solo vale en . En vale , cerca de 2.37 veces el valor del techo. En vale , cerca de 37 veces 0.0045. Esa razón es . tira el término entero. Así, densidad, cantidad de movimiento y energía pueden coincidir en mientras el cúbico descartado ya supera el doble de su tamaño en el techo. El despegue en es donde ese coeficiente ha subido hasta cerca de 0.17. El techo de Mach en 0.3 no es el punto en que la curva se separa a simple vista. Es una línea trazada de antemano, en el instante en que el coeficiente cúbico pasa de 0.0045.
Qué compra el truncamiento de segundo orden#
Navier–Stokes viscoso de primer orden necesita tres capas. , y el flujo de cantidad de movimiento . Como es , la distribución tiene que cargar un término en .
La serie se corta en .
Esa es la forma continua del equilibrio. y más alimentan el flujo de calor. El LBM isotermo estándar no los conserva. Los términos descartados dejan a la vez la hipótesis isoterma y el techo de Mach 0.3. Al devolver el cúbico, la hipótesis isoterma se rompe primero. El flujo de calor es el trozo que carga ese término, así que un código detenido en segundo orden no puede tomar un problema donde la temperatura fluye y seguir con este polinomio. El techo de Mach y la hipótesis isoterma son dos caras de un mismo corte. Aunque la velocidad se mantenga bajo 0.173, una pared caliente y una pared fría en la misma malla no reciben transporte de calor de este equilibrio.
Cómo se construyó D2Q9#
Pasar la integral a la suma reticular pide una cuadratura. Igualar hasta orden significa integrar con exactitud los polinomios de ese orden.
En dos dimensiones, la exactitud hasta exige polinomios de quinto orden exactos bajo el peso gaussiano. El tensor de cantidad de movimiento produce un término . La cuadratura de Gauss–Hermite de tres puntos hace esa integral.
Los nodos unidimensionales son , con pesos . Por qué esas tres raíces caen ahí lo cuenta la cuadratura de Hermite que plegó un momento de sexto orden sobre nueve velocidades. El producto tensorial bidimensional es . Eso es D2Q9. En unidades de malla , y las velocidades caen en coordenadas enteras . Los pesos son los de Gauss–Hermite con el factor gaussiano absorbido.
| Índice | ||
|---|---|---|
| 0 | ||
| 1–4 | ||
| 5–8 |
El equilibrio sobre la malla es la forma continua con sustituido.
, , . El 3, el y el del polinomio son esos tres números. Con el corchete vale 1 y . Los pesos suman . Cuatro novenos de una masa en reposo quedan en la dirección 0. Los tres pesos de la tabla son productos del conjunto unidimensional . El reposo es . Una dirección de eje es . Una diagonal es . Cuatro ejes y cuatro diagonales cierran otra vez la suma, . El nueve y los tres denominadores salen del mismo producto tensorial.
Esa línea es el equilibrio de un código LBM isotermo. Un polinomio, con los tres primeros momentos de Maxwell–Boltzmann encerrados dentro.
Python — un paso de colisión BGK#
Un paso de colisión, un nodo.
import numpy as np
cx = np.array([0, 1, 0, -1, 0, 1, -1, -1, 1])
cy = np.array([0, 0, 1, 0, -1, 1, 1, -1, -1])
w = np.array([4/9, 1/9, 1/9, 1/9, 1/9, 1/36, 1/36, 1/36, 1/36])
def equilibrium(rho, ux, uy):
"""Equilibrio D2Q9 — nueve polinomios"""
ciu = cx * ux + cy * uy # producto escalar
usq = ux * ux + uy * uy
return w * rho * (1 + 3 * ciu + 4.5 * ciu**2 - 1.5 * usq)
def bgk_collision(f, tau):
rho = f.sum()
ux = (cx * f).sum() / rho
uy = (cy * f).sum() / rho
feq = equilibrium(rho, ux, uy)
return f - (f - feq) / tau, rho, ux, uy
# distribución inicial fuera de equilibrio
f = w * 1.0
f[1] += 0.05; f[3] -= 0.04 # ligero sesgo hacia el este
for step in range(20):
f, rho, ux, uy = bgk_collision(f, tau=0.8)
err = np.linalg.norm(f - equilibrium(rho, ux, uy))
print(f"step {step:2d}: rho={rho:.4f}, u=({ux:+.4f},{uy:+.4f}), ||delta||={err:.2e}")El estado inicial parte de , suma 0.05 a y resta 0.04 de . La masa es . La cantidad de movimiento en es . Así y . Al dividir por el Mach queda cerca de 0.154. La velocidad de malla del techo 0.3 es , y 0.0891 queda por debajo. El residuo que la corrida lleva bajo en unos veinte pasos es el acercamiento al equilibrio sobre el par conservado . Cada colisión conserva solo y .
Al bajar hacia 0.55 el residuo desaparece en uno o dos pasos. La viscosidad es . Con el del código, . Con , , un sexto del valor del código. Si llega a , la viscosidad se anula y la malla se vuelve inestable. Al subir , la viscosidad crece y el arrastre hacia el equilibrio se vuelve lento. Un paso multiplica la parte de no equilibrio por . Con el del código, , así que el factor es . El signo se invierte. Eso es sobrerrelajación. Veinte factores de dan . Una desviación de orden 1 ya queda muy por debajo de a los veinte pasos. Tomar veinte pasos como marca de es holgado con este factor solo. Con el factor es 0 y el estado cae en el equilibrio en un paso. El 0.8 del código está un puesto al lado de ese equilibrio de un solo paso.
Pasado Mach 0.3, este polinomio no se sostiene#
ajusta , y el flujo de cantidad de movimiento. Lo que está por encima se descartó. Cuando la velocidad de malla pasa de unos 0.173, los términos descartados dejan de ser pequeños. Bajar para que la viscosidad caiga de a no cambia el polinomio de equilibrio. Cruzar el techo con la velocidad y bajar solo la viscosidad son fallos distintos.
Si una viscosidad ajustada en un marco en reposo sobrevive a un desplazamiento de ese marco no tiene respuesta en esta expresión. El término cúbico descartado guarda esa respuesta. Si el tercer momento ausente cambia la viscosidad al mover el marco sigue fuera de este polinomio.
Relacionados
Comparte si te resultó útil.