Métodos de Boltzmann reticular

Los métodos de Boltzmann reticular, también llamado métodos de Boltzmann en red, y conocido por LBM por las siglas del título en inglés, originados a partir del método de los autómatas de gas en red (LGA) (modelos de Hardy-Pomeau-Pazzis y Uriel Frisch-Hasslacher-Pomeau), son una clase de métodos de dinámica de fluidos computacional (CFD) para la simulación de fluidos. En lugar de resolver directamente las ecuaciones de Navier-Stokes, se simula la densidad de un fluido en una red mediante procesos de flujo y colisión (relajación),[1]​ El método es versátil[1]​ ya que el fluido modelo puede imitar fácilmente el comportamiento habitual de los fluidos, como la coexistencia de vapor y líquido, lo que permite simular sistemas fluidos como las gotas de líquido. Además, se pueden simular fácilmente fluidos en entornos complejos, como medios porosos, mientras que con otros métodos CFD puede resultar difícil trabajar con límites complejos.

Algoritmo

Esquema de los vectores de red D2Q9 para Boltzmann en red 2D

A diferencia de los métodos CFD, que resuelven numéricamente las ecuaciones de conservación de las propiedades macroscópicas (es decir, masa, momento y energía), el LBM modela el fluido como partículas ficticias, y dichas partículas realizan procesos consecutivos de propagación y colisión sobre una red discreta. Debido a su naturaleza particulada y a su dinámica local, el LBM presenta varias ventajas con respecto a otros métodos CFD convencionales, especialmente en el tratamiento de límites complejos, la incorporación de interacciones microscópicas y la paralelización del algoritmo. [2]​ Una interpretación diferente de la ecuación de Boltzmann en red es la de una ecuación de Boltzmann de velocidad discreta. Los métodos numéricos de solución del sistema de ecuaciones diferenciales parciales dan lugar a un mapa discreto, que puede interpretarse como la propagación y colisión de partículas ficticias.

En un algoritmo, hay pasos de colisión y streaming. Estos hacen evolucionar la densidad del fluido , siendo la posición y el tiempo. Como el fluido se encuentra en una red, la densidad tiene varios componentes iguales al número de vectores de red conectados a cada punto de la red. A modo de ejemplo, se muestran aquí los vectores de red para una red simple utilizada en simulaciones en dos dimensiones. Esta red se suele denominar D2Q9, por sus dos dimensiones y nueve vectores: cuatro vectores a lo largo del norte, este, sur y oeste, más cuatro vectores a las esquinas de un cuadrado unitario, más un vector con ambos componentes iguales a cero. Entonces, por ejemplo, el vector , es decir, apunta hacia el sur y, por lo tanto, no tiene componente , pero tiene una componente de . Así, una de las nueve componentes de la densidad total en el punto central de la red, , es la parte del fluido en el punto que se mueve hacia el sur, a una velocidad en unidades de red de uno.

A continuación, los pasos que hacen evolucionar el fluido en el tiempo son:[1]

El paso de colisión
que es el Bhatnagar Gross y Krook (BGK),[3]​ modelo de relajación hasta el equilibrio mediante colisiones entre las moléculas de un fluido. es la densidad de equilibrio a lo largo de la dirección «i» en la densidad actual en ese punto, lo que puede expresarse mediante una aproximación de Taylor (véase más abajo, en Ecuaciones matemáticas para simulaciones):
El modelo asume que el fluido se relaja localmente hasta alcanzar el equilibrio en un intervalo de tiempo característico . Este intervalo de tiempo determina la viscosidad cinemática: cuanto mayor es el intervalo de tiempo, mayor es la viscosidad cinemática.
El paso de streaming

Como es, por definición, la densidad del fluido en el punto en el momento que se mueve a una velocidad de por periodo de tiempo, entonces en el siguiente periodo de tiempo habrá fluido hasta el punto .

Ventajas

  • El LBM se diseñó desde cero para funcionar de manera eficiente en arquitecturas masivamente paralelas, que van desde FPGA y DSP integrados y económicos hasta GPU y clústeres heterogéneos y superordenadores (incluso con una red de interconexión lenta). Permite realizar cálculos físicos complejos y algoritmos sofisticados. La eficiencia conduce a un nuevo nivel cualitativo de comprensión, ya que permite resolver problemas que antes no se podían abordar (o solo con una precisión insuficiente).
  • El método tiene su origen en una descripción molecular de un fluido y puede incorporar directamente términos físicos derivados del conocimiento de la interacción entre moléculas. Por lo tanto, es un instrumento indispensable en la investigación fundamental, ya que acorta el ciclo entre la elaboración de una teoría y la formulación de un modelo numérico correspondiente.
  • Preprocesamiento automatizado de datos y generación de redes en un tiempo que representa una pequeña fracción del total de la simulación.
  • Análisis, posprocesamiento y evaluación de datos en paralelo.
  • Flujo multifásico totalmente resuelto con pequeñas gotas y burbujas.
  • Flujo totalmente resuelto a través de geometrías complejas y medios porosos.
  • Flujo complejo y acoplado con transferencia de calor y reacciones químicas.

Limitaciones y desarrollo

Al igual que con el CFD basado en Navier-Stokes, los métodos LBM se han combinado con éxito con soluciones térmicas específicas para permitir la simulación de la transferencia de calor (conducción, convección y radiación basadas en sólidos). En los modelos multifásicos/multicomponentes, el espesor de la interfaz suele ser grande y la relación de densidad a través de la interfaz es pequeña en comparación con los fluidos reales. Recientemente, este problema ha sido resuelto por Yuan y Schaefer, quienes mejoraron los modelos de Shan y Chen, Swift, y He, Chen y Zhang. Consiguieron alcanzar relaciones de densidad de 1000:1 simplemente cambiando la ecuación de estado. Se ha propuesto aplicar la transformación galileana para superar la limitación de la modelización de flujos de fluidos a alta velocidad. [4]​ Los rápidos avances de este método también han permitido simular con éxito la microfluídica,[5]​ Sin embargo, por ahora, el LBM sigue teniendo limitaciones a la hora de simular flujos con un número de Knudsen elevado, en los que se utilizan en su lugar los métodos de Montecarlo, y los flujos con un número de Mach elevado en aerodinámica siguen siendo difíciles para el LBM, además de que no existe un esquema termohidrodinámico coherente.[6]

Desarrollo a partir del método LGA

El LBM se originó a partir del método autómata de gas en celosía (LGA por las siglas en inglés), que puede considerarse un modelo simplificado de dinámica molecular ficticia en el que el espacio, el tiempo y las velocidades de las partículas son discretos. Por ejemplo, en el Modelo FHP bidimensional, cada nodo de la red está conectado a sus vecinos por seis velocidades reticulares en una red triangular; puede haber 0 o 1 partículas en un nodo de la red moviéndose con una velocidad reticular determinada. Tras un intervalo de tiempo, cada partícula se moverá hacia el nodo vecino en su dirección; este proceso se denomina paso de propagación o streaming. Cuando más de una partícula llega al mismo nodo desde diferentes direcciones, chocan y cambian sus velocidades según un conjunto de reglas de colisión. Los pasos de flujo y los pasos de colisión se alternan. Las reglas de colisión adecuadas deben conservar el número de partículas (masa), el momento y la energía antes y después de la colisión. El LGA adolece de varios defectos innatos para su uso en simulaciones hidrodinámicas: falta de invarianza galileana para flujos rápidos, ruido estadístico y mala escala del número de Reynolds con el tamaño de la red. Sin embargo, el LGA es muy adecuado para simplificar y ampliar el alcance de los modelos de difusión de reacciones y dinámica molecular.

La principal motivación para la transición de LGA a LBM fue el deseo de eliminar el ruido estadístico sustituyendo el número booleano de partículas en una dirección de la red por su media ensamblada, la denominada función de distribución de densidad. Junto con esta sustitución, la regla de colisión discreta también se sustituye por una función continua conocida como operador de colisión. En el desarrollo de LBM, una simplificación importante es aproximar el operador de colisión con el término de relajación Bhatnagar-Gross-Krook (BGK). Este modelo BGK en red (LBGK) hace que las simulaciones sean más eficientes y permite flexibilidad en los coeficientes de transporte. Por otro lado, se ha demostrado que el esquema LBM también puede considerarse una forma discretizada especial de la ecuación continua de Boltzmann. A partir de la teoría de Chapman-Enskog, se pueden recuperar las ecuaciones de continuidad y Navier-Stokes que rigen el algoritmo LBM.

Las redes y la clasificación DnQm

Los modelos de Boltzmann en red pueden funcionar en diferentes redes, tanto cúbicas como triangulares, y con o sin partículas de reposo en la función de distribución discreta.

Una forma popular de clasificar los diferentes métodos según la red es el esquema DnQm. Aquí, «Dn» significa «n dimensiones», mientras que «Qm» significa «m velocidades». Por ejemplo, D3Q15 es un modelo de Boltzmann en red tridimensional sobre una cuadrícula cúbica, con partículas en reposo presentes. Cada nodo tiene forma de cristal y puede entregar partículas a 15 nodos: cada uno de los 6 nodos vecinos que comparten una superficie, los 8 nodos vecinos que comparten una esquina y él mismo.[7]​ (El modelo D3Q15 no contiene partículas que se mueven a los 12 nodos vecinos que comparten un borde; si se añadieran, se crearía un modelo «D3Q27»).

Las cantidades reales, como el espacio y el tiempo, deben convertirse a unidades de red antes de la simulación. Las cantidades adimensionales, como el número de Reynolds, permanecen iguales.

Conversión de unidades de celosía

En la mayoría de las simulaciones de Boltzmann en celosía, es la unidad básica para el espaciado de la celosía, por lo que si el dominio de longitud tiene unidades de celosía a lo largo de toda su longitud, la unidad de espacio se define simplemente como . Las velocidades en las simulaciones de Boltzmann en red se suelen expresar en términos de la velocidad del sonido. Por lo tanto, la unidad de tiempo discreta se puede expresar como , donde el denominador es la velocidad física del sonido.[8]

Para flujos a pequeña escala (como los que se ven en la mecánica de medios porosos), operar con la velocidad real del sonido puede dar lugar a pasos de tiempo inaceptablemente cortos. Por lo tanto, es habitual elevar el número de Mach de la red a un valor mucho mayor que el número de Mach real y compensarlo aumentando también la viscosidad para preservar el número de Reynolds.[9]

Simulación de mezclas

La simulación de flujos multifásicos/multicomponentes siempre ha sido un reto para la CFD convencional debido a las interfaces móviles y deformables. Más fundamentalmente, las interfaces entre diferentes fases (líquido y vapor) o componentes (por ejemplo, aceite y agua) se originan a partir de las interacciones específicas entre las moléculas de los fluidos. Por lo tanto, es difícil implementar estas interacciones microscópicas en la ecuación macroscópica de Navier-Stokes. Sin embargo, en el LBM, la cinética de partículas proporciona una forma relativamente fácil y consistente de incorporar las interacciones microscópicas subyacentes mediante la modificación del operador de colisión. Se han desarrollado varios modelos LBM multifásicos/multicomponentes. Aquí, las separaciones de fases se generan automáticamente a partir de la dinámica de las partículas y no se necesita ningún tratamiento especial para manipular las interfaces, como en los métodos CFD tradicionales. Se pueden encontrar aplicaciones exitosas de los modelos LBM multifásicos/multicomponentes en diversos sistemas fluidos complejos, incluyendo la inestabilidad de interfaces, la dinámica de burbujas/gotas, la humectación en superficies sólidas, el deslizamiento interfacial y las deformaciones electrohidrodinámicas de gotas.

Recientemente se ha propuesto un modelo de Boltzmann en red para la simulación de la combustión de mezclas de gases capaz de adaptarse a variaciones significativas de densidad en regímenes de bajo número de Mach. [10]

A este respecto, cabe señalar que, dado que el LBM se ocupa de un conjunto más amplio de campos (en comparación con el CFD convencional), la simulación de mezclas de gases reactivos presenta algunos retos adicionales en términos de demanda de memoria en lo que se refiere a mecanismos de combustión grandes y detallados. No obstante, estas cuestiones pueden abordarse recurriendo a técnicas sistemáticas de reducción de modelos.[11][12][13]

Método térmico de Boltzmann en red

Actualmente (2009), el método térmico de Boltzmann en red (TLBM) se divide en tres categorías: el enfoque multivelocidad,[14]​ el enfoque escalar pasivo,[15]​ y la distribución de la energía térmica.[16]

Derivación de la ecuación de Navier-Stokes a partir de la LBE discreta

Partiendo de la ecuación discreta de Boltzmann en red (también denominada ecuación LBGK debido al operador de colisión utilizado). Primero hacemos una expansión en serie de Taylor de segundo orden sobre el lado izquierdo de la LBE. Se elige esta expansión en lugar de una expansión de Taylor de primer orden más simple, ya que no se puede recuperar la LBE discreta. Al hacer la expansión en serie de Taylor de segundo orden, el término derivado cero y el primer término de la derecha se cancelan, dejando solo los términos de la primera y segunda derivada de la expansión de Taylor y el operador de colisión:

Para simplificar, escriba como . La expansión en serie de Taylor ligeramente simplificada es entonces la siguiente, donde ":" es el producto colono entre díadas:

Al expandir la función de distribución de partículas en componentes de equilibrio y de no equilibrio y utilizando la expansión de Chapman-Enskog, donde es el número de Knudsen, la LBE expandida de Taylor se puede descomponer en diferentes magnitudes de orden para el número de Knudsen con el fin de obtener las ecuaciones continuas adecuadas:

Las distribuciones en equilibrio y en desequilibrio satisfacen las siguientes relaciones con sus variables macroscópicas (estas se utilizarán más adelante, una vez que las distribuciones de partículas estén en la «forma correcta» para poder escalar desde el nivel de partículas al macroscópico):

La expansión de Chapman-Enskog es entonces:

Sustituyendo el equilibrio ampliado y el desequilibrio en la expansión de Taylor y separando en diferentes órdenes de , se obtienen casi las ecuaciones continuas.

Para el orden :

For order :

A continuación, la segunda ecuación se puede simplificar con un poco de álgebra y la primera ecuación queda así:

Aplicando las relaciones entre las funciones de distribución de partículas y las propiedades macroscópicas anteriores, se obtienen las ecuaciones de masa y momento:

El tensor de flujo de impulso tiene entonces la siguiente forma:

donde es una abreviatura para el cuadrado de la suma de todos los componentes de (es decir, ), y la distribución de partículas en equilibrio con segundo orden comparable a la ecuación de Navier-Stokes es:

La distribución de equilibrio solo es válida para velocidades pequeñas o números de Mach pequeños. Al insertar la distribución de equilibrio de nuevo en el tensor de flujo, se obtiene:

Finalmente, se recuperan las Ecuaciones de Navier-Stokes bajo el supuesto de que la variación de densidad es pequeña:

Esta derivación sigue el trabajo de Chen y Doolen.[17]

Ecuaciones matemáticas para simulaciones

La ecuación continua de Boltzmann es una ecuación de evolución para una función de distribución de probabilidad de una sola partícula y la función de distribución de densidad de energía interna (He et al.) son, respectivamente:

donde está relacionado con mediante

es una fuerza externa, es una integral de colisión y (también etiquetada como en la literatura) es la velocidad microscópica. La fuerza externa está relacionada con la fuerza externa de temperatura mediante la relación siguiente. Una prueba típica para un modelo es la convección de Rayleigh-Bénard para .

Las variables macroscópicas, como la densidad , la velocidad y la temperatura , pueden calcularse como los momentos de la función de distribución de la densidad:

El método de Boltzmann en red discretiza esta ecuación limitando el espacio a una red y el espacio de velocidad a un conjunto discreto de velocidades microscópicas (es decir, ). Las velocidades microscópicas en D2Q9, D3Q15 y D3Q19, por ejemplo, se dan como:

La ecuación de Boltzmann discretizada en una sola fase para la densidad de masa y la densidad de energía interna son:

El operador de colisión se aproxima a menudo mediante un operador de colisión BGK, siempre que también satisfaga las leyes de conservación:

En el operador de colisión, es la función de distribución de probabilidad de partículas en equilibrio discreta, equilibrium particle probability distribution function. En D2Q9 y D3Q19, se muestra a continuación para un flujo incompresible en forma continua y discreta, donde «D», «R» y «T» son la dimensión, la constante universal de los gases y la temperatura absoluta, respectivamente. La derivación parcial de la forma continua a la discreta se proporciona mediante una derivación simple con precisión de segundo orden.

Al sustituir , se obtiene el resultado final:

Dado que ya se ha trabajado mucho en el flujo de un solo componente, se analizará el TLBM siguiente. El TLBM multicomponente/multifásico también es más interesante y útil que el de un solo componente. Para estar en consonancia con la investigación actual, definamos el conjunto de todos los componentes del sistema (es decir, paredes de medios porosos, múltiples fluidos/gases, etc.) con elementos .

El parámetro de relajación,, está relacionado con la viscosidad cinemática,, mediante la siguiente relación:

Los momentos de dan las cantidades conservadas locales. La densidad viene dada por

y la velocidad media ponderada, , y el momento local vienen dados por

En la ecuación anterior para la velocidad de equilibrio , el término es la fuerza de interacción entre un componente y los demás componentes. Sigue siendo objeto de mucho debate, ya que suele ser un parámetro de ajuste que determina cómo interactúan los fluidos entre sí, los fluidos con los gases, etc. Frank et al. enumeran los modelos actuales para este término de fuerza. Las derivaciones más utilizadas son el modelo cromodinámico de Gunstensen, el enfoque basado en la energía libre de Swift para sistemas líquido/vapor y fluidos binarios, el modelo basado en la interacción intermolecular de He, el enfoque de Inamuro y el enfoque de Lee y Lin.[18]

La siguiente es la descripción general de dada por varios autores.[19][20]

es la masa efectiva y es la función de Green que representa la interacción entre partículas con como sitio vecino. Satisfaciendo y donde representa fuerzas repulsivas. Para D2Q9 y D3Q19, esto conduce a

La masa efectiva propuesta por Shan y Chen utiliza la siguiente masa efectiva para un «sistema monocomponente y multifásico». La ecuación de estado también se da en condiciones de un solo componente y multifásico.

Hasta ahora, parece que y son constantes libres que se pueden ajustar, pero una vez introducidas en la ecuación de estado (EOS) del sistema, deben satisfacer las relaciones termodinámicas en el punto crítico, de modo que y . Para la EOS, es 3,0 para D2Q9 y D3Q19, mientras que es igual a 10,0 para D3Q15.[21]

Más tarde, Yuan y Schaefer demostraron[22]​ que la densidad de masa efectiva debe modificarse para simular con mayor precisión el flujo multifásico. Compararon las EOS de Shan y Chen (SC), Carnahan-Starling (C–S), van der Waals (vdW), Redlich–Kwong (R–K), Redlich–Kwong Soave (RKS) y Peng–Robinson (P–R). Sus resultados revelaron que la EOS SC era insuficiente y que las EOS C–S, P–R, R–K y RKS son todas más precisas para modelar el flujo multifásico de un solo componente.

Para los populares métodos isotérmicos de Lattice Boltzmann, estas son las únicas cantidades conservadas. Los modelos térmicos también conservan la energía y, por lo tanto, tienen una cantidad conservada adicional:

Mallas no estructuradas

Normalmente, los métodos de Boltzmann en red se implementan en mallas regulares. Sin embargo, el uso de mallas no estructuradas puede ayudar a resolver límites complejos. Las mallas no estructuradas están formadas por triángulos o tetraedros con variaciones.

Suponiendo que es un volumen formado por todos los baricentros de los tetraedros, caras y aristas conectados al vértice , la función de densidad de velocidad discreta:

donde son la posición de un vértice y sus vecinos, y:

donde son los pesos de una interpolación lineal de por los vértices del triángulo o tetraedro en el que se encuentra .[23]

Aplicaciones

Durante los últimos años, el LBM ha demostrado ser una herramienta poderosa para resolver problemas a diferentes escalas de longitud y tiempo. Algunas de las aplicaciones del LBM incluyen:

  • Flujos en medios porosos [24]
  • Flujos biomédicos
  • Ciencias de la Tierra (filtración del suelo).
  • Ciencias energéticas (pilas de combustible[25]​).

Ejemplo de implementación

Esta es una implementación básica de LBM en una cuadrícula de 100x100, utilizando Python:

#Este es un simulador de fluidos que utiliza el método de Boltzmann en red.
#Se utilizó D2Q9 y límites periódicos, sin utilizar ninguna biblioteca externa.
#Genera dos ondas a 50,50 y 50,40.
#Reference: Erlend Magnus Viggen's Master thesis, "The Lattice Boltzmann Method with Applications in Acoustics".
#For Wikipedia under CC-BY-SA license.
import math
#Define some utilities
def sum(a):
    s=0
    for e in a:
        s=s+e
    return s
#Weights in D2Q9
Weights=[1/36,1/9,1/36,
   1/9, 4/9,1/9,
   1/36,1/9,1/36]
#Discrete velocity vectors
DiscreteVelocityVectors=[[-1,1],[0,1],[1,1],
     [-1,0],[0,0],[1,0],
     [-1,-1],[0,-1],[1,-1]
]
#A Field2D class
class Field2D():
    def __init__(self,res : int):
        self.field=[]
        for b in range(res):
            fm=[]
            for a in range(res):
                fm.append([0,0,0,
                           0,1,0,
                           0,0,0])
            self.field.append(fm[:])
        self.res = res
    #This visualize the simulation, can only be used in a terminal
    @staticmethod
    def VisualizeField(a,sc,res):
        stringr=""
        for u in range(res):
            row=""
            for v in range(res):
                n=int(u*a.res/res)
                x=int(v*a.res/res)
                flowmomentem=a.Momentum(n,x)
                col="\033[38;2;{0};{1};{2}m██".format(int(127+sc*flowmomentem[0]),int(127+sc*flowmomentem[1]),0)
                row=row+col
            print(row)
            stringr=stringr+row+"\n"
        return stringr
    #Momentum of the field
    def Momentum(self,x,y):
        return velocityField[y][x][0]*sum(self.field[y][x]),velocityField[y][x][1]*sum(self.field[y][x])
#Resolution of the simulation
res=100
a=Field2D(res)
#The velocity field
velocityField=[]
for DummyVariable in range(res):
    DummyList=[]
    for DummyVariable2 in range(res):
        DummyList.append([0,0])
    velocityField.append(DummyList[:])
#The density field
DensityField=[]
for DummyVariable in range(res):
    DummyList=[]
    for DummyVariable2 in range(res):
        DummyList.append(1)
    DensityField.append(DummyList[:])
#Set initial condition
DensityField[50][50]=2
DensityField[40][50]=2
#Maximum solving steps
MaxSteps = 120
#The speed of sound, specifically 1/sqrt(3) ~ 0.57
SpeedOfSound=1/math.sqrt(3)
#time relaxation constant
TimeRelaxationConstant=0.5
#Solve
for s in range(MaxSteps):
    #Collision Step
    df=Field2D(res)
    for y in range(res):
        for x in range(res):
            for v in range(9):
                Velocity=a.field[y][x][v]
                FirstTerm=Velocity
                #The Flow Velocity
                FlowVelocity=velocityField[y][x]
                Dotted=FlowVelocity[0]*DiscreteVelocityVectors[v][0]+FlowVelocity[1]*DiscreteVelocityVectors[v][1]
                # #The taylor expainsion of equilibrium term
                taylor=1+((Dotted)/(SpeedOfSound**2))+((Dotted**2)/(2*SpeedOfSound**4))-((FlowVelocity[0]**2+FlowVelocity[1]**2)/(2*SpeedOfSound**2))
                #The current density
                density=DensityField[y][x]
                #The equilibrium
                equilibrium=density*taylor*Weights[v]
                SecondTerm=(equilibrium-Velocity)/TimeRelaxationConstant
                df.field[y][x][v]=FirstTerm+SecondTerm
    #Streaming Step
    for y in range(0,res):
        for x in range(0,res):
            for v in range(9):
                #Target, the lattice point this iteration is solving
                TargetY=y+DiscreteVelocityVectors[v][1]
                TargetX=x+DiscreteVelocityVectors[v][0]
                # Peiodic Boundary
                if TargetY == res and TargetX == res:
                    a.field[TargetY-res][TargetX-res][v]=df.field[y][x][v]
                elif TargetX == res:
                    a.field[TargetY][TargetX-res][v]=df.field[y][x][v]
                elif TargetY == res:
                    a.field[TargetY-res][TargetX][v]=df.field[y][x][v]
                elif TargetY == -1 and TargetX == -1:
                    a.field[TargetY+res][TargetX+res][v]=df.field[y][x][v]   
                elif TargetX == -1:
                    a.field[TargetY][TargetX+res][v]=df.field[y][x][v]
                elif TargetY == -1:
                    a.field[TargetY+res][TargetX][v]=df.field[y][x][v]
                else:
                    a.field[TargetY][TargetX][v]=df.field[y][x][v]
    #Calculate macroscopic variables
    for y in range(res):
        for x in range(res):
            #Recompute Density Field
            DensityField[y][x]=sum(a.field[y][x])
            #Recompute Flow Velocity
            FlowVelocity=[0,0]
            for DummyVariable in range(9):
                FlowVelocity[0]=FlowVelocity[0]+DiscreteVelocityVectors[DummyVariable][0]*a.field[y][x][DummyVariable]
            for DummyVariable in range(9):
                FlowVelocity[1]=FlowVelocity[1]+DiscreteVelocityVectors[DummyVariable][1]*a.field[y][x][DummyVariable]
            FlowVelocity[0]=FlowVelocity[0]/DensityField[y][x]
            FlowVelocity[1]=FlowVelocity[1]/DensityField[y][x]
            #Insert to Velocity Field
            velocityField[y][x]=FlowVelocity
    #Visualize
    Field2D.VisualizeField(a,128,100)

Referencias

  1. a b c Chen, Shiyi; Doolen, Gary D. (1998). «Lattice Boltzmann Method for Fluid Flows». Annual Review of Fluid Mechanics (en inglés) 30 (1): 329-364. Bibcode:1998AnRFM..30..329C. ISSN 0066-4189. doi:10.1146/annurev.fluid.30.1.329. 
  2. Axner, L.; Bernsdorf, J.; Zeiser, T.; Lammers, P.; Linxweiler, J.; Hoekstra, A. G. (1 de mayo de 2008). «Evaluación del rendimiento de un solucionador paralelo de Boltzmann en red dispersa». Journal of Computational Physics 227 (10): 4895-4911. Bibcode:2008JCoPh.227.4895A. ISSN 0021-9991. doi:10.1016/j.jcp.2008.01.013. 
  3. Bhatnagar, P. L.; Gross, E. P.; Krook, M. (1 de mayo de 1954). «A Model for Collision Processes in Gases. I. Small Amplitude Processes in Charged and Neutral One-Component Systems». Physical Review (en inglés) 94 (3): 511-525. Bibcode:1954PhRv...94..511B. ISSN 0031-899X. doi:10.1103/PhysRev.94.511. 
  4. Amir H. Hedjripour, David P. Callaghan y Tom E. Baldock, «Generalized transformation of the lattice Boltzmann method for shallow water flows», https://doi.org/10.1080/00221686.2016.1168881
  5. Zhang, Junfeng (1 de enero de 2011). «Lattice Boltzmann method for microfluidics: models and applications». Microfluidics and Nanofluidics (en inglés) 10 (1): 1-28. ISSN 1613-4990. doi:10.1007/s10404-010-0624-1. 
  6. Tu, Jiyuan; Yeoh, Guan Heng; Liu, Chaoqun (2018). Computational fluid dynamics: un enfoque práctico (Tercera edición). Oxford; Cambridge, MA: Butterworth-Heinemann. ISBN 978-0-08-101127-0. OCLC on1022830545. 
  7. Succi, p. 68
  8. Succi, Apéndice D (p. 261-262)
  9. Succi, capítulo 8.3, p. 117-119
  10. Di Rienzo, A. Fabio; Asinari, Pietro; Chiavazzo, Eliodoro; Prasianakis, Nikolaos; Mantzaras, John (2012). «Lattice Boltzmann model for reactive flow simulations». EPL 98 (3): 34001. Bibcode:2012EL.....9834001D. S2CID 121908046. doi:10.1209/0295-5075/98/34001. 
  11. Chiavazzo, Eliodoro; Karlin, Ilya; Gorban, Alexander; Boulouchos, Konstantinos (2010). «Coupling of the model reduction technique with the Lattice Boltzmann method for combustion simulations». Combust. Flame 157 (10): 1833-1849. Bibcode:2010CoFl..157.1833C. doi:10.1016/j.combustflame.2010.06.009. 
  12. Chiavazzo, Eliodoro; Karlin, Ilya; Gorban, Alexander; Boulouchos, Konstantinos (2012). «Simulaciones eficientes de campos de combustión detallados mediante el método de Lattice Boltzmann». International Journal of Numerical Methods for Heat & Fluid Flow 21 (5): 494-517. S2CID 122060895. doi:10.1108/09615531111135792. 
  13. Chiavazzo, Eliodoro; Karlin, Ilya; Gorban, Alexander; Boulouchos, Konstantinos (2009). «Combustion simulation via Lattice Boltzmann and reduced chemical kinetics». Journal of Statistical Mechanics: Theory and Experiment 2009 (6): P06013. Bibcode:2009JSMTE..06..013C. S2CID 6459762. doi:10.1088/1742-5468/2009/06/P06013. 
  14. McNamara, G., García, A. y Alder, B., «A hydrodynamically correct thermal lattice boltzmann model», Journal of Statistical Physics, vol. 87, n.º 5, pp. 1111-1121, 1997.
  15. Shan, Xiaowen (1997). «Simulation of Rayleigh-Bénard convection using a lattice Boltzmann method». Physical Review E 55 (3): 2780-2788. Bibcode:1997PhRvE..55.2780S. arXiv:comp-gas/9612001. doi:10.1103/PhysRevE.55.2780. 
  16. He, Xiaoyi; Chen, Shiyi; Doolen, Gary D. (10 de octubre de 1998). «A Novel Thermal Model for the Lattice Boltzmann Method in Incompressible Limit». Journal of Computational Physics 146 (1): 282-300. Bibcode:1998JCoPh.146..282H. doi:10.1006/jcph.1998.6057. 
  17. Chen, S., y Doolen, G. D., «Método de Boltzmann en red para flujos de fluidos (enlace roto disponible en este archivo).", Annual Review of Fluid Mechanics, vol. 30, p. 329–364, 1998.
  18. Frank, X., Almeida, G., Perre, P., «Flujo multifásico en el sistema vascular de la madera: de la exploración microscópica a los experimentos tridimensionales de Boltzmann en red», International Journal of Multiphase Flow, vol. 36, pp. 599-607, 2010.
  19. Yuan, P., Schaefer, L., «Equations of State in a Lattice Boltzmann model», Physics of Fluids, vol. 18, 2006.
  20. Harting, Jens; Chin, Jonathan; Venturoli, Maddalena; Coveney, Peter V. (2005). «Simulaciones a gran escala de Boltzmann en red de fluidos complejos: Avances gracias a la llegada de las redes computacionales». Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences 363 (1833): 1895-1915. Bibcode:2005RSPTA.363.1895H. arXiv:cs/0501021. doi:10.1098/rsta.2005.1618. 
  21. Yuan, P., Schaefer, L., «A Thermal Lattice Boltzmann Two-Phase Flow Model and its Application to Heat Transfer Problems-Part 1. Theoretical Foundation», Journal of Fluid Engineering 142-150, vol. 128, 2006.
  22. Yuan, P.; Schaefer, L. (2006). «Equaciones de estado en un modelo de Boltzmann en red». Physics of Fluids 18 (4): 042101-042101-11. Bibcode:2006PhFl...18d2101Y. doi:10.1063/1.2187070. 
  23. Misztal, Marek Krzysztof; Hernandez-Garcia, Anier; Matin, Rastin; Sørensen, Henning Osholm; Mathiesen, Joachim (2014-09-09). «Detailed analysis of the lattice Boltzmann method on unstructured grids». . 
  24. Fu, Jinlong; Dong, Jiabin; Wang, Yongliang; Ju, Yang; Owen, D. Roger J.; Li, Chenfeng (April 2020). «Resolution Effect: An Error Correction Model for Intrinsic Permeability of Porous Media Estimated from Lattice Boltzmann Method». Transport in Porous Media 132 (3): 627-656. Bibcode:2020TPMed.132..627F. S2CID 214648297. doi:10.1007/s11242-020-01406-z. 
  25. Espinoza, Mayken (2015). «Compress effects on porosity, gas-phase tortuosity, and gas permeability in a simulated PEM gas diffusion layer». International Journal of Energy Research 39 (11): 1528-1536. S2CID 93173199. doi:10.1002/er.3348. 

Bibliografía

  • Deutsch, Andreas; Sabine Dormann (2004). Cellular Automaton Modeling of Biological Pattern Formation. Birkhäuser Verlag. ISBN 978-0-8176-4281-5. 
  • Succi, Sauro (2001). The Lattice Boltzmann Equation for Fluid Dynamics and Beyond. Oxford University Press. ISBN 978-0-19-850398-9. 
  • Wolf-Gladrow, Dieter (2000). Lattice-Gas Cellular Automata and Lattice Boltzmann Models. Springer Verlag. ISBN 978-3-540-66973-9. 
  • Sukop, Michael C.; Daniel T. Thorne, Jr. (2007). Lattice Boltzmann Modeling: An Introduction for Geoscientists and Engineers. Springer. ISBN 978-3-540-27981-5. 
  • Jian Guo Zhou (2004). Lattice Boltzmann Methods for Shallow Water Flows. Springer. ISBN 978-3-540-40746-1. 
  • He, X., Chen, S., Doolen, G. (1998). A Novel Thermal Model for the Lattice Boltzmann Method in Incompressible Limit. Academic Press. 
  • Guo, Z. L.; Shu, C (2013). Lattice Boltzmann Method and Its Applications in Engineering. World Scientific Publishing. 
  • Huang, H.; M.C. Sukop; X-Y. Lu (2015). Multiphase Lattice Boltzmann Methods: Theory and Application. Wiley-Blackwell. ISBN 978-1-118-97133-8. 
  • Krüger, T.; Kusumaatmaja, H.; Kuzmin, A.; Shardt, O.; Silva, G.; Viggen, E. M. (2017). The Lattice Boltzmann Method: Principles and Practice. Springer Verlag. ISBN 978-3-319-44647-9. 

Enlaces externos