Mise en place des calculs

La mise en place de ce calcul, nécessite d'abord la création d'un répertoire contenant les fichiers où seront décrits les différents paramètres physiques et numériques, indispensables pour la simulation.

Pour ce, nous nous place dans le répertoire /heatTransfer/buoyantBoussinesqSimpleFoam où nous pouvons copier le tutoriel hotRoom sous un nouveau nom  > cp  -r  hotRoom  plaque, et comme pour tout calcul sous OpenFOAM, nous modifions les fichiers correspondants aux paramètres physiques, contenus dans les répertoires 0 > gedit 0/* & , ainsi que les paramètres numériques contenus dans /systeme, sans oublier de vérifier le maillage, les propriétés thermophysiques, le sens de la gravité et le modèle de turbulence, dans le répertoire /constant.

 

Une première tentative de mise en place du calcul, avec les profils de vitesse et de température non-uniforms en entrée, n'aboutit finalement pas et l'on obtient le message d'erreur ci-dessous:

--> FOAM FATAL ERROR : Continuity error cannot be removed by adjusting the outflow.

Please check the velocity boundary conditions and/or run potentialFoam to initialise the outflow.

Cette erreur est due à une discontinuité entre le profil des vitesses, non nul, imposé en entrée avec la condition dans le le domaine intérieur: internalField U (0 0 0).

Pour résoudre ce problème de discontinuité, nous passons par une étape intermédiaire, qui revient à lancer un nouveau calcul via le solveur potentialFoam.

 

Calcul sous PotentialFoam

PotentielFoam est un solveur d'écoulement potentiel qui peut être utilisé pour initialiser le domaine et résoudre tout problème de discontinuité.

Il suffit donc de se placer dans basic/potentialFoam/, de copier le cas "cylinder" sous un nouveau nom et ensuite récupérer le fichier des vitesses U crée précédemment.

Les résultats de ce calcul doivent être copiés dans le répertoire 0 du calcul sous buoyantBoussinesqSimpleFoam.

 

Calcul sous buoyantBoussinesqSimpleFoam

  • Calcul en parallèle

Il est relativement facile de faire fonctionner un calcul en parallèle, sur plusieurs processeurs. Il convient tout d'abord de copier le fichier decomposeParDict dans le dossier system du cas de calcul

> cd system

>  cp OpenFOAM/user/run/tutorials/multiphase/interFoam/ras/damBreak/system/decomposeParDict

Le fichier decomposeParDict peut être détaillé de la façon suivante :

Pour obtenir davantage de renseignements, le site suivant permettra de fournir davantage d'explications (notamment sur la manière de faire du calcul en parallèle en utilisant plusieurs machines d'un même réseau) :

http://www.openfoam.org/docs/user/running-applications-parallel.php#x12-820003.4

Dans notre cas, nous utiliserons directement le fichier copié tel quel, puisque nous voulons travailler en utilisant pour une unique simulation les 4 processeurs d'une même machine.  Ainsi, il convient de faire :

> cd nom_du_cas

> decomposePar

A ce stade, des dossiers processor*/ ont du apparaître. On vient de partager les domaines voulus sur les quatre processeurs. Enfin, on lace le calcul avec la commande générale :

mpirun --hostfile <machines> -np <nProcs> <foamExec> <otherArgs> -parallel > log &

Soit, dans notre cas simple :

> mpirun -np 4 buoyantBoussinesqSimpleFoam -parallel > log &

 

On peut surveiller l'évolution du calcul en surveillant l'évolution du fichier "log", en entrant :

> tail -f log

Une fois que le calcul est terminé, il faut rassembler les résultats :

> reconstructPar

 

On obtient maintenant les divers répertoires pour les différents temps physiques voulus, et on peut exécuter le post-traitement habituel avec :

> paraFoam

 

  • Convergence de la simulation:

Afin de vérifier la convergence de la simulation, un calcul des résidus peut se faire via la commande:

> pyFoamPlotRunner.py buoyantBoussinesqSimpleFoam