• Non ci sono risultati.

Si considera dunque un nuovo algoritmo che sarà indicato nel proseguio del testo come algoritmo GJ6

Il punto di partenza per la costruzione di tale algoritmo è ancora una volta l’equazione di Boltzmann

∂f

∂t + v · ∇xf + F · ∇vf = S

F P G(f )

dove a secondo membro si pone l’operatore collisionale di Fokker-Planck gen- eralizzato SF P G(f ).

Il modello di Fokker-Planck lineare predice in modo accurato gli stress moleco- lari σij lungo le varie direzioni per numeri di Knudsen ragionevoli, tuttavia

fallisce ad esempio nella stima del corretto numero di Prandtl. Si vuole dunque introdurre un modello con rilassamento cubico che fissi il numero di Prandtl. Tuttavia non si vuole perdere il vantaggio principale rispetto ai metodi di simulazione diretta di tipo MonteCarlo (DSMC): la conservazione in media dell’energia, indipendentemente dal passo temporale scelto. Per arrivare alla scelta di un modello si considera dunque un termine di drift A i cui elementi assumono la forma generale

Ai = −

1

τci+ γi(cjcj− E[cjcj]) + Cij(cjckck− E[cjckck]) (2.9) In questa definizione, e da qui in avanti, si farà uso della notazione di Ein- stein, secondo la quale la ripetizione di un indice corrisponde alla sommatoria sull’indice stesso. Così ad esempio

cjckck = cj 3 X k=1 c2k = cj(c21+ c22+ c23). 6

Tale notazione ha il vantaggio di presentare equazioni in forma grafica più snella e compatta, a discapito di uno sforzo interpretativo leggermente au- mentato.

Nel termine di drift A compaiono dunque dei momenti stocastici di ordine 2 e 3 relativi alla distribuzione delle velocità v nell’ensemble di molecole. I parametri su cui definire il modello sono 9, rappresentati dai coefficienti del vettore γ e della matrice simmetrica C.

γ =   γ1 γ2 γ3   C =   C11 C12 C13 C21 C22 C23 C31 C32 C33  

I coefficienti sono effettivamente 9 in quanto la matrice C è simmetrica: bas- tano dunque 6 elementi per definirla! L’idea alla base del modello è quella di controllare l’evoluzione dei momenti stocastici, imponendo in modo op- portuno i coefficienti al fine di ottenere sforzi molecolari σij e flussi di calore

qi in accordo con quelli previsti dal termine collisionale di Boltzmann. A

questo punto ci si aspetta di ottenere stime corrette dei numeri di Prandtl e Reynolds. In sostanza si vuole ottenere la proprietà 3. dei modelli collision- ali per N=3: i momenti della distribuzione di velocità fino al terzo ordine coincidono con quelli che si otterrebbero con l’operatore collisionale di Boltz- mann.

Come si può giungere a questo risultato? Risolvendo il sistema lineare                         

CilE[cjclckck] + CjlE[ciclckck] + γiE[clclcj] + γjE[clclci] + Dδij

− 2 τE[cicj] = − p µE[cicj] + 2esp 3µ δij 2Cjl (E[clcicjckck] − E[clcicj]E[ckck]) + Cil(E[clcjcjckck]

−E[clcicj]E[ckck]) + 2γjE[(clcl− E[clcl])cicj]

+γiE[(clcl− E[clcl])cjcj] − 3 τE[cicjcj] = − P r p µ E[cicjcj] (2.10) costituito da 6 equazioni indicizzate su i e j con i > j seguite da 3 equazioni indicizzate su j. Si tratta dunque di un sistema di 9 equazioni in 9 incognite, nel quale P r è il numero di Prandtl, δij è la delta di Kronecker, esè l’energia

sensibile, D = 4es/(3τ ).

Introducendo ora la notazione

|c|2 = c kck = 3 X k=1 c2k

tale sistema si può riscrivere nella forma compatta Az = b dove A = 2E[c2

1|c|2] 2E[c1c2|c|2] 2E[c1c3|c|2] 0 0 0 2E[|c|2c1] 0 0

E[c1c2|c|2] E[c21|c|2] + E[c22|c|2] E[c2c3|c|2] E[c1c2|c|2] E[c1c3|c|2] 0 E[|c|2c2] E[|c|2c1] 0

E[c1c3|c|2] E[c2c3|c|2] E[c21|c|2] + E[c23|c|2] 0 E[c1c2|c|2] E[c1c3|c|2] E[|c|2c3] 0 E[|c|2c1]

0 2E[c1c2|c|2] 0 2E[c22|c|2] 2E[c2c3|c|2] 0 0 2E[|c|2c2] 0

0 E[c1c3|c|2] E[c1c2|c|2] E[c2c3|c|2] E[c22|c|2] + E[c23|c|2] E[c2c3|c|2] 0 E[|c|2c3] E[|c|2c2]

0 0 2E[c1c3|c|2] 0 2E[c2c3|c|2] 2E[c23|c|2] 0 0 2E[|c|2c23]

2M 4111+ M 51 4M 4112+ M 52 4M 4113+ M 53 2M 4212 4M 4213 2M 4313 2M 611+ M 7 2M 612 2M 613 2M 4212 4M 4122+ M 51 4M 4123 2M 4222+ M 52 4M 4223+ M 53 2M 4323 2M 612 2M 622+ M 7 2M 623 2M 4131 4M 4132 4M 4133+ M 51 2M 4232 4M 4233+ M 52 2M 4333+ M 53 2M 631 2M 632 2M 633+ M 7 z =               C11 C12 C13 C22 C23 C33 γ1 γ2 γ3               b =                         2 τ − p µ  E[c21] +  2esp 3µ − D   2 τ − p µ  E[c1c2]  2 τ − p µ  E[c1c3]  2 τ − p µ  E[c22] +  2esp 3µ − D   2 τ − p µ  E[c2c3]  2 τ − p µ  E[c23] +  2esp 3µ − D   3 τ − P r p µ  E[c1|c|2]  3 τ − P r p µ  E[c2|c|2]  3 τ − P r p µ  E[c3|c|2]                        Nella matrice A sono stati introdotti anche gli elementi di alcune matrici stocastiche così definite:

M 4lij = E[clcicj |c|2] − E[clcicj] · E[ |c|2]

M 5l = E[cl |c|4] − E[cl|c|2] · E[ |c|2]

M 6ij = E[( |c|2− E[ |c|2) cicj]

M 7 = E[( |c|2− E[ |c|2) |c|2]

Una volta determinati i coefficienti incogniti l’evoluzione del moto stocastico secondo questo nuovo modello è dettata dal sistema di equazioni differenziali

stocastiche          dXi dt = Vi dVi dt =  −1 τci+ γi (cjcj− E[cjcj]) + Cij (cjckck− E[cjckck]) + Fi  + D dWi dt (2.11) Questo schema si differenzia dallo schema (2.3) per la presenza di due termi- ni in più: quelli relativi allo scostamento rispetto alla media locale di alcuni momenti per la velocità caotica c di ordine 2 e 3.

A questo punto è necessario mettere a punto uno schema numerico per la risoluzione del sistema. Per fare ciò innanzittutto occorre riscrivere l’e- quazione evolutiva per la velocità nella forma

dVi

dt = Hi

e splittare il secondo membro in una parte che agisce linearmente Li ed

un’altra che è invece non lineare Ni

Hi = Li + Ni.

Dunque esplicitando tali operatori: Li = − 1 τci+ Fi+ D dWi dt Ni = γi(cjcj− E[cjcj]) + Cij(cjckck− E[cjckck])

Ni raccoglie proprio i termini aggiuntivi rispetto allo schema Fokker-Planck

lineare.

Per ottenere uno schema numerico che risolva il sistema di equazioni dif- ferenziali stocastiche (2.11) si procede nel seguente modo:

1. Si congelano i coefficienti γi e Cij per tutto il passo temporale.

2. Si performa un’integrazione esatta per la parte lineare Li in accordo

con quanto fatto per il modello FP lineare.

3. Si utilizza lo schema di Eulero in avanti7 per quanto riguarda la parte

non lineare Niimponendo il corretto coefficiente di diffusione per avere

l’esatta conservazione dell’energia statistica es.

7

Lo schema numerico finale assume la forma    Vin+1 = Vin+ cnie−∆t/τ + q A −CB2ξi,u+ q C2 Bξi,x+ ∆t τ N n i + Fin∆t Xin+1 = Xn i + Vinτ (1 − e−∆t/τ) + √ Bξi,x+∆t 2 2τ Nin+ Fin∆t 2 2 (2.12) dove A = 2es 3  1 − e−2∆t/τ− ∆t 3τ 2 E[NinNin] B =  2esτ 2 3 + τ2 E[NinNin](∆t/τ )2 3(e−2∆t/τ − 1)   2∆t τ − (1 − e −∆t/τ)(3 − e−∆t/τ)  C =  2esτ 3 + τ E[NinNin](∆t/τ )2 3(e−2∆t/τ − 1)   1 − e−∆t/τ2

Confrontando questo schema con lo schema (2.4) si nota osservando i nuovi coefficienti A, B e C come essi abbiano la stessa forma, a cui si aggiunge una parte che tiene conto della parte non lineare Ni della nuova equazione

stocastica. Lo schema presenta un termine aggiuntivo proporzionale a Ni

anche in entrambe le equazioni del sistema stocastico.

Rispetto allo schema JTH a questo punto si procede esattamente nello stesso modo: l’imposizione della griglia computazionale e delle condizioni iniziali, le condizioni al contorno, la successione di passi temporali non cambia. Cam- bia invece lo schema per l’evoluzione libera di posizione e velocità per le particelle.

Capitolo 3

Simulazioni Numeriche

Consideriamo ancora il problema (2.2) P(f, d) : ∂f

∂t + v · ∇xf + F · ∇vf = S(f )

nel quale con d sono indicati i dati iniziali, cioè la distribuzione iniziale di posizioni e velocità delle particelle che compongono il gas.

Nel capitolo precedente sono stati introdotti 2 possibili algoritmi di soluzione per questo tipo di problema. In generale la necessità di introdurre algoritmi numerici di soluzione per equazioni complesse è dovuta all’impossibilità di risolvere il problema in maniera analitica. La soluzione dell’equazione (2.2) è una funzione continua f. Attraverso l’uso del calcolatore si ottiene una soluzione numerica fN, dove N è il parametro che tiene conto del numero di

informazioni utilizzate. Nel nostro caso specifico N corrisponderà al numero di nodi (e dunque di celle) in cui è suddiviso il dominio computazionale ΩN.

La speranza è che la soluzione numerica fN approssimi in modo adegua-

to la soluzione reale f. Tipicamente all’aumentare del parametro N l’ap- prossimazione migliora, tuttavia la complessità algoritmica aumenta e di conseguenza anche i tempi computazionali si dilatano. Esiste una branca della matematica che si occupa delle difficoltà legate all’implementazione di algoritmi computazionali: si tratta della matematica numerica.

Sia dunque

PN(fN, dN) :

∂fN

∂t + v · ∇xfN + F · ∇vfN = SN(fN) (3.1) il problema numerico associato a (2.2). L’equazione (3.1) rappresenta in mo- do astratto un qualunque algoritmo numerico, e dunque in particolare (2.4) e (2.12).

In generale anche il dominio Ω di ambientazione del problema differenziale è sostituito da un dominio computazionale ΩN. Nel caso presentato nel

capitolo precedente, riguardante flussi di gas tra due lastre parallele, ΩN

corrisponde ad un parallelepipedo su cui è introdotta un’opportuna griglia computazionale.

DEF. 2 (Convergenza) Un metodo numerico si dice convergente se k f − fN k→ 0 per N → ∞.

Si hanno diversi tipi di convergenza, a seconda del tipo di norma per la quale è verificata la definizione di convergenza introdotta. La convergenza è una proprietà fondamentale per qualsiasi metodo numerico: garantisce la possibilità di controllare la norma dell’errore k f − fN k di approssimazione

della soluzione, a patto di sostenere un certo costo computazionale. DEF. 3 (Stabilità) Un metodo numerico si dice stabile se

∀ ε > 0 ∃ δ = δ(ε) > 0 : ∀ δdN : k δdN k< δ ⇒ k δfN k6 ε ∀ N,

con fN+ δfN soluzione del problema perturbato

PN(fN+ δfN, dN + δdN) = 0.

Un metodo numerico si dice quindi stabile se una piccola perturbazione dei dati δdN comporta una piccola perturbazione della soluzione δfN, control-

labile in modo indipendente da N. Anche in questo caso la stabilità è legata al tipo di norma utilizzata. La stabilità è condizione necessaria ma non suf- ficiente per la convergenza.

L’obiettivo di questo capitolo consiste nel testare i due algoritmi presentati su un problema modello, del quale si conosce la soluzione esplicita. In questo modo è possibile validare la convergenza dell’algoritmo ed in tal caso anche l’ordine di convergenza, nonchè confrontare i due algoritmi per valutarne l’efficienza.

3.1

Flusso di Couette

Si consideri ora un flusso viscoso (µ > 0) tra due lastre parallele ad una distanza L. Assumendo che la parete di sinistra si muova ad una velocità Vw > 0, mentre la parete di destra rimane ferma, il flusso che si ottiene

è un flusso piano sostanzialmente assiale, diretto lungo l’asse z. Tenendo presente il sistema di riferimento introdotto con la figura (2.2.1), in assenza di gradiente di pressione e trascurando gli effetti della gravità si giunge ad un flusso di velocità, che ha la seguente forma esplicita:

vz =

Vw

Si nota come per x = 0, cioè sulla parete di sinistra, la velocità vz coincida

con la velocità della parete Vw, mentre per x = L, cioè in corrispondenza

della parete di destra, la velocità vz sia nulla, in accordo con il fatto che la

parete di sinistra è ferma.

Il profilo di velocità tra le pareti decresce linearmente, come evidenziato anche dalla figura seguente:

Figura 3.1: Flusso di Couette tra lastre parallele

3.2

Algoritmo JTH

L’algoritmo presentato nel capitolo 2 è stato implementato utilizzando codice c++al calcolatore, in modo da computare l’evoluzione di velocità e posizione di ogni singola particella. Si è poi determinata la media locale sulle celle di alcune caratteristiche fisiche quali i profili di velocità e la distribuzione del- l’energia lungo l’asse x.

Varie simulazioni sono state effettuate, variando alcuni parametri. I parametri principali che distinguono una simulazione dall’altra sono:

• Nx: il numero di nodi in cui è suddiviso l’intervallo [0, Lx];

• Lx: la distanza tra le due lastre parallele;

• ∆t

τ : il rapporto tra il passo temporale ed il tempo caratteristico del

sistema τ;

• N: il numero di particelle utilizzate.

Figura 3.2: Simulazione 1: Profilo di velocità lungo l’asse x per vx

Figura 3.3: Simulazione 1: Profilo di velocità lungo l’asse x per vz

La prima simulazione prevede la presenza di N = 106 particelle, le pareti

l’asse x. La parete si muove ad una velocità pari a 0.4λ m

s. Tutte le simu-

lazioni sono state performate fino ad arrivare a Tmax= 100∆tτ .

I risultati dei profili di velocità per vx e vz lungo la direzione x sono rappre-

sentati nelle figure della pagina precedente. Si nota come il profilo di velocità per vz sia sostanzialmente lineare ed in accordo con quanto ci si aspetta. In-

oltre il profilo per vx è sostanzialmente nullo: infatti non c’è nessuna azione

di forze e movimenti delle pareti lungo l’asse x!

Una seconda simulazione è eseguita raddoppiando il numero di nodi lun- go l’asse x, che diventano Nx = 20. I risultati dei profili di velocità sono i seguenti. Essendo nota la soluzione esplicita del problema, è interessante

Figura 3.4: Simulazione 2: Profilo di velocità lungo l’asse x per vx

Figura 3.5: Simulazione 2: Profilo di velocità lungo l’asse x per vz

diverse simulazioni. Si introducono quindi le quantità: Ex = k ˆfx− fxk

Ez = k ˆfz− fz k

dove ˆfx e ˆfz indicano le distribuzioni numeriche ottenute dalle simulazioni,

mentre fxed fz indicano le soluzioni note del problema con flusso di Couette.

Una terza simulazione è eseguita con gli stessi parametri della prima, dimez- zando però la distanza tra le pareti Lx,in modo da ottenere Kn = 2. Lo

scostamento dalle distribuzione corrette è marcato per entrambi i profili.

Figura 3.6: Simulazione 3: Profilo di velocità lungo l’asse x per vx

Un’ultima simulazione su questo algoritmo è stata infine eseguita con i seguenti parametri: • Nx=10; • Lx=1; • N=5· 104; • ∆t τ = 1.

I risultati sono piuttosto deludenti:

Figura 3.8: Simulazione 4: Profilo di velocità lungo l’asse x per vx

I risultati di queste simulazioni sono riassunti nella seguente tabella, che riporta anche il tempo di calcolo di ogni simulazione tcalcolo.

Simulazione Np Nx ∆t/τ Kn Ex Ez tcalcolo

1 106 10 1/4 1 0.0654 0.0157 2204 s 2 106 20 1/4 1 0.0496 0.0108 3872 s 3 106 10 1/4 2 0.2604 0.1259 2560 s 4 5 · 104 10 1 1 0.4425 0.1718 292 s

Tabella 3.1: Simulazioni algoritmo JTH

Questa tabella evidenzia come i tempi di calcolo siano influenzati in maniera sostanzialmente lineare dal numero di particelle simulate Np e dal numero

di nodi impiegati, che è proporzionale a Nx se si tengono fissati Ny ed Nz.

Anche il rapporto ∆t/τ influenza in modo significativo il tempo di calcolo, infatti per arrivare a Tmax = 100∆tτ nei primi 3 casi servono 400 iterazioni

temporali, nell’ultimo ne bastano 100.

Per quanto riguarda invece l’errore di calcolo il raddoppio del numero dei no- di porta un miglioramento della prestazione numerica, pur non proporzionale all’aumento di complessità. Inoltre è assolutamente necessario simulare un numero adeguato di particelle. All’aumentare del numero di Knudsen, l’al- goritmo accusa qualche difetto nell’adattamento alla soluzione corretta.

3.3

L’algoritmo GJ

Per quanto riguarda invece l’algorimo GJ, viene presentata una sola simu- lazione, con i seguenti parametri:

• Nx=10;

• Lx= 0.5;

• Np= 106;

• ∆t τ = 1.

Ci si aspetta un comportamento migliore rispetto all’algoritmo JT H, a fronte di una maggiore complessità computazionale, oltre che di allocamento della memoria.

Figura 3.10: Simulazione 5: Profilo di velocità lungo l’asse x per vx

Figura 3.11: Simulazione 5: Profilo di velocità lungo l’asse x per vz

Simulazione Np Nx ∆t/τ Kn Ex Ez tcalcolo

5 106 10 1 2 0.0531 0.097 1754 s Tabella 3.2: Simulazioni algoritmo GJ

Conclusioni

I due algoritmi illustrati in questo lavoro di tesi sono piuttosto recenti. L’algoritmo JTH è innovativo in quanto la sua derivazione presenta la carat- teristica di preservare l’energia delle particelle. Tale proprietà è stata confer- mata in questo lavoro di tesi, sia ripercorrendo i calcoli analitici per ottenerla, sia attraverso le simulazioni, che hanno sempre rispettato questa proprietà in media. L’algoritmo performa in maniera soddisfacente nel caso di un flus- so di Couette tra due lastre parallele, tuttavia all’aumentare del numero di Knudsen perde in modo significativo efficacia.

L’algoritmo GJ è uno sviluppo dell’algoritmo precedente, nato dall’esigen- za di preservare anche momenti di ordine maggiore rispetto al secondo, che corrispondono a quantità fisiche significative. In questo lavoro di tesi si è verificato che performa in modo migliore rispetto all’algorimo JTH e sembra non soffrire degli stessi problemi all’aumentare del numero di Knudsen Kn. Nonostante queste affermazioni, ci sono ancora diversi punti dell’analisi degli algoritmi che possono essere sviluppati. In particolare:

1. Utilizzare funzioni kernel diverse, che comportano anche la presenza di stimatori diversi dalla semplice media aritmetica per cella;

2. Indagare più a fondo, con simulazioni mirate, l’effettiva conservazione di momenti di ordine maggiore del secondo per l’algoritmo JTH, com- putando le stime per i flussi di calore e per gli elementi del tensore degli stress;

3. Simulare flussi diversi da quello di Couette, di cui tutto è noto, e geometrie più complesse.

Appendice A

Strumenti Matematici

Alcuni strumenti matematici sono necessari per la comprensione dei modelli e delle tecniche di risoluzione numerica che saranno presentati in questo lavoro.

A.1

Equazioni alle Derivate Parziali

Le leggi della fisica stabiliscono delle relazioni matematiche tra derivate tem- porali e spaziali di determinate quantità fisiche. La stessa equazione di Boltzmann presentata nel capitolo introduttivo è un’equazione alle derivate parziali (EDP).

DEF. 4 (EDP) Una equazione alle derivate parziali, in breve EDP , è una relazione della forma

F (x, y, t, . . . , u, ux, uy, ut, . . . , uxx, . . . , uxy, . . .) = 0.

In tale relazione u = u(x, y, t, . . .) è una funzione incognita delle variabili indipendenti x, y, t, . . .. Inoltre ux indica la derivata parziale rispetto alla

variabile indipendente x ed analoga notazione è usata per le altre derivate parziali, anche di ordine superiore.

Si dice soluzione particolare dell’equazione alle derivate parziali una fun- zione u = u(x, y, t, . . .) che inserita nella relazione, calcolando le derivate parziali, la trasformi in un’identità matematica.

DEF. 5 (Ordine di un’EDP) Si dice ordine di un’EDP il massimo or- dine di derivazione della funzione incognita u presente nell’equazione. Alcune equazioni alle derivate parziali comuni sono ad esempio:

• ut+ u · ∇xu = 0(Equazione del Trasporto).

• utt− 4xu = f (Equazione delle Onde).

In tali esempi si sono usati i simboli: ∇x=  ∂ ∂x1 , ∂ ∂x2 , . . . , ∂ ∂xd  (Gradiente); 4x= d X k=1 ∂ ∂x2 k (Laplaciano).

Di conseguenza l’equazione del trasporto risulta del primo ordine, le equazioni di diffusione e delle onde sono del secondo ordine.

Documenti correlati