About the author
- Nome
- Marco Vito Moscaritolo
- Professione
- Docente
- Istruzione
- Ingegneria Chimica
- Età
- 25
In questo articolo vedremo come è possibile ottimizzare le prestazioni per il calcolo di una semplice geometria utilizzando delle griglie appropriate ed in particolare come varia la velocità di calcolo per griglie costituite da triangoli o quadrangoli, oltre che in base alla densità della griglia di calcolo.
Come dominio si è utilizzato quello rappresentato nella seguente figura (le dimensioni sono indicate in metri):

Il tutto è stato risolto per un caso bidimensionale e usando il risolutore
simpleFoam (ovvero adatto a un fluido non comprimibile e viscosità costante) e usando le caratteristiche tipiche dell'acqua. E' evidente che nel caso di geometrie tridimensionali le differenze che si riscontreranno saranno ancora più accentuate.
L'ingresso avviene dalla parete superiore sinistra (INLET) con una velocità di 5m/s e l'uscita è dalla parete inferiore destra (OUTLET) dove viene ipotizzata una pressione nulla opposta al flusso del fluido.
Le ipotesi per le pareti sono di assenza di scorrimento lungo di esse.
Le mesh sono state generate tramite
gmsh e utilizzando dei parametri, per permettere di modificare la densità della griglia di calcolo senza dover ricostruire il modello per le differenti mesh. Potete scaricare i file necessari per la generazione di mesh
triangolari e
rettangolari.
Per le mesh rettangolari il parametro da modificare per variare la densità della griglia è
nm che indica la quantità di elementi in cui viene suddiviso ogni decimetro della struttura, è evidente che la densità della griglia è proporzionale al quadrato di questo parametro ed in particolare il numero di elementi che la compongono è pari a:
180 * nc^2
Per la modificare la densità delle mesh triangolari è necessario modificare il parametro
lc che indica quanto densa deve essere la griglia.
La generazione della mesh viene effettuata da shell tramite il seguente comando:
gmsh -3 file_input.geo -o file_mesh.msh
ove, ovviamente, andranno utilizzati i nomi appropriati per i file in ingresso e uscita.
Per la realizzazione del caso da studiare tramite OpenFOAM si rimanda agli articoli precedenti, in particolare si veda
Esempio di simulazione con OpenFOAM e
Seconda simulazione.
L'importazione della mesh prodotta precedentemente a gmsh avviene tramite il comando:
gmshToFoam root case file_mesh.msh
Dove ovviamente andranno modificati i parametri necessari.
Di seguito sono riportate le mesh ricavate. Per ognuna di esse trovate il tipo di elementi utilizzati per la realizzazione della griglia di calcolo il valore del parametro (nm o lc) utilizzato e il numero di elementi che la compongono. Per evitare di inserire molte immagini ripetitive viene riportato solo la mesh meno densa, le altre le pote visualizzare presso seguendo i link indicati.
Maggiori informazioni su ogni griglia possono essere ottenuti tramite il comando
checkMesh.
Mesh triangolari

Triangolare - lc = 0.07 - 752
Mesh rettangolari

Rettangolare - nm = 2 - 720
Una volta terminata l'importazione della mesh è necessario andare a modificare le tipologie delle pareti, in particolare è necessario settare, dal file
case_name/constant/polyMesh/boundary:
- patch0 - patch
- patch1 - patch
- patch2 - patch
- patch3 - empty
- defaultFaces - empty
Trovate il file
boudary già pronto per uno dei vari
casi che andremo risolvere in questo articolo.
L'operazione successiva è l'impostazione delle condizioni al contorno della nostra simulazione. Trovate un esempio già completo allegato a questo articolo.
Per l'esecuzione della comparazione sono state effettuate diverse prove per le farie tipologie di mesh in base al numero di elementi che la compongono. Come macchina di calcolo è stata utilizzata una CPU ADM 1700+ (operante a 1466MHz) equipaggiata di 768MB di RAM (operante a 200MHz) su cui si trova un sistema Linux con kernel 2.6.17.10
A seguito delle simulazioni svolte si sono riscontrati i seguenti risultati:
Mesh triangolare
| Numero di elementi della griglia | Tempo di calcolo (s) * |
| 752 | 22,64 |
| 1451 | 47,03 |
| 2329 | 84,79 |
| 4106 | 203,42 |
| 9327 | 902,25 |
| 16528 | 2481,25 |
Mesh rettangolare
| Numero di elementi della griglia | Tempo di calcolo (s) * |
| 720 | 15,74 |
| 1620 | 45,82 |
| 2880 | 99,2 |
| 4500 | 216,4 |
| 11520 | 1168,88 |
| 18000 | 2592,17 |
*) Il tempo di calcolo è stato misurato considerando l'utilizzo effettivo della CPU, escludendo i tempi di I/O sull'hard disk della macchina usata come sistema di calcolo. Nel caso si fosse utilizzato un sistema di calcolo distribuito sarebbero stati esclusi i tempi di latenza della rete che portano ad un aumento ulteriore del tempo di risoluzione.
Di seguito è visibile il grafico che paragona le prestazioni (come tempo di calcolo) ottenuto utilizzando le due diverse tipologie di griglie, ove risulta evidente una diminuzione di circa il 10% delle tempistiche di calcolo per le griglie rettangolari rispetto le griglie con pari numero di elementi triangolari.

I risultati ottenuti per le diverse simulazioni svolte sono stati graficati considerando a velocità del flusso dopo 100 e 1000 secondi dall'inizio del flusso per ogni tipo di griglia risolta. Onde evitare di rendere troppo lungo il seguente articolo potete visualizzarle cliccando sui link seguenti.
Mesh triangolari
Mesh rettangolari
Per i nostri fini ci limitiamo a considerarne alcune, in particolare è evidente che, per griglie rettangolari, quindi caratterizzate da una elevata regolarità, usando un numero insufficiente di elementi (inferiori al migliaio) il sistema non porta ad una soluzione stabile, infatti come risultato si ha
solution singularity. Ciò non avviene per mesh triangolari, poiché le irregolarità nella griglia portano il sistema ad essere più elastico e a gestire anche situazioni limite (seppur con tutte le approssimazioni che ne derivano).
Utilizzando un numero di elementi della griglia maggiori (ma inferiori alla decina di migliaia) si può notare che in entrambi i casi (mesh triangolari e rettangolari) a 100s dall'inizio non si notano in maniera evidente le ricircolazioni dei flussi in prossimità della parete sinistra inferiore e dei due setti intermedi.

Aumentando il numero di elementi della griglia (superiore alla decina di migliaia) il sistema tende a rappresentare im maniera più precisa il sistema reale, a scapito dei tempi di calcolo necessari. E' altresì evidente che aumentando il numero di elementi della griglia tende a ridursi la differenza dei risultati ottenuti tra mesh rettangolari e triangolari.

E inoltre arrivando a 1000s dall'inizio i risultati ottenuti sono gli stessi:
Post new comment