header blog

Blog R&D

Storie di innovazione e facili tutorial per conoscere il mondo dell'opensource

Guida pratica ad OpenFOAM - #1 mesh

Questa guida è una traduzione in italiano, un po' rivisitata, dell'ottima “Tips and tricks in OpenFOAM” scritta dai ragazzi di www.wolfdynamics.com che ringrazio personalmente.

This is just a translation, if you are looking for the english version take a look at the complete original guide written by the guys of www.wolfdynamics.com


Capitolo #1 : la mesh – trucchi e suggerimenti

mesh OF

 

A livello generale per qualsiasi software CFD ai volume finiti la mesh, o griglia di calcolo, è un elemento fondamentale per la buona riuscita della simulazione. Ricordate che il computer per definizione è un moltiplicatore, pertanto: spazzatura in ingresso = spazzatura in uscita, oppure rileggendolo in forma positiva: buona mesh = buoni risultati. A fronte dell’esperienza maturata negli anni non mi stancherò mai di ripeterlo in questa guida: per ottenere risultati di qualità serve  una mesh di altrettanta buona qualità, una mesh non idonea porta a risultati falsati, quindi totalmente inutili, o addirittura “all’esplosione” della simulazione per mancata convergenza. Provare a correggere la simulazione attraverso schemi di risoluzione più robusti può migliorare la situazione ma non è in grado di risolverla completamente. Il consiglio è sempre quello di rigenerale la mesh (anche se costa ore di calcolo) e quindi procedere con la simulazione. Ma come faccio a sapere se la mia mesh è idonea?


checkMesh

Ogni programma ha il suo strumento di analisi e pertanto anche OpenFOAM ha la sua utility: checkMesh che è possibile lanciare dal terminale aperto nella cartella della simulazione. checkMesh, come dice il nome stesso, controlla la mesh presente nella cartella e fornisce un report finale che indica la presenza o  meno di errori e la loro tipologia.

checkMehs inoltre è in grado di salvare tutte le celle “difettose” (inclusi le facce e i punti problematici) in un dataset all’interno della cartella constant/polyMesh/sets/. Convertendoli in formato VTK attraverso il comando foamToVTK è possibile aprire questo dataset in paraFoam o paraview e visualizzare direttamente cosa “non piace” a OpenFOAM della vostra mesh.


Linee guida generali per una mesh a scopo CFD.

Queste regole sono valide anche per altri software, cito ad esempio Code_Saturne sviluppato dall’EDF, in quanto sono “naturale conseguenza” delle dinamiche risolutive del metodo ai volumi finiti. Facendo una breve lista:

  • Minimizzare il più possibile la non-ortogonalità tra le celle
  • Evitare rapporti di forma troppo elevati nelle celle, specialmente vicino alle condizioni al contorno
  • Evitare fattori di crescita (growth rate) troppo elevati in quanto portano a gradienti di dimensione cella troppo forti (zone a celle molto piccole vicino a celle troppo grandi)
  • Evitare inoltre forti gradienti dimensionali in direzione normale alle condizioni al contorno vicino agli ingressi e all’uscita del fluido
  • Come regola generale nelle pareti sottili: discretizzare lo spessore facendo in modo che vi siano almeno 3 o più celle. A questo scopo tornano molto utili le funzioni layer-mesh definite anche viscous-layer durante la formulazione della mesh.

Suggerimento finale : renumberMesh

Prima di lanciare una simulazione può essere molto utile eseguire il comando renumberMesh. Questa utility rinumera la mesh compattandone la banda e rendendola quindi più facilmente risolvibile. Ciò significa che il risolutore lineare sarà in grado di procedere più velocemente (almeno per i primi time-step) ed è pertanto un’ottima abitudine da eseguire sempre dopo  il checkMesh e prima dell’inizio del calcolo, specialmente per le mesh di grandi dimensioni.

 Allegato: Esempio di analisi checkMesh,

Come si può vedere è il programma stesso a darci un esplicito OK alla simulazione alla fine di tutti i suoi controlli.

1. Mesh statistics

   points:           882
   internal points:  0
   faces:            1640
   internal faces:   760
   cells:            400
   boundary patches: 3
   point zones:      0
   face zones:       0
   cell zones:       0

Overall number of cells of each type:
   hexahedra:     400
   prisms:        0
   wedges:        0
   pyramids:      0
   tet wedges:    0
   tetrahedra:    0
   polyhedra:     0

2. Checking topology...

   Boundary definition OK.
   Cell to face addressing OK.
   Point usage OK.
   Upper triangular ordering OK.
   Face vertices OK.
   Number of regions: 1 (OK).

Checking patch topology for multiply connected surfaces ...
   Patch               Faces    Points   Surface topology                  
   movingWall          20       42       ok (non-closed singly connected)  
   fixedWalls          60       122      ok (non-closed singly connected)  
   frontAndBack        800      882      ok (non-closed singly connected)  

3. Checking geometry...

   Overall domain bounding box (0 0 0) (0.1 0.1 0.01)
   Mesh (non-empty, non-wedge) directions (1 1 0)
   Mesh (non-empty) directions (1 1 0)
   All edges aligned with or perpendicular to non-empty directions.
   Boundary openness (8.47033e-18 -8.47033e-18 -5.901e-17) OK.
   Max cell openness = 1.35525e-16 OK.
   Max aspect ratio = 1 OK.
   Minimum face area = 2.5e-05. Maximum face area = 5e-05.  Face area magnitudes OK.
   Min volume = 2.5e-07. Max volume = 2.5e-07.  Total volume = 0.0001.  Cell volumes OK.
   Mesh non-orthogonality Max: 0 average: 0
   Non-orthogonality check OK.
   Face pyramids OK.
   Max skewness = 1e-08 OK.
   Coupled point location match (average 0) OK.

4. Conclusion

Mesh OK.
fShare
0
L.THEME