Apprendimento del metodo Lattice Boltzmann e del codice di calcolo ad esso relativo

Pagina creata da Melissa Pappalardo
 
CONTINUA A LEGGERE
Apprendimento del metodo Lattice Boltzmann e del codice di calcolo ad esso relativo
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
Apprendimento del metodo Lattice Boltzmann e del codice di calcolo ad esso relativo
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
Apprendimento del metodo Lattice Boltzmann e del codice di calcolo ad esso relativo
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
Apprendimento del metodo Lattice Boltzmann e del codice di calcolo ad esso relativo
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
Apprendimento del metodo Lattice Boltzmann e del codice di calcolo ad esso relativo
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