# Metodi reticolari di Boltzmann

In fluidodinamica computazionale, i metodi reticolari di Boltzmann, spesso abbreviati con la sigla LBM, dal termine inglese Lattice Boltzmann methods, sono un insieme di tecniche (di CFD) usate per la simulazione dei fluidi. Invece di risolvere le equazioni di Navier-Stokes, l'equazione di Boltzmann viene risolta per simulare il flusso di un fluido newtoniano mediante modelli di collisione, come ad esempio il metodo Bhatnagar-Gross-Krook (BGK). Simulando l'interazione di un limitato numero di particelle, il comportamento del flusso viscoso emerge automaticamente dal movimento intrinseco delle particelle stesse e dai processi di collisione che ne conseguono.

## Algoritmo

L'LBM è una tecnica di simulazione relativamente nuova per sistemi fluidodinamici complessi ed ha attirato l'interesse dei ricercatori che utilizzano la fisica computazionale. Al contrario dei tradizionali metodi, che risolvono numericamente le equazioni di conservazione di proprietà macroscopiche (come la massa, la quantità di moto e l'energia), nei modelli reticolari di Boltzmann il fluido è costituito da particelle fittizie, e queste particelle operano consecutivamente processi di propagazione e collisione, spostandosi su una griglia reticolare discreta. A causa di questa natura particellare e dei processi dinamici locali, gli LBM hanno diversi vantaggi in più rispetto ai convenzionali metodi CFD, specialmente se si trattano complesse condizioni al contorno, se si aggiungono interazioni microscopiche e se si parallelizza l'algoritmo su GPU. Una diversa interpretazione dell'equazione di Boltzmann è l'equazione di Boltzmann con velocità discreta. I metodi numerici per la soluzione del sistema di equazioni differenziali parziali genera in questo caso una mappa discreta, che può essere interpretata come le propagazioni e le collisioni delle particelle fittizie.

## Evoluzione dai metodi LGA

Gli LBM sono una derivazione del metodo lattice gas automata (LGA), che può essere considerato un modello semplificato di dinamiche molecolari fittizie nel quale spazio, tempo, e velocità delle particelle sono tutti valori discreti. Ogni nodo del reticolo è collegato ai suoi vicini tramite 6 velocità reticolari, tramite ad esempio il modello esagonale FHP. Ci possono essere 0 o 1 particella per nodo che si spostano seguendo una direzione reticolare. Dopo un intervallo di tempo, ogni particella si sposterà sul nodo vicino, a seconda della propria direzione: questo processo viene chiamato passo di propagazione o di streaming. Quando sullo stesso nodo arriva più di una particella da direzioni diverse, queste collidono e cambiano le loro direzioni in base ad un insieme di regole di collisione. Regole di collisione appropriate dovrebbero conservare il numero di particelle (cioè la massa), la quantità di moto e l'energia prima e dopo la collisione. Tuttavia, si è constatato che i LGA soffrono di diversi difetti intrinseci: perdita di relatività galileiana, rumore statistico, complessità esponenziale per reticoli tridimensionali, eccetera.
Il motivo principale della transizione dagli LGA ai LBM è stato il desiderio di rimuovere il rumore statistico sostituendo il numero booleano delle particelle in una direzione del reticolo con la sua media totale, la cosiddetta funzione di distribuzione di densità. Oltre a questa sostituzione, la regola di collisione discreta viene sostituita da una funzione continua conosciuta come operatore di collisione. Nell'evoluzione dei LBM, un'importante semplificazione è stata quella di approssimare l'operatore di collisione con il termine di rilassamento di Bhatnagar-Gross-Krook (BGK). Questo modello di BGK reticolare (lattice BGK, LBGK) rende le simulazioni più efficienti e permette la flessibilità dei coefficienti di trasporto. D'altra parte, è stato dimostrato che lo schema LBM può essere anche considerato come una speciale forma discretizzata dell'equazione continua di Boltzmann. Attraverso l'approssimazione di Chapman-Enskog, dall'algoritmo LBM si possono ricavare la continuità dirigente e le equazioni di Navier-Stokes. Inoltre, anche il valore della pressione è direttamente derivabile dalle distribuzioni di densità e quindi non si presentano ulteriori equazioni di Poisson da risolvere, come nei tradizionali metodi CFD.

## Tipi di reticoli e classificazione DnQm

I modelli lattice Boltzmann possono operare su diversi tipi di reticoli, sia cubici che triangolari, con o senza particelle rimanenti nella funzione di distribuzione discreta.
Un modo tipico per classificare i differenti metodi che utilizzano un reticolo è lo schema DnQm. "Dn" significa "n dimensioni" mentre "Qm" significa "m velocità". Ad esempio, D3Q15 è un modello lattice Boltzmann tridimensionale su una griglia cubica, con particelle rimanenti. Ogni nodo ha la forma di un cristallo, e può inviare particelle ad ognuno dei sei nodi vicini che ne condividono la superficie, agli otto nodi vicini che ne condividono gli spigoli, e a se stesso. (Il modello D3Q15 non considera particelle che si spostano verso i dodicesimi nodi vicini che condividono un lato; aggiungendo anche questi si otterrebbe un modello "D3Q27".)
Quantità reali come lo spazio ed il tempo devono essere convertite in unità reticolari prima della simulazione. Quantità adimensionali come il numero di Reynolds rimangono invece uguali.

## Unità di conversione reticolari

Nella maggior parte delle simulazioni lattice Boltzmann $\Delta x$ è l'unità base per la spaziatura del reticolo; in questo modo se il dominio rappresentato da $L$ cm ha $N$ unità reticolari per tutta la sua lunghezza, allora l'unità di spazio viene semplicemente definita come $\Delta x=L/N$. Tipicamente nelle simulazioni lattice Boltzmann le velocità sono date in termini di velocità del suono. L'unità di tempo discreta può perciò essere definita come $\Delta t={\frac {\Delta x}{C_{s}}}$, dove il denominatore $C_{s}$ rappresenta appunto la velocità del suono.
Per flussi su piccola scala (come quelli presenti nei materiali porosi), lavorare con reali velocità del suono può portare ad avere time step inaccettabili, poiché di durata troppo breve. È perciò prassi comune aumentare il numero di Mach del reticolo a qualcosa di più grande rispetto al numero di Mach reale, compensando allo stesso modo la viscosità per preservare il numero di Reynolds.

## Simulazione di miscele

Simulare flussi composti o multifase è sempre stata una sfida per i tradizionali CFD a causa della mobilità e deformabilità delle interfacce. Nello specifico, le interfacce tra diverse fasi (liquide e gassose) o componenti (ad esempio olio ed acqua) originate dalle specifiche interazioni tra le molecole del fluido. È perciò difficile implementare interazioni così microscopiche all'interno della macroscopica equazione Navier–Stokes. Comunque, nei LBM, l'energia cinetica del particolato fornisce un metodo relativamente facile e consistente per incorporare queste microscopiche interazioni implicite, modificando l'operatore di collisione. Sono stati sviluppati diversi modelli LBM multifase/multicomponente. In questi la separazione delle fasi viene generata automaticamante dalle dinamiche delle particelle e non è richiesto nessun trattamento speciale per manipolare le interfacce, come era necessario invece nei tradizionali metodi CFD. Si possono trovare applicazioni di successo di modelli LBM multifase/multicomponente in vari sistemi di fluidi complessi come instabilità delle interfacce, dinamiche di bolle/gocce, bagnature su superfici solide, scivolamento delle interfacce e deformazioni elettrodinamiche delle gocce.

## Limiti

Nonostante il grande successo dei LBM nel simulare complessi sistemi di fluidi, questo nuovo approccio presenta qualche limite. Al momento, flussi aerodinamici con un alto numero di Mach risultano ancora difficoltosi per i LBM, ed è ancora assente un consistente schema termo-idrodinamico. Comunque, come i CFD basati su Navier–Stokes, i LBM sono stati utilizzati con successo assieme a soluzioni termico-specifiche per permettere la simulazione di trasferimenti di calore (conduzione, convezione e radiazione su solidi). Per modelli multifase/multicomponente, lo spessore dell'interfaccia di solito è grande ed il rapporto tra la densità e l'interfaccia è piccolo se comparato con fluidi reali. Tuttavia, le moltissime applicazioni ed i veloci progressi di questo metodo nel corso degli ultimi 20 anni ha dimostrato il suo potenziale nella fisica computazionale, inclusa la microfluidica: i LBM mostrano risultati promettenti nel campo dei fluidi con un alto numero di Knudsen (definito dal rapporto del percorso libero medio tra le molecole ed una scala di lunghezza geometrica).

## Dettagli matematici

L'equazione di Boltzmann è l'evoluzione di un'equazione per una funzione di distribuzione di probabilità per una singola particella $f(x,v,t)$:
    $\partial _{t}f+v\partial _{x}f+F\partial _{v}f=\Omega \$
dove $F$ è una forza esterna e $\Omega$ è un integrale di collisione. Il metodo lattice Boltzmann discretizza questa equazione limitando lo spazio su un reticolo e lo spazio delle velocità su un insieme discreto di velocità $v_{i}$. L'equazione di Boltzmann discretizzata, che è l'equazione lattice Boltzmann allora si scriverà:
    $f_{i}(x+\Delta x,t+\Delta t)-f(x,t)+F_{i}=\Omega \$
L'operatore di collisione viene spesso approssimato da un operatore di collisione BGK:
    $\Omega ={\frac {1}{\tau }}(f_{i}^{0}-f_{i})\$
dove $f_{i}^{0}$ è la distribuzione di equilibrio locale.
I momenti di $f_{i}$ forniscono le quantità locali che si conservano. La densità è data da
    $\rho =\sum _{i}f_{i}\$
e la quantità di moto locale è data da
    $\rho u=\sum _{i}f_{i}v_{i}.\$
Per i tipici metodi lattice Boltzmann isotermici queste sono le uniche quantità che si conservano. Anche i modelli termici conservano l'energia e perciò hanno una quantità conservativa addizionale:
    $\rho \theta +\rho uu=\sum _{i}f_{i}v_{i}v_{i}.\$
L'operatore di collisione deve rispettare le leggi di conservazione. Perciò la distribuzione di equilibrio $f_{i}^{0}$ deve avere gli stessi momenti conservativi della $f_{i}$.

## Software

* XFlow: La nuova generazione di software CFD utilizzando LBM.
* Advanced Simulation Library: Codice open source su lattice Boltzmann in C++ (/OpenCL)
* El'Beem: codice CFD libero (GPL) che utilizza LBM
* J-Lattice-Boltzmann: Java applet interattiva per sperimentare con LBM
* Esempi C: Qualche semplice esempio in C di LBM.
* OpenLB: Codice open source su lattice Boltzmann
* waLBerla: Software open source su lattice Boltzmann in C++