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
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.