Description des fichiers

Le dossier 0

 

Ce dossier contient les valeurs initiales et les conditions limites des différentes grandeurs. Les conditions aux limites sous OpenFOAM est le point le plus délicat. Leur rôle dans la modélisation n'est pas simplement dans la géométrie, mais représentent une partie intégrale de la solution.  Dans cette partie nous allons nous focaliser sur ce point, et nous discuterons la façon dont elles sont traitées sous OpenFOAM. Chaque grandeur à résoudre (U,p,k...) par le solveur doit être initialisée sur toutes les zones du cas ainsi qu'à l'intérieur du domaine.

Il faut bien noter que toute frontière est généralement divisée en un ensemble de ce qu'on appelle "patch". Chaque patch peut contenir une ou plusieurs zones fermées de la frontière en question, qui ne sont pas nécessairement connectées physiquement.

Il y a trois attributs qu'on peut associer à un "patch" :

  • Base type : Cet attribut est purement géométrique. Il est défini dans le fichier boundary localisé dans le sous-dossier constant/polyMesh/. Il faut bien noter que pour cet attribut, tous les patches sont de type "patch", sauf ceux qui présentent une contrainte géométrique : empty, symmetryPlane, wall, wedge, cyclic,processor .

Brièvement nous allons expliquer ce que chaque type signifie.

patch : Concerne une frontière qui ne contient aucune information géométrique ou topologique (par exemple une entrée ou une sortie).

empty : Comme OpenFOAM ne génére que des maillages 3D, quand l'utilisateur veut résoudre un problème 2D, il faut spécifier une condition particulière vide sur les frontières qui nécessitent aucune solution.

cyclic : Permet de traiter deux patches comme étant connectés physiquement. Ceci est utile pour les géométries répétées (un faisceau de tubes par exemple).

processor : Cette option permet de diviser le maillage, afin que chaque partie soit traitée par un processeur si le code tourne en parallèle, ce qui est pratique pour les géométries compliquées avec un maillage très lourd.

Le fichier boundary qui contient cet attribut est de la forme suivante :                   

                      

 

  • Primitive et Derived type : Ces deux attributs sont spécifiés dans le dossier 0/ pour chaque grandeur. Bien évidemment ces types sont différents selon la grandeur. Une vitesse et une pression n'auront pas la même condition en la même frontière.

Il y a de nombreux types de zones possibles, les types classiques et leur description sont présentés dans le tableau suivant : 

    Type Description
fixedValue Valeur fixée par l'utilisateur.
zeroGradient Gradient normal à la zone nul.
fixedGradient Gradient normal à la zone fixé.
inletOutlet fixedValue lorsque la zone est une inlet et zeroGradient dans le cas contraire.
totalPressure La pression totale est constante, quand U changes, p est ajusté (vice-versa).

pressureInletVelocity

Quand p est connu à l'entrée, U est évaluée à partir du flux normal à la frontière en question.
pressureInletOutletVelocity Combinaison de pressureInletOutlet et InletOutlet.
calculated La grandeur est déduite des autres grandeurs.

Ces attributs sont présentées dans le dossier 0/ de la façon suivante (on considère la grandeur vitesse U) :

                     

 

 

Le dossier constant

 

Ce dossier contient les paramètres nécessaires pour le maillage et les constantes du problème (propriétés du fluide,....). 

La génération du maillage se fait dans le sous-dossier polyMesh/ et la définition des constantes du problème se fait dans des fichiers ...properties/.

 

Génération du maillage :

Avant tout il faut bien noter qu'OpenFOAM ne prend que des maillages 3D (Si le problème est 2D, il faut créer une maille d'épaisseur). 

Comme nous l'avons déjà mentionné, OpenFOAM offre deux outils de maillages : blockMesh et snappyHexMesh.

Le premier est destiné pour créer un maillage structuré à partir d'un ou plusieurs blocs géométriques juxtaposés les uns aux autres. Ce type de maillage se fait à partir du fichier blockMeshdict. BlockMesh lit ce fichier, génére le maillage et écrit les données du maillage : les fichiers pointscellsboundary dans le même répertoire constant/polyMesh/.

Le principe de cet outil est de décomposer la géométrie du domaine en un ou plusieurs blocs hexaèdriques tridimensionnels. Les bords des blocs peuvent être des lignes ou des arcs. Chaque bloc de la géométrie est définie par 8 sommets, un à chaque côté de l'hexaèdre. Il est possible aussi de générer des blocs de moins de 8 sommets (en repliant une ou plusieurs paires de sommets).

La structure du fichier blockMeshdict est par exemple :

                              

Cet outil est certes simple à manipuler, cependant, pour des géométries complexes, il s'avère impuissant et demande un travail et temps de calcul laborieux.

Le deuxième outil de maillage d'OpenFOAM (snappyHexMesh) permet quant à lui de modifier un maillage déjà existant (fait par exemple par blockMesh)  à l'aide d'une géométre surfacique.

Pour expliquer le principe de cet outil, on considère l'exemple suivant :

Nous voulons mailler un domaine autour d'une géométrie quelconque (avion, voiture ..), pour utiliser cet outil de maillage, il y a trois étapes à suivre :

  • Créer la géométrie de l'objet sous format STL (StereoLithography), binaire ou en ASCII qui se trouve dans le sous dossier constant/trisurface/ du cas étudié.
  • Créer un simple maillage de type blockMesh du domaine entourant l'objet .
  • Appliquer l'outil snappyHexMesh pour faire le reste, ce qui permet un processus de raffinement automatiquement et en un temps de calcul beaucoup plus par rapport à un autre logiciel de maillage.

Cet outil a plusieurs atouts intéressants : il permet de raffiner à l'endroit où l'utilisateur veut facilement, ainsi, il peut à l'entrée de cet algorithme imposer des critères de qualité du maillage, et qu'ils soient respecté dès le début en cours des itérations.

 

Les fichiers ...properties/  :

Ces fichiers permettent de renseigner le solveur quand aux propriétés de l'écoulement.

Nous pouvons classer ces fichiers en deux catégories :

  • Les fichiers  qui contiennent les propriétés physiques, thermiques et énergétiques de notre système, par exemple : TransportpropertiesmixturepropertiesThermophysicalmodel...

Exemple du fichier transportproperties (extrait de notre projet) :

                    

  • Les fichiers qui contiennent des informations sur la modélisation de la turbulence. Le fichier turbulenceproperties définie l'approche de modélisation adoptée (RANS,LES). Et si par exemple l'utilisateur choisit l'approche RANS, on spécifie dans le fichier RASproperties le modèle adopté (de même pour LES)

                  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Remarque Les coefficients qui interviennent dans un modèle de turbulence donné, sont par défaut définis. Cependant, l'utilisateur peut définir d'autres coefficients.

Le dossier system

 

Ce dossier contient trois fichiers indispensables pour lancer une simulation par OpenFOAM.

 

Le fichier Controldict 

Ce fichier permet de paramétrer le pas de temps et la création de la base de données. La syntaxe du fichier est la suivante :

                  

Tout le contenu de ce fichier est détaillé dans les lignes suivantes :

Application : Définie le solveur utilisé (par exemple : buoyantBoussinesqSimpleFoam).

Startfrom : Le type sur lequel le solveur va s'accrocher.

Starttime : Le temps pour lequel le solveur va s'accrocher pour commencer les itérations.

StopAt :  Détermine le type sur lequel le solveur va se baser pour arrêter les itérations.

endTime : Le temps au bout dulequel le solveur va s'arrêter.

deltaT : Définie le pas de temps de la simulation.

writecontrol : Détermine le type pour générer un dossier temporel, par exemple générer un dossier tous les n pas de temps "timestep" ou les n secondes simulées "runtime".

writeinterval : Détermine le nombre de pas de temps ou de secondes simulées entre deux dossiers temporels.

purgeWrite : Permet de préciser le nombre de dossiers temporels à garder sur le disque dur au fur et à  mesure des itérations.

writePrecision : Permet de paramètrer la précision des données de sortie (un autre avantage par rapport à fluent par exemple).

writeCompression : Permet de choisir si l'utilisateur veut générer des fichiers compressés en sortie ou non (gain de mémoire).

timeFormat : Permet de choisir le format des noms des dossiers temporels.

runTimeModifiable : Cette option intéressante permet de faire des modifications de ce fichier "controdict" en cours des itérations et instantanément.

 

Le fichier fvschemes 

Ce fichier permet de choisir les schémas numériques pour la résolution discrétisée des équations aux dérivées partielles. Dans ce fichier l'utilisateur détermine la méthode de résolution des opérateurs mathématiques (divergence, laplacian, gradient), ainsi que le type d'interpolation des valeurs. OpenFOAM offre un large choix que ce soit pour le type d'interpolation (default linear par exemple), ou pour le type de discrétisation.

Pour plus d'informations sur les différents schémas et la particularité de chacun, veuillez consulter le lien suivant:http://www.openfoam.org/docs/user/fvSchemes.php#x20-1070004.4

 
Le fichier fvSolution 
 
Le fichier fvSolution permet de préciser les critères de convergence des différentes grandeurs. En effet, dans ce fichier l'utilisateur peut fixer le solveur pour la discrétisation d'une grandeur donnée, la tolérance ainsi que les algorithmes de contrôle.
La tolérance représente la valeur du résidu à partir duquel les itérations cessent.
Le relTol représente le rapport du résidu final sur le résidu initial en dessous duquel les itérations s'arrêtent. En général ce paramètre est nul, ce qui veut dire que le résidu descend en dessous de la tolérance.
Avant de résoudre une équation pour une grandeur donnée, le résidu initial est basé sur les valeurs existantes de cette grandeur. Après chaque itération, le résidu est réévalué. les itérations s'arrêtent si l'une des conditions suivantes est remplie :
  • Le résidu est inférieur à la valeur de la tolérance du solveur.
  • Le rapport du résidu courant sur le résidu initial descend en dessous du relTol.
  • Le nombre d'itérations dépasse un nombre maximum maxiIter.

​​Ce fichier se présente sous OpenFOAM de la façon suivante :

       

​Pour plus d'informations, veuillez consulter le lien suivant :http://www.openfoam.org/docs/user/fvSolution.php