Cas test 1 : Cavity

Dans ce qui suit, nous nous inspirerons essentiellement les conseils donnés sur les sites  suivants:

http://www.openfoam.org/docs/user/cavity.php#x5-40002.1

http://openfoamwiki.net/index.php/How_to_add_temperature_to_icoFoam

Néanmoins, nous tenterons d'effectuer une synthèse ainsi que de souligner notamment les difficultés que l'on pourrait rencontrer. Aussi, dans le prolongement de la cavité entraînée, nous traiterons également de l'ajout d'une équation de température (et on traitera alors de la convection Rayleigh-Benard).

 

 

Tout d'abord, en cas de modification apporté à un tutoriel de base, il faut absolument éviter de modifier directement le cas de base qui constitue une référence. Tout d'abord il convient de créer un répertoire de travail personnel dans lequel effectuer nos modifications en utilisant la commande suivante :

> mkdir -p /work/username/OpenFOAM/username-${WM_PROJECT_VERSION}/run

Puis, il est conseillé de copier les exemples du tutoriel qui se trouvent normalement dans les sources, soit depuis $WM_PROJECT_DIR/tutorials  vers le dossier /work/username/OpenFOAM/username-${WM_PROJECT_VERSION}/run.

Enfin, il ne reste plus qu'à se placer dans les tutoriels dans le solveur de notre choix, pour tester les différents cas test proposés.

 

Dans ce qui nous intéressera dans les prochains paragraphes, on cherchera plutôt à étudier et modifier un cas déjà existant de cavité entraînée, auquel on accède rapidement en entrant la commande suivante :

> cd /work/username/OpenFOAM/username-${WM_PROJECT_VERSION}/run/tutorials/incompressible/icoFoam/cavity

Remarque : ce faisant, on se place dans le fichier de base copié pour le solveur icoFoam, que l'on peut exécuter immédiatement. Toutefois, il serait préférable de copier le dossier cavity au sein même de icoFoam  pour chaque nouvelle modification que l'on apportera.

Cas de la cavité entraînée

 

Tout d'abord, on peut se servir d'un modèle déjà existant pour se faire une idée de la mise en place d'une simulation numérique sous OpenFOAM.

Notre objectif est d'effectuer la simulation numérique du cas suivant :

 

           Figure : Geometry of the lid driven cavity

source : http://www.openfoam.org/docs/user/cavity.php#x5-40002.1

Nous nous plaçons dans le cas d'un écoulement incompressible, d'un fluide Newtonien, en régime laminaire transitoire. Cela correspond au solveur icoFoam que nous utiliserons.

 

 

Tout d'abord, avant de commencer l'étude d'un cas sur OpenFOAM dans un terminal donné, taper la commande : 

> source /mnt/hmf/OpenFOAM/OF21.sh

Sans cela, il se peut que des commandes que l'on appliquera ultérieurement ne soient pas reconnues. Cette commande n'est valide que sur le terminal utilisé, et sera à entrer sur tout nouveau terminal.

Pour étudier ce cas, nous partirons des tutoriaux, qui sont déjà prêt à être lancés. Par conséquent, nous utiliserons la commande suivante pour nous rendre à l'emplacement voulu :

> cd $FOAM_RUN/tutorials/incompressible/icoFoam/cavity

Puis, il possible de directement lancer le cas test avec :

> icoFoam

Enfin, nous pouvons observer les résultats suivant :

> paraFoam

 

Figure : Obtention des résultats d'une simulation existante pour un cas de cavité entraînée

Remarque : le 'Time' indiqué représente le temps physique auquel on est parvenu pour la simulation.

 

 

 

 

Ajout de l'équation de température

Dans ce qui suit, nous nous inspirerons essentiellement des conseils donnés sur le site suivant (en établissant toutefois une synthèse de ce que nous connaissons également pour ne retenir que ce qui reste le plus utile) :

http://openfoamwiki.net/index.php/How_to_add_temperature_to_icoFoam

 

Aussi, nous nous servirons du cas de la cavité entraînée que nous modifierons : en effet, on mettra la vitesse de la plaque du haut à 0 m/s, et nous verrons par la suite comment imposer des températures sur les faces voulues.

Il s'agit d'une modification apportée sur un cas simple, pour un solveur assez simple donné. Ce genre d'ajout peut être bien plus difficile à adapter suivant le solveur employé. Néanmoins, même dans ce cas simple, des modifications non négligeables doivent être apportées au niveau des fichiers sources du répertoire copié.

 

Création du répertoire source modifiable

 

Tout d'abord, il faut se placer au niveau du répertoire run/ dernièrement établi, et y créer le répertoire applications/solvers, comme c'est indiqué par les commandes ci-dessous :

> cd /work/username/OpenFOAM/username-{WM_PROJECT_VERSION}/run

> mkdir -p applications/solvers

> cd  applications/solvers

Puis il faut aller chercher dans les fichiers sources le solveur voulu à copier dans le répertoire solvers/. Par exemple, on copiera le répertoire icoFoam/ sous le nom de exe_icoFoam/, comme c'est indiqué dans les lignes suivantes, pour le cas particulier de la configuration des ordinateurs à l'ENSEEIHT :

> cp -r /mnt/hmf/OpenFOAM/OpenFOAM-2.1.0/applications/solvers/incompressible/icoFoam exe_icoFoam
 

Puis, en se plaçant dans exe_icoFoam/, on trouve divers fichiers d'extension .C, .H, et un dossier Make/. Il convient tout d'abord de détruire comme il suit :

> rm icoFoam.dep

et de renommer comme il suit :

> mv icoFoam.C exe_icoFoam.C

Puis, dans le dossier Make/ :

> rm -rf linuxGccDP0pt

De plus, il ne faut pas oublier de changer dans le fichier files les lignes avec 'icoFoam' en :

exe_icoFoam.C

EXE = $(FOAM_USER_APPBIN)/exe_icoFoam

Finalement, on peut vérifier que l'installation renommée marche à l'aide de la commande :

> wmake

Aussi, si tout a bien fonctionné, un fichier nommé exe_Foam devrait apparaître au niveau du répertoire suivant :

> ls $FOAM_USER_APPBIN

 

 

Modifications à apporter au niveau du code source

 

Une fois que l'on a  effectué ces modifications, il convient à présent d'ajouter les champs de température au coeur même des équations à résoudre. Ainsi, en ouvrant le fichier createFields.H, on aura :

                                               

Puis, après avoir ajouté la grandeur température à l'ensemble des grandeurs résolues, on implémente désormais la nouvelle équation à résoudre en ouvrant le fichier exe_icoFoam.C et en procédant comme indiqué ci dessous :

                               

 

Attention ! Ce travail terminé, enregistrer les résultats, et exécuter dans exe_icoFoam/ la commande  :

> wmake

Si aucun message d'erreur apparaît, on peut procéder aux modification au sein du fichier du cas étudié.

 

Modifications à apporter au sein du fichier du cas étudié

 

Il est tout d'abord fortement recommandé de copier le cas étudié, par exemple dans notre cas le dossier cavity/ qui se trouve dans usernamel/OpenFOAM/username-2.1.0/run/tutorials/incompressible/icoFoam ("username-2.1.0" car la version d'OpenFOAM utilisée est ici 2.10), dans le répertoire run/ de l'arborescence de fichiers manipulée, et peut-être de le renommer cavity_T/

Puis, en se plaçant dans cavity_T/, aller dans le répertoire constant/ et ajouter les lignes suivantes dans le fichier transportProperties :

DT            DT [0 2 -1 0 0 0 0] 0.002;

Cette ligne s'ajoute à la suite de la ligne sur la viscosité cinématique, avec la même structure. Pour l'instant, la valeur numérique importe peu.

Enfin, aller dans le répertoire 0/ et créer le fichier T comme il suit :

                                            

Remarque : il est important de bien retrouver les noms des faces définies dans le fichier blockMeshDict. Quand aux conditions limites, nous avons ici repris l'exemple qui est communément répété.

Enfin, en allant dans le répertoire system/, il y a deux dernier fichiers à modifier. 

Le fichier fvSchemes de la manière suivante :

Et le fichier fvSolution :

 

 

Quand tout ce travail est fini et sauvegardé, il suffit de se placer dans cavity_T/, et d'exécuter les commandes :

> source /mnt/hmf/OpenFOAM/OF21.sh                 (si cela n'a pas déjà été fait)

> blockMesh                                                                 (juste pour être sûr)

> exe_icoFoam

Si aucun message d'erreur apparaît, il doit être possible d'observer les résultats obtenus via paraFoam.