Apprendimento del metodo Lattice Boltzmann e del codice di calcolo ad esso relativo
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Università degli Studi di Roma Tre Dipartimento di Ingegneria LAUREA MAGISTRALE IN INGEGNERIA CIVILE PER LA PROTEZIONE DAI RISCHI NATURALE RELAZIONE DI FINE TIROCINIO Apprendimento del metodo Lattice Boltzmann e del codice di calcolo ad esso relativo Tirocinante: Tutor: Stefano Miliani Dott. Pietro Prestininzi Matr. 460604 Anno Accademico 2016-2017
Indice Premessa iii 1 Teoria alla base del software 1 1.1 Modelli lattice gas automata . . . . . . . . . . . . . . . . . . . . . . 1 1.1.1 Automa cellulare . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1.2 Modelli Lattice Gas Bidimensionali . . . . . . . . . . . . . . . 2 1.2 Concetti base della teoria di Boltzmann sui gas . . . . . . . . . . . . 3 1.2.1 Teoria cinematica . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2.2 Funzione di distribuzione del primo ordine . . . . . . . . . . . 4 1.3 Modelli Lattice Boltzmann . . . . . . . . . . . . . . . . . . . . . . . 5 1.3.1 Tempo di rilassamento BGK . . . . . . . . . . . . . . . . . . 7 1.3.2 Condizioni al contorno . . . . . . . . . . . . . . . . . . . . . . 8 1.4 Incorporare la gravità . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2 Software per la simulazione 13 2.1 File con estensione ”.in” . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.1.1 File prob type . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.1.2 File pars grids . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.1.3 File pars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1.4 File boundaries . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1.5 File nesting . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.1.6 File pars custom . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2 File con estensione ”.f90” . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.1 File cust geom dll . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2.2 File cust ic fs dll . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.2.3 File cust force dll . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3 Post-Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3.1 Sliceview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3.2 Plot del livello idrico . . . . . . . . . . . . . . . . . . . . . . . 23 2.3.3 Plot 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.3.4 Digitalizzazione di grafici . . . . . . . . . . . . . . . . . . . . 25 2.3.5 Montaggio dei frame . . . . . . . . . . . . . . . . . . . . . . . 26 Conclusione 28 Università degli Studi di Roma Tre - Dipartimento di Ingegneria
Elenco delle figure 1.1 Vettori unitari della velocità nel modello esagonale FHP. . . . . . . . 2 1.2 Esempi di applicazione delle regole di collisione. . . . . . . . . . . . . 3 1.3 Reticolo e velocità di un D2Q9. . . . . . . . . . . . . . . . . . . . . . 6 1.4 Topologia cilindrica di un dominio con contorno periodico in una direzione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.5 Topologia torroidale di un dominio con contorni periodici su due dimensioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.6 Esempio di contorno bounceback. . . . . . . . . . . . . . . . . . . . . 10 1.7 Esempio di densità direzionali incognite in 2D per il contorno nord. . 11 2.1 File prob type.in. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2 File pars grids.in. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.3 File pars.in. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 File boundaries.in. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.5 Denominazione facce del dominio. . . . . . . . . . . . . . . . . . . . . 17 2.6 File nesting.in. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.7 File pars custom.in. . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.8 cust dll.vfproj aperto in Virtual Studio, zoom sulla finestra Solution Explorer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.9 cust dll.vfproj aperto in Virtual Studio, zoom sul comando Build. . . 20 2.10 File cust geom dll.f90. . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.11 File cust ic fs dll.f90. . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.12 File cust force dll.f90. . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.13 Esempio di un plot attraverso la function Sliceview. . . . . . . . . . . 22 2.14 Stringhe di codice da modificare in Sliceview. . . . . . . . . . . . . . 23 2.15 Esempio di codice per il plot del livello idrico. . . . . . . . . . . . . . 23 2.16 Stringhe di codice per il plot3D della forma della massa fluida tridimensionale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.17 Scelta del tipo di grafico su Web Plot Digitizer. . . . . . . . . . . . . 26 2.18 Calibrazione degli assi cartesiani su Web Plot Digitizer. . . . . . . . 26 2.19 Estrazione dei punti su Web Plot Digitizer. . . . . . . . . . . . . . . 27 2.20 Interfaccia nel prompt dei comandi di ffmpeg. . . . . . . . . . . . . . 27 Università degli Studi di Roma Tre - Dipartimento di Ingegneria
Premessa L’attivita formativa di tirocinio, condotta negli ultimi mesi presso il suddetto ateneo, ha avuto come obiettivo quello di esaminare il metodo numerico Lattice Boltzmann per la risoluzione dei problemi di fluidodinamica al fine di comprendere l’uso del software relativo alla sua applicazione, denominato new mph e sviluppato all’interno del gruppo di Idraulica Numerica della sezione di Ingegneria Civile. La seguente trattazione, partendo da una rapida analisi dei primi modelli numerici di questo genere, affronta i fondamenti teorici alla base del modello oggetto di studio, tra cui la teoria dei gas di Boltzmann, la cui importanza riveste un ruolo determinante nell’ideazione dei modelli Lattice Boltzmann; di seguito, si è proceduto alla stesura di un manuale nel quale vengono illustrati il funzionamento del suddetto programma informatico e le sue principali impostazioni da adottare per risolvere problemi di fluidodinamica elementari ed estrarre da essi i risultati delle simulazioni numeriche compiute. Università degli Studi di Roma Tre - Dipartimento di Ingegneria
Capitolo 1 Teoria alla base del software Il software permette di simulare la dinamica del fluido utilizzando un modello Lattice Boltzmann (LBM), dove lattice in italiano sta per reticolo; questa tipologia di modelli permette di studiare il comportamento di un singolo fluido, eventualmente multifase, in diverse condizioni di moto vario, separazione di fase, evaporazione, condensazione, cavitazione, trasporto di soluto e calore, galleggiamento e interazione con solidi. Quanto scritto in questo capitolo è un estratto del libro “Lattice Boltz- mann Modeling” di M.C. Sukop e D.T. Thorne,Jr. 1.1 Modelli lattice gas automata I modelli Lattice Gas Automata (LGA) sono stati i precursori dei LBM e hanno una struttura, per certi aspetti più semplice e intuitiva, che permette di comprendere meglio il funzionamento delle evoluzioni più recenti. 1.1.1 Automa cellulare Un automa cellulare (in inglese Cellular Automaton o brevemente CA), è una entità matematica che occupa una posizione in una griglia e interagisce con gli elementi ad essa adiacenti; in genere una CA esamina il proprio stato e quello di un certo numero di elementi adiacenti in un certo istante di tempo e quindi resetta il proprio stato per l’istante di tempo successivo secondo delle semplici regole. Imposte quindi le regole, le condizioni iniziali e al contorno nel gruppo di automi cellulari, essi determinano in maniera univoca la propria evoluzione nel tempo. Si possono perciò usare tali entità per poter studiare il moto di particelle fluide: ogni CA potrà avere due distinti valori 0 e 1, rispettivamente in caso di assenza o di presenza di una particella in un certo nodo del reticolo. Università degli Studi di Roma Tre - Dipartimento di Ingegneria
Capitolo 1. Teoria alla base del software 1.1.2 Modelli Lattice Gas Bidimensionali I modelli LGA furono presentati come una via percorribile per risolvere le equazioni di Navier-Stokes del moto di un fluido nel 1986. Il primo modello di questo tipo, comunemente chiamato FHP dalle iniziali dei suoi autori, è costruito su una griglia con maglie a forma di triangolo equilatero e permette di ottenere una soluzione isotropa. I punti sulla griglia sono separati da 1 lattice unit (lu) e tutte le particelle hanno una sola velocità: 1lu/timestep (lu/ts), dove per time step si intende il passo temporale fra uno stato del sistema e il successivo. In ogni punto della griglia x possono esserci fino a 6 particelle, una per ogni possibile velocità definita da quella della particella e da una delle sei possibili direzioni. Figura 1.1: Vettori unitari della velocità nel modello esagonale FHP. Il generico vettore ea , che rappresenta il vettore delle velocità con coda sull’origine del sistema cartesiano, sarà formato dalle componenti: πa πa ea = cos ), sin( per a = 1, . . . , 6 (1.1) 3 3 Una stringa n contenente sei variabili booleane (n1 ,. . . ,n6 ) indica la presenza (1) o l’assenza (0) di particelle che si muovono da un nodo della griglia x al nodo x + ea . L’evoluzione di un modello LGA avviene in due fasi per ogni istante di tempo: la fase di propagazione o streaming, in cui le particelle si muovono nel nuovo sito secondo la loro precedente posizione e le loro velocità, e la fase di collisione, in cui le particelle collidono e divergono secondo precise regole. Vi sono molte e diverse regole di collisione in una griglia esagonale ma nei modelli più semplici ne vengono considerate solo due: la collisione fra due particelle e la collisione fra tre (figura 1.2). È possibile simulare le equazioni di Navier-Stokes utilizzando i principi di conservazione della massa e della quantità di moto. In questi modelli tutte le particelle hanno la stessa Università degli Studi di Roma Tre - Dipartimento di Ingegneria 2
Capitolo 1. Teoria alla base del software Figura 1.2: Esempi di applicazione delle regole di collisione. velocità e massa cosı̀ che la conservazione della quantità di moto si riduce alla conservazione della somma delle velocità. Le collisioni frontali fra due particelle (o tre che provengono da direzioni a 120° fra loro) hanno quantità di moto netta nulla quindi anche il risultato di esse dovrà averla. 1.2 Concetti base della teoria di Boltzmann sui gas Il fondamento teorico degli studi di Boltzmann poggia le proprie basi sul- l’idea che un gas è composto da particelle che interagiscono fra loro e che possono essere descritte dalla meccanica classica, di cui è necessario fare una trattazione di tipo statistico a causa dell’alto numero di particelle. La meccanica può essere estremamente semplice e composta unicamente dalle nozioni di propagazione nello spazio e dall’interazione per collisione. 1.2.1 Teoria cinematica Si considera un gas diluito formato da particelle sferiche che si muovono a gran velocità (∼ 300 m/s) e si limitano le loro interazioni a collisioni elastiche. In linea teorica sarebbe possibile conoscere il vettore posizione x e quello Università degli Studi di Roma Tre - Dipartimento di Ingegneria 3
Capitolo 1. Teoria alla base del software della quantità di moto p di ogni singola particella in un certo istante di tempo, conoscendo cosı̀ lo stato dinamico del sistema e permettendo cosı̀, applicando i principi della meccanica, di conoscere gli stati futuri. Il sistema può essere descritto da una funzione di distribuzione di proba- bilità f(N) (xN ,pN ,t) dove N è il numero delle particelle; questa distribuzione è intesa come inerente a uno spazio delle fasi, che è uno spazio in cui le coordinate sono date dai vettori posizione e quantità di moto e dal tempo. Questo livello di descrizione non è possibile per gas reali in cui il numero di particelle è molto elevato. 1.2.2 Funzione di distribuzione del primo ordine La Meccanica Statistica offre un approccio statistico in cui un sistema è rappresentato da un insieme di molte copie. La distribuzione f(1) (x,p,t) dà la probabilità di trovare una particolare molecola data una posizione e una quantità di moto; le caratteristiche delle altre N-1 particelle possono rimanere non specificate perché nessun esperimento può distinguerne una dall’altra. Tale funzione prende il nome di funzione di distribuzione della singola particella e permette di descrivere tutte le proprietà di gas che non dipendono dalla posizione delle relative molecole (gas diluiti e liberi). Il numero di molecole poste in x±dx e in p±dp è dato da: f (1) (x, p, t)dxdp (1.2) Introducendo una forza esterna F, se non ci sono collisioni all’istante t+dt si avrà che la nuova posizione e la nuova quantità di moto saranno: p dx x+ dt = x + dt = x + dx m dt (1.3) dp p + Fdt = p + dt = p + dp dt Quindi quando le posizioni e le quantità di moto sono conosciute in un certo istante t, incrementandole è possibile determinare f(1) all’istante t+dt come: f (1) (x + dx, p + dp, t + dt)dxdp = f (1) (x, p, t)dxdp (1.4) Questa equazione rappresenta il fenomeno della propagazione. Avvengono però le collisioni fra alcune particelle per cui alcune di esse, pur partendo da (x, p), non arriveranno a (x+dx, p+dp) mentre altre vi arriveranno pur non partendo da (x, p). Si definisce perciò Γ(+) dxdpdt, pari al numero di molecole che non arrivano nella prevista porzione di spazio di fase a causa delle collisioni durante l’intervallo di tempo dt, e in maniera Università degli Studi di Roma Tre - Dipartimento di Ingegneria 4
Capitolo 1. Teoria alla base del software analoga si definisce Γ(-) dxdpdt, come il numero di molecole che pur partendo da qualche altra parte arrivano in quella certa porzione di spazio; si ricava perciò che: f (1) (x + dx, p + dp, t + dt)dxdp = (1.5) = f (1) (x, p, t)dxdp + Γ(+) − Γ(−) dxdpdt Facendo l’espansione in serie di Taylor al primo ordine del primo termine di sinistra si ottiene: f (1) (x + dx, p + dp, t + dt) = ∂f (1) (1.6) = f (1) (x, p, t) + dx∇x f (1) + dp∇p f (1) + dt + . . . ∂t Quindi andando a sostituire l’equazione (1.5) all’interno della (1.6) si ottiene la cosiddetta equazione di Boltzmann: ∂f (1) v∇x f (1) + F∇p f (1) + = Γ(+) − Γ(−) (1.7) ∂t Questa è una equazione integro-differenziale non lineare ed è particolarmente complicata da risolvere, per questo viene risolta in maniera approssimata. 1.3 Modelli Lattice Boltzmann Questi modelli semplificano notevolmente la visione teorica originaria di Boltzmann, riducendo le possibili posizioni e le quantità di moto che le particelle possono avere, passando da dei valori continui a dei valori discreti. Le posizioni delle particelle sono limitate ai nodi del reticolo mentre le variazioni delle quantità di moto che potevano esserci a causa delle infinite direzioni e moduli della velocità e dei valori della massa delle particelle sono ridotti a seconda del tipo di griglia che si sta utilizzando. La classificazione delle griglie avviene attraverso il Lattice Code, scritto nella forma DnQm, dove la n sta per le dimensioni della griglia e m per il numero di direzioni che può prendere la particella; per esempio una griglia bidimensionale in cui si hanno 8 possibili velocità, più quella nulla, avrà come Lattice Code D2Q9 (vedi figura 1.3). Poiché la massa delle particelle è unitaria tali velocità microscopiche coincidono con le quantità di moto. L’unità di misura della lunghezza è nuovamente il lattice unit (lu) mentre quella del tempo è il time step (ts). Nel caso D2Q9 la velocità avrà modulo pari a 1 lu/ts per i vettori da e1 a e4 √ mentre varrà 2 lu/ts per quelli da e5 a e8 , e0 avrà come valore 0. Università degli Studi di Roma Tre - Dipartimento di Ingegneria 5
Capitolo 1. Teoria alla base del software Figura 1.3: Reticolo e velocità di un D2Q9. La funzione di distribuzione della singola particella sarà sostanzialmente quella dell’equazione di Boltzmann ma in forma discreta; essa può rappre- sentare anche la frequenza di accadimento, che può essere considerata essere la densità del fluido in una specifica direzione. La densità macroscopica sarà perciò pari a: Xm ρ= fa (1.8) a=0 La velocità macroscopica u sarà una media delle velocità microscopiche ea pesata rispetto alle densità direzionali fa . m 1X u= fa ea (1.9) ρ a=0 Il passo successivo è definire i fenomeni di propagazione e collisione at- traverso la funzione di distribuzione; l’approccio più semplice utilizzato è l’approssimazione di Bhatnagar-Gross-Krook per la collisione. Università degli Studi di Roma Tre - Dipartimento di Ingegneria 6
Capitolo 1. Teoria alla base del software 1.3.1 Tempo di rilassamento BGK L’approssimazione BGK è quella più usata nei modelli Lattice Boltzmann; secondo essa la propagazione e la collisione (cioè rilassamento attraverso l’equilibrio locale) ha questo aspetto: [fa (x, t) − faeq (x, t)] fa (x + ea ∆t, t + ∆t) = fa (x, t) − (1.10) τ Dove: fa (x + ea ∆t, t + ∆t) = fa (x, t) rappresenta la propagazione; [fa (x,t)−faeq (x,t)] τ è l’operatore di collisione, con τ tempo di rilassamento e fa eq funzione di equilibrio. Sebbene possano essere combinati insieme, è opportuno che i passi di propagazione e collisione siano separati per questioni di ottimizzazioni computazionali. La forma della distribuzione d’equilibrio nel caso del D2Q9, per esempio, è pari a: h ea u 9 (ea u)2 3 u2 i faeq (x) = wa ρ(x) 1 + 3 2 + − (1.11) c 2 c4 2 c2 Dove il peso wa è pari a 4/9 per la particella a riposo (a = 0), 1/9 per a = 1, 2, 3, 4 e 1/36 per i restanti valori; c è la velocità base della griglia (1 lu/ts nelle implementazioni più semplici). La funzione di equilibrio è una espansione polinomiale in Mach dell’e- quilibrio Maxwelliano, vale quindi per numeri di Mach piccoli; il numero di Mach è definito come: v Ma = (1.12) a Dove v è la velocità macroscopica di un oggetto in moto nel fluido e a la velocità del suono nel fluido considerato. Il tipo di reticolo influisce sul valore dei pesi mentre la forma della funzione dipende dal tipo di macroscopico che si vuole ottenere. La viscosità cinematica del fluido, sempre in caso di D2Q9, è data da: 1 1 1 ν= τ− (1.13) 3 2 La sua unità di misura è lu2 /ts. Si nota che per avere una viscosità positiva, τ deve essere maggiore di 0.5 ma vi sono problemi nella risoluzione numerica se τ si avvicina a tale valore. 1 il prefattore 1/3 vale solo con alcune tipologie di griglie. Università degli Studi di Roma Tre - Dipartimento di Ingegneria 7
Capitolo 1. Teoria alla base del software 1.3.2 Condizioni al contorno Per ogni problema fluidodinamico è necessario definire le condizioni al contorno, che possono essere di vari tipi e sono tuttora studiate e migliorate. In generale si ha una grande flessibilità sia temporale sia spaziale nell’ap- plicare le condizioni al contorno nel LBM: infatti la capacità di incorporare contorni solidi complessi è uno degli aspetti più importanti di questi modelli e permette di simulare un gran numero di casi realistici. Contorni Periodici Le più semplici condizioni al contorno sono quelle “periodiche” in cui il sistema diventa chiuso unendo le pareti fra loro opposte. Molti dei primi saggi usano questa condizione insieme a quella di bounceback ; nella simulazione di un flusso attraverso una fessura, per esempio, le condizioni di bounceback sarebbero applicate ai muri della fessura stessa mentre quelle periodiche sarebbero applicate alle estremità “aperte”. La figura 1.4 mostra la forma risultante di un dominio computazionale che usa questa tipologia di contorni. Figura 1.4: Topologia cilindrica di un dominio con contorno periodico in una direzione. Contorni completamente periodici sono utili in alcuni casi come la simu- lazione di fluidi multifase in un dominio infinito e in questo caso la topologia Università degli Studi di Roma Tre - Dipartimento di Ingegneria 8
Capitolo 1. Teoria alla base del software del dominio computazionale è quella della toroide o toro (figura 1.5) Figura 1.5: Topologia torroidale di un dominio con contorni periodici su due dimensioni Contorni Bounceback Questa tipologia di contorni è particolarmente semplice ed ha giocato un ruolo importante nel rendere gli LBM popolari per le simulazioni di fluidi caratterizzati da geometrie complesse, come quelle dei mezzi porosi. La loro semplicità dipende dal fatto che si deve unicamente stabilire un determinato nodo come ostacolo solido e non è necessario una programmazione speciale. Come si vede nella figura 1.6 i solidi si separano in due tipi: - Solidi di contorno che rappresentano l’interfaccia solido-fluido (nodi neri); - Solidi isolati che non vengono a contatto col fluido (nodi in grigio). Con tale divisione si eliminano nodi computazionali non necessari classifican- doli come inattivi; ciò è molto utile nella simulazione di flussi in mezzi porosi, dove lo spazio realmente occupato dal fluido può essere molto piccolo. Questa tipologia di contorni esistono in diverse varianti e non lavorano perfettamente; tuttavia, con adeguate considerazioni della locazione dei contorni reali e per τ ≈ 1, permettono di ottenere risultati soddisfacenti. Università degli Studi di Roma Tre - Dipartimento di Ingegneria 9
Capitolo 1. Teoria alla base del software Figura 1.6: Esempio di contorno bounceback. Contorni alla Von Neumann Le condizioni al contorno di Von Neumann vincolano il flusso ai confini del dominio; definiscono un vettore delle velocità formato da due componenti, una rispetto la x e una rispetto la y: " # u0 u0 = (1.14) v0 Da questo vettore si può computare la densità o la pressione sulla base delle condizioni all’interno del dominio. La densità (o la pressione macroscopica) è solo una delle incognite che si devono ricavare, infatti è necessario calcolare anche le densità direzionali incognite. Dopo la fase di propagazione vi sono un certo numero di densità direzionali incognite (tre nel caso bidimensionale) per ogni nodo della griglia presente sul contorno (figura 1.7) Queste incognite possono essere trovate mantenendo una determinata velocità nei loro nodi della griglia; per esempio nel caso della figura 1.7 si suppone che la condizione al contorno sia un certo vettore velocità del tipo: " # 0 u0 = (1.15) v0 Università degli Studi di Roma Tre - Dipartimento di Ingegneria 10
Capitolo 1. Teoria alla base del software Figura 1.7: Esempio di densità direzionali incognite in 2D per il contorno nord. I contributi di fa , per a = 1, 2, 3, 4, 5, 6 , sono già conosciuti perché dipendono da altri nodi all’interno del dominio, le incognite sono perciò ρ, f4 , f7 , f8 per cui si ha bisogno di quattro equazioni. La prima equazione è quella della densità macroscopica: X ρ= fa (1.16) a Considerando le singole fs che possono contribuire alle due componenti della velocità, la formula della velocità macroscopica (1.9) permette di ricavare due equazioni, una per ogni direzione: 0 = f1 − f3 + f5 − f6 − f7 + f8 (1.17) ρv0 = f2 − f4 + f5 + f6 − f7 − f8 Una quarta equazione può essere scritta assumendo che la condizione di bounceback sia valida nella direzione normale al contorno, come proposto da Zou e He (1997): f2 − f2eq = f4 − f4eq (1.18) Attraverso queste quattro equazioni è possibile ricavare quindi tutte le incognite. Contorni alla Dirichlet Le condizioni al contorno alla Dirichlet vincolano la pressione/densità al contorno; la loro soluzione è simile a quella delle condizioni alla Von Neumann. È definita una densità ρ0 da cui si ricava la velocità (a una determinata densità è equivalente una determinata pressione poiché vi è una equazione di stato che le lega direttamente fra loro). Si assume che la velocità tangente al contorno sia zero e si risolve per la componente normale ad esso; oltre alla velocità macroscopica sono incognite, Università degli Studi di Roma Tre - Dipartimento di Ingegneria 11
Capitolo 1. Teoria alla base del software anche in questo caso, un certo numero di densità direzionali per ogni nodo della griglia presente sul contorno. Queste incognite possono essere ricavate imponendo una certa densità ρ0 . Facendo riferimento sempre al caso della figura 1.7 le incognite sono quattro: v, f4 , f7 , f8 ; le equazioni che si usano per ricavarle sono le stesse ovvero: P ρ0 = a fa 0 = f − f + f − f − f + f 1 3 5 6 7 8 (1.19) ρ0 v = f2 − f4 + f5 + f6 − f7 − f8 f2 − f2eq = f4 − f4eq La differenza fra le due tipologie di contorni è quindi nelle incognite da trovare in quanto nella prima oltre alle densità direzionali vi è ρ come incognita mentre nella seconda vi è la componente della velocità v. 1.4 Incorporare la gravità La forza dovuta all’accelerazione di gravità è incorporata in un termine di velocità. Si ricorda che: du F = ma = m (1.20) dt Riconoscendo che la densità è proporzionale alla massa e che il tempo di rilassamento τ è il tempo elementare di collisione, l’equazione precedente può essere riscritta come: τF ∆u = (1.21) ρ Dove ∆u è la variazione di velocità. Si può quindi scrivere che: τF ueq = u + ∆u = u + (1.22) ρ Dove ueq è usato nel calcolo di feq al posto della normale u in modo da tener conto delle forze esterne. È possibile aggiungere altre forze usando la stessa tecnica. Università degli Studi di Roma Tre - Dipartimento di Ingegneria 12
Capitolo 2 Software per la simulazione Al fine di risolvere problemi di fluidodinamica, attraverso il metodo Lattice Boltzmann, si utilizza il software new mph. Tale software, sviluppato all’interno del gruppo di Idraulica Numerica sella sezione di Ingegneria Civile, non è dotato di interfaccia grafica e perciò i dati in ingresso ad esso devono essere dati attraverso due tipologie di file di diversa estensione: “.in” sono file di testo che contengono il valore di alcuni parametri necessari alla simulazione numerica e che devono essere posizionati nella cartella dell’eseguibile new mph; “.f90” sono file FORTRAN che devono essere compilati per definire determinati aspetti della simulazione che deve essere effettuata. L’output consiste in una serie di file che possono essere caricati e letti utilizzando il software MATLAB. Il software può permettere di risolvere i problemi anche in analogia dinamica, ipotizzando che: Reexp = Renum (2.1) Dove Reexp rappresenta il numero di Reynolds sperimentale mentre Renum quello dato dalla simulazione numerica. Viene fatta tale ipotesi per poter verificare gli output di questo programma con eventuali casi test di cui si conoscono già i risultati (attraverso apparati sperimentali per esempio). Si ricorda che il numero di Reynolds, che rappresenta il rapporto fra le forze inerziali e quelle viscose, è pari a: UL Re = (2.2) ν Università degli Studi di Roma Tre - Dipartimento di Ingegneria
Capitolo 2. Software per la simulazione Con U e L rispettivamente velocità e lunghezza caratteristica del problema e ν viscosità cinematica (pari a 10-6 m2 /s per l’acqua a 20 °C). Il valore di Reexp è conosciuto mentre i termini che compongono il Renum devono essere impostati utilizzando i file precedentemente nominati; in particolare, imponendo sia il valore della Unum (in genere preso pari a 0.2 per rendere valida l’ipotesi di avere un M a sufficientemente piccolo che permette ai LMB di simulare i fenomeni di idrodinamica) sia quello di Lnum (dipende dalla griglia di calcolo), il valore di νnum è ricavato invertendo la formula del numero di Reynolds. Va specificato che può capitare di rigettare tale ipotesi poiché il valore di τ è troppo piccolo rispetto ai limiti di stabilità. Di seguito vengono trattati i diversi file e il significato dei termini in essi presenti. 2.1 File con estensione ”.in” I file con estensione “.in” sono dei file di testo in cui si hanno da un lato i valori numerici del parametro da settare (è necessario fare attenzione alla tipologia di numero da inserire ovvero se esso deve essere intero o reale) e dall’altro un commento con la descrizione del tipo di parametro; non è necessario modificare tutti i file e di seguito si riportano solo quelli più importanti. 2.1.1 File prob type Tale file definisce il tipo di problema che il software dovrà risolvere. Facendo variare la cifra della prima riga si impone il tipo di problema che il software dovrà risolvere; le tipologie sono: - Singolo fluido (1); - fluido multifase (2); - due fluidi (3); - superficie libera (4); - acque basse (7). 2.1.2 File pars grids In questo file vengono descritte le caratteristiche delle griglie di calcolo. Università degli Studi di Roma Tre - Dipartimento di Ingegneria 14
Capitolo 2. Software per la simulazione Figura 2.1: File prob type.in. Figura 2.2: File pars grids.in. La prima riga definisce il numero di griglie su cui verranno eseguiti i calcoli, mentre le dieci righe successive compongono un blocco che descrive le caratteristiche di ogni eventuale griglia (dovranno essere scritti tanti blocchi quanti il numero di griglie). - 2a riga: il numero di dimensioni della griglia, ovvero se il problema è mono, bi o tridimensionale. - 3a riga: rappresenta il passo fra un nodo e il successivo ed è un valore adimensionalizzato. - 4a , 5a e 6a riga: in questo caso le cifre sono due e rappresentano gli estremi della griglia di calcolo nelle tre dimensioni; l’estensione della griglia non deve essere necessariamente pari all’estensione reale del problema, in quanto si lavora in analogia dinamica, ma deve rispettare ovviamente gli stessi rapporti fra le dimensioni. - 7a riga: rappresenta il Lattice Code. - 10a riga: richiama le forzanti esterne dal file FORTRAN cust forces dll.f90 se c’è il numero 1. - 11a riga: definisce il tempo di rilassamento τ che regola la viscosità del fluido; tale grandezza, come già visto, è legata alla viscosità con la seguente legge: 1 1 1 ν= τ− → τ = 3ν + (2.3) 3 2 2 Università degli Studi di Roma Tre - Dipartimento di Ingegneria 15
Capitolo 2. Software per la simulazione Il valore di τ , perciò, è necessariamente maggiore di 0.5 ma l’instabilità computazionale aumenta tanto più il valore è prossimo ad esso e perciò è necessario che sia strettamente maggiore di 0.5. 2.1.3 File pars Definisce le informazioni necessarie per la trascrizione dei risultati nell’output. Figura 2.3: File pars.in. La prima riga rappresenta i passi della simulazione mentre la seconda il numero di passi tra una scrittura delle grandezze macroscopiche e l’altra. La terza riga esprime invece il numero di passi ogni quanto verrà creato un file di output esteso che permette di poter ricominciare la simulazione da quel punto invece che dall’inizio. L’ultima rappresenta il numero di processori che saranno utilizzati per far girare il software (usando il server universitario si possono utilizzare un numero di processori variabile ma non si consiglia di superare i dieci perché le prestazioni dellla versione attuale del software non scalano significativamente oltre tale valore). 2.1.4 File boundaries Questo dà le condizioni al contorno sulle pareti del dominio di calcolo; anche in questo caso è strutturato a blocchi che devono essere definiti per ogni griglia di calcolo. Figura 2.4: File boundaries.in. Ogni riga è riferita alle condizioni al contorno di una determinata faccia del dominio,ognuna denominata in accordo alla figura 2.5. Nel caso di un fluido alle pareti vi possono essere due condizioni specifiche: Università degli Studi di Roma Tre - Dipartimento di Ingegneria 16
Capitolo 2. Software per la simulazione Figura 2.5: Denominazione facce del dominio. No slip ovvero la velocità è nulla alla parete per l’aderenza del fluido e corrisponde alla cifra 1; Free slip si fissa una velocità non nulla alla parete e si impone con la cifra 4. Fisicamente l’acqua è aderente alla parete ma in prossimità di essa si forma il cosiddetto strato limite: esso è una porzione di spazio in cui vi è una brusca variazione della velocità che varia da zero fino ad un valore non nullo, indipendente dall’interazione con la parete, secondo un profilo logaritmico. Tale strato ha uno spessore tanto più piccolo quanto più il moto è turbolento e, per poter essere ben descritto, si dovrebbe avere un numero di nodi sufficientemente alto all’interno di esso ovvero un passo fra un nodo e l’altro molto piccolo, poco compatibile con l’onere computazionale che si vuole avere. Entrambe le condizioni che si impongono sono quindi delle semplificazioni perché nel primo caso si ha una forma diversa del profilo di velocità rispetto a quello reale mentre nel secondo, imponendo velocità non nulla, non si tiene conto dell’aderenza; si ha necessità di compiere perciò la simulazione con entrambe le condizioni e scegliere quella che meglio rappresenta la situazione reale. Se una estremità del dominio permette di far fuoriuscire il fluido su di essa va imposta la condizione di Zero Gradient, ovvero di gradiente nullo, che corrisponde alla cifra 3; tale condizione impone che ai nodi presenti su tale contorno venga attribuito il valore del nodo immediatamente precedente ad essi, simulando cosı̀ l’ ”assorbimento” del fluido1 . 1 Tale opzione in realtà consente eventualmente anche di avere un flusso entrante. Università degli Studi di Roma Tre - Dipartimento di Ingegneria 17
Capitolo 2. Software per la simulazione 2.1.5 File nesting Questo file permette di poter annidare altre griglie, più fitte, all’interno di quella principale; la prima riga permette di definire il numero di griglie che verranno nestate mentre la seconda legge le caratteristiche che avranno tali griglie. Figura 2.6: File nesting.in. 2.1.6 File pars custom Anche questo file si presenta a blocchi che devono essere definiti per ogni gri- glia presente nel dominio e specifica se è necessario importare delle condizioni dalle librerie (i file FORTRAN). Figura 2.7: File pars custom.in. Si modificano le prime due righe: Mettendo nella prima riga il numero 1 si importano gli eventuali ostacoli presenti nel dominio come ad esempio eventuali setti e pareti; Mettendo nella seconda riga la cifra 1 si importano le condizioni iniziali (per esempio dei livelli idrici). 2.2 File con estensione ”.f90” Tali file rappresentano le cosiddette librerie, ovvero dei file esterni che vengono richiamati dal programma solo se alcuni parametri dei file “.in” (paragrafi 2.1.2 e 2.1.6) sono impostati a tal fine; vengono modificati usando Microsoft Visual Studio attraverso il file cust dll.vfproj. I file da modificare possono essere trovati nella finestra Solution Explorer, all’interno della cartella Source Files, e quelli utilizzati durante lo sviluppo della tesi sono: Università degli Studi di Roma Tre - Dipartimento di Ingegneria 18
Capitolo 2. Software per la simulazione - cust geom dll.f90 ; - cust ic fs dll.f90 ; - cust forces dll.f90. Figura 2.8: cust dll.vfproj aperto in Virtual Studio, zoom sulla finestra Solution Explorer. Per ciascuno bisognerà scrivere delle linee di codice in linguaggio FOR- TRAN al fine di definire tali elementi; ognuno di questi file avrà in input alcune grandezze prese dalla subroutine (per esempio le dimensioni del dominio di calcolo di ciascuna griglia per i primi due). Successivamente tali file dovranno essere compilati usando il comando Build Solution (vedi figura 2.9). Si crea cosı̀ una cartella, denominata x64, dove sarà presente un’altra cartella (rel opt); all’interno di essa bisogna prendere i file cust dll.dll e vars.dll e spostarli nella cartella dove è presente l’eseguibile altrimenti il programma non potrà girare. Di seguito si spiega il funzionamento dei diversi file. 2.2.1 File cust geom dll Questa libreria è utilizzata per specificare la presenza di corpi solidi nel dominio; tale operazione è possibile attraverso la matrice di interi isfluid che ha dimensioni pari a quelle della griglia. Università degli Studi di Roma Tre - Dipartimento di Ingegneria 19
Capitolo 2. Software per la simulazione Figura 2.9: cust dll.vfproj aperto in Virtual Studio, zoom sul comando Build. Figura 2.10: File cust geom dll.f90. Nel caso in cui si voglia definire un ostacolo si deve assegnare il valore 0 agli elementi della matrice corrispondenti ai nodi dove sono presenti i solidi, 3 altrove. Di default le componenti di isfluid hanno valore 3. 2.2.2 File cust ic fs dll Questa libreria è utilizzata per specificare le condizioni iniziali di una simulazione a superficie libera. Figura 2.11: File cust ic fs dll.f90. Analogamente a quanto fatto per la presenza di ostacoli, tale operazione è effettuata assegnando un valore alla matrice isfluid in corrispondenza delle zone inizialmente occupate dal fluido; in tali zone è necessario specificare il valore delle quattro grandezze macroscopiche reali rho, u, v e w, in particolare: - isfluid e rhodovranno essere pari a 1 dove vi è fluido; Università degli Studi di Roma Tre - Dipartimento di Ingegneria 20
Capitolo 2. Software per la simulazione - u, v e w sono le componenti della velocità iniziale del fluido. 2.2.3 File cust force dll Questo file definisce le forzanti esterne attraverso la grandezza vettoriale force; anche in questo caso la grandezza deve essere definita attraverso un numero reale che deve rappresentare una accelerazione. Essendo un vettore, force avrà unicamente tre componenti. Figura 2.12: File cust force dll.f90. 2.3 Post-Process I risultati della simulazione per essere letti devono essere caricati in MATLAB, per far ciò si inseriscono tutti i file della cartella Post Process nella cartella in cui vi sono i file “.in” e quelli di output; quanto presente in Post Process è un insieme di function che possono essere richiamate da uno script di MATLAB per compiere determinate operazioni. Si possono caricare le grandezze di output con la stringa: data={’nomegrandezza’}; start=. . . ; stop=. . . ; load cheap All’interno di data si inseriscono le grandezze che si vogliono studiare attraverso il comando load cheap che permette di caricare le grandezze rho, isf luid, u, v, w, por, omega, mass f s, psi, topo sw; start e stop indicano gli istanti iniziali e finali che si vogliono caricare. 2.3.1 Sliceview Questa function permette di visualizzare la variazione di una grandezza in una determinata sezione con il passare del tempo attraverso un plot. La stringa di codice che la richiama è la seguente: sliceview(data,plane,slice,start,stop,dx,dt,time,boxes) Università degli Studi di Roma Tre - Dipartimento di Ingegneria 21
Capitolo 2. Software per la simulazione Dove: data indica la grandezza di cui si vuole eseguire il plot (si definisce anche la griglia per esempio scrivendo isfl.grid1); plane è il piano che si vuole plottare definibile come ‘xy’, ‘xz’ o ‘yz’; slice è la coordinata della sezione rispetto alla terza dimensione che non viene plottata; start è l’istante iniziale da cui parte il plot (in genere è 12 ); stop è l’istante finale del plot (può valere al massimo instants che è una grandezza che si crea automaticamente e indica il numero di istanti caricati3 ); gli ultimi quattro elementi sono da sostituire con le cifre 1. Per istante si intende non un reale istante di tempo ma l’elemento stampato nell’output secondo il print step scelto nel file pars.in (paragrafo 2.1.3): quindi il secondo “istante” rappresenta l’output scritto al secondo print step e cosı̀ via. Figura 2.13: Esempio di un plot attraverso la function Sliceview. Il plot avrà l’aspetto della figura 2.13; come si può vedere la sezione è colorata con diversi colori, che corrispondono a diversi valori che la grandezza plottata assume, nel caso della figura è isfluid che è una delle grandezze principali, in particolare: 1. il fluido è rappresentato dal colore blu e dalla cifra 1; 2. l’interfaccia fluido-aria è in azzurro e corrisponde al numero 2; 3. l’aria come già detto è rappresentato dal numero 3 ed è in verde; 2 1 corrisponde allo start della function load cheap 3 instants è pari a stop − start + 1 del load cheap Università degli Studi di Roma Tre - Dipartimento di Ingegneria 22
Capitolo 2. Software per la simulazione 4. l’interfaccia fluido-solido è in blu scuro ed è descritta dalla cifra 0; 5. i solidi sono in giallo e rappresentati dal numero 33. Si può notare inoltre in alto a sinistra un riquadro in cui è scritto l’istante che si sta plottando al momento. È possibile modificare alcune caratteristiche del plot andando a commen- tare o meno alcune stringhe del codice della function (vedi figura 2.14) per esempio per scalare meglio la grandezza plottata o modificare o impedire l’avanzamento automatico fra i vari istanti. Figura 2.14: Stringhe di codice da modificare in Sliceview. 2.3.2 Plot del livello idrico Al fine di poter plottare la variazione del livello idrico in un certo punto al variare del tempo si ricorre al comando di MATLAB find che permette di trovare l’indice per cui una certa grandezza rispetta una qualche condizione. Nella figura 2.15 è mostrato un esempio delle righe di codice da scrivere per poter ricavare tale grafico. Figura 2.15: Esempio di codice per il plot del livello idrico. Definiti i punti x e y di cui si vuole effettuare il plot e creato un vettore t che tiene conto dei vari istanti di tempo, si effettua un ciclo for in cui si va Università degli Studi di Roma Tre - Dipartimento di Ingegneria 23
Capitolo 2. Software per la simulazione a ricercare quegli indici della grandezza isfl in cui essa ha valore pari a 24 per i vari istanti; nel ciclo viene creato quindi anche un vettore che raccoglie questi indici e che rappresenta perciò il livello idrico. Si possono usare i grafici cosı̀ ricavati per confrontare quanto calcolato con eventuali risultati dovuti a prove sperimentali; si ricorda che in questo modo si possono estrarre i valori del tirante idrico per i diversi istanti di stampa che però ovviamente devono essere opportunamente dimensionalizzati per poter essere confrontabili con i grafici sperimentali. Per la dimensionalizzazione dei tempi è possibile utilizzando la seguente relazione che lega l’intervallo di tempo fra un istante e il successivo alla viscosità: ∆x2 νnum νexp = νnum → ∆t = ∆x2 (2.4) ∆t νexp Ovviamente per quanto riguarda le altezze è sufficiente moltiplicare quanto estratto per il rapporto fra la lunghezza caratteristica e il numero di nodi scelti per rappresentarla. 2.3.3 Plot 3D È possibile effettuare un plot 3D della simulazione usando le linee di codice in MATLAB visibili nella figura 2.16. Tale codice permette di creare per ogni istante una immagine 3D in un formato a scelta utilizzando il comando print (vedi riga di codice 99) decidendo anche la vista che si vuole dare al dominio, ovvero l’inclinazione che si vuole dare del dominio rispetto ad un asse verticale ed uno orizzontale usando il comando view (riga 89); esso ha il seguente lessico: view([az,el]) Dove az, che sta per azimut, rappresenta la rotazione della figura rispetto all’asse verticale, mentre el, che significa elevazione, è l’angolo di rotazione rispetto l’asse orizzontale; è possibile ovviamente tenere fissi questi due angoli oppure farli variare con l’avanzare degli istanti di stampa. Gli scalari isovalue solid e isovalue fluid sono definiti in modo tale da rendere possibile il plot dei solidi e dei fluidi presenti nella simulazione: un valore di 10 per il primo permette un plot corretto di tutti i solidi mentre per l’acqua è sufficiente un valore maggiore di 1 e minore di 2. 4 N.B. Bisogna fare attenzione che questa condizione sia soddisfatta per tutti gli istanti; in caso contrario si potrebbero trovare gli indici per cui isfl è maggiore o uguale a 2 e prendere il primo di essi oppure imporre che uno 0 se l’indice non è mai uguale a 2, al fine di ricavare comunque un plot. Università degli Studi di Roma Tre - Dipartimento di Ingegneria 24
Capitolo 2. Software per la simulazione Figura 2.16: Stringhe di codice per il plot3D della forma della massa fluida tridimensionale. I vettori color solid e color fluid permettono di scegliere il colore che avranno tali elementi attraverso le loro tre componenti che rappresentano i parametri del modello di colori RGB. 2.3.4 Digitalizzazione di grafici Se non si dispone di file contenenti i risultati delle eventuali prove empiriche con cui si vuole effettuare il confronto con quanto simulato dal modello ma si hanno a disposizione unicamente dei grafici esistono numerosi programmi che permettono di estrarre da immagini dei valori numerici utilizzabili per tale confronto. L’applicazione online Web Plot Digitizer dà la possibilità di effettuare questa operazione; essa permette di caricare una immagine e, dopo aver Università degli Studi di Roma Tre - Dipartimento di Ingegneria 25
Capitolo 2. Software per la simulazione Figura 2.17: Scelta del tipo di grafico su Web Plot Digitizer. scelto il tipo di plot rappresentato (figura 2.17) e fatto una calibrazione degli assi cartesiani di riferimento (figura 2.18), estrarre le coordinate dei punti di interesse (figura 2.19) sia copiando direttamente le coordinate sia scaricandole attraverso un file excel. Figura 2.18: Calibrazione degli assi cartesiani su Web Plot Digitizer. 2.3.5 Montaggio dei frame Può essere utile montare insieme le immagini generate dal codice plot3D per creare un video da inserire in una eventuale presentazione; uno dei programmi che permette ciò è ffmpeg: esso può essere richiamato solo attraverso il prompt dei comandi, come si può vedere in figura 2.20, ma permette di creare video Università degli Studi di Roma Tre - Dipartimento di Ingegneria 26
Capitolo 2. Software per la simulazione Figura 2.19: Estrazione dei punti su Web Plot Digitizer. con diverse opzioni utilizzando determinati comandi; una delle stringhe di comando più semplice è: Figura 2.20: Interfaccia nel prompt dei comandi di ffmpeg. ffmpeg -framerate 2 -i %04d.png -c:v libx264 out.mp4 Questo comando permette in ordine di: - scegliere il framerate che avrà il video (e quindi anche la sua durata complessiva); - prendere tutti i file presenti nella cartella dove è presente l’eseguibile che sono denominati in quel modo, ovvero quelli generati dallo script di MATLAB (ovviamente si possono cercare altri formati oltre al png); - decidere il codec che avrà il file generato (il programma permette di scegliere fra un notevole numero di essi). Università degli Studi di Roma Tre - Dipartimento di Ingegneria 27
Conclusione Dagli studi compiuti sui LMB si evince che essi possono rappresentare una valida alternativa ai normali modelli impiegati per la risoluzione dei problemi della fluidodinamica, senza dover adoperare le equazioni differenziali di Navier-Stokes, e i costanti aggiornamenti a cui sono sottoposti consentono un continuo miglioramento dei risultati da loro offerti. Il software oggetto di studio, sebbene ad oggi non disponga di un’inter- faccia grafica che ne consenta un uso più intuivo e rapido, risulta essere di facile impostazione; inoltre i file necessari al funzionamento sono chiari ed è necessaria solo una minima conoscenza del linguaggio FORTRAN per poter eseguire le simulazioni più semplici. In ultimo, è necessario evidenziare che i risultati acquisiti dalle simulazioni eseguite, benchè non siano di immediata estrazione rendendosi a tale scopo indispensabile il ricorso ad altri tipi di software (quali ad esempio MATLAB, ffmpeg, etc.), possono ritenersi ottimali e adeguati allo scopo prefissato di studio della fluidodinamica. Università degli Studi di Roma Tre - Dipartimento di Ingegneria
Puoi anche leggere