Projet : La convection naturelle le long d'une plaque verticale

Calcul numérique ERCOFTAC : Mise en place de la simulation numérique

Nos premières simulations on été effectuées pour représenter uniquement la géométrie introduite par le site ERCOFTAC (cas 09).

Ainsi, notre domaine de calcul se réduira à la zone où la couche limite turbulente est pleinement développée.

 

 

 

 

 

 

Analyse théorique et étude préliminaire

Dans cette partie, nous présentons les équations analytiques qui permettent de décrire ce problème de couche limite turbulente.

Pour simplifier le problème, nous ferons les hypothèses les hypothèses suivantes :

  • On considère que le problème est 2D plan $ \Rightarrow$ $  \frac{\partial} {\partial z} =0 $ et Uz=0.
  • On considère que le problème est stationnaire $ \Rightarrow$ $ \frac{\partial} {\partial t} =0 $.
  • On suppose que l'air est un gaz parfait.
  • On considère que l'écoulement suit l'hypothèse de Boussinesq, i.e les propriétés du fluide (l'air) sont constantes, sauf la masse volumique $ \rho $ dans le terme des forces de volume (la gravité) qui ne dépend que de la température T.

          $ \frac{\rho}{\rho_r} = 1 - \beta (T-T_r) $

Avec :   $T_r$  : La température de référence, pour notre cas $T_r = 15°C $

              $\rho_r$ : La masse volumique de référence.

              $\beta $ : Le coefficient de dilatation thermique (en K-1)
 
Par définition, $\beta = - \frac{1}{\rho} \frac{d \rho}{d T}(T=T_r)$ , pour un gaz parfait (notre cas) $\beta =\frac{1}{T_r} $ .
A.N     $\beta = 3.47 1e-3 $
  • On suppose que $ \frac{\partial} {\partial y} >>  \frac{\partial} {\partial x} $ .

Avec ces hypothèses, les équations de conservation en couche limite en convection naturelle sont :

L'équation de continuité :

               $ \frac{\partial U} {\partial x} +  \frac{\partial V} {\partial y} =0 $

L'équation de conservation de quantité de mouvement :

$ U \frac{\partial U} {\partial x} + V \frac{\partial U} {\partial y}  =  \frac{\partial }{\partial y} (\nu \frac{\partial U}{\partial y})+ g \beta (T-T_r) $

Quant à l'équation de l'énergie (ou de la température), puisqu'en convection naturelle, l'écoulement est à faible nombre de Mach (vitesses faibles associées à la convection naturelle), donc pas de terme de dissipation, par suite cette équation donne :

L'équation de l'énergie :

$ U \frac{\partial T} {\partial x} + V \frac{\partial T} {\partial y}  = \frac{\partial  }{\partial y} (\alpha ​\frac{\partial T}{\partial y}) $

On remarque bien que le terme de flottabilité couple le problème hydrodynamique et le problème thermique. Certes le modèle de Boussinesq complique le problème par rapport à celui du problème incompressible, mais c'est beaucoup plus simple que celui compressible.

Nous pouvons à ce stade, mener une étude dimensionnelle pour quantifier les paramètres adimensionnels qui contrôlent notre problème. En adimensionnalisant les équations précédentes, on voit bien l'apparition du fameux nombre de Grashof   : $ Gr_L=\frac{\beta g L^3 (T_w-T_a)}{\alpha^2} $. Ce nombre qui compare l'effet des forces de flottabilité à celui des forces visqueuses, joue le même rôle que celui du nombre de Reynolds en convection forcée. Et donc pour comparer l'effet de la convection naturelle à celui de la convection forcée, il suffit de comparer le nombre de Grashof et la racine du Reynolds.

 

Modélisation de la turbulence :

Pour modéliser la turbulence, nous allons nous baser dans un premier temps sur la résolution RANS. Cette approche consiste à moyenner les équations précédentes (moyenne d'ensemble) en utilisant la décomposition de Reynolds.

​Avec les mêmes hypothèses précédentes, on obtient :

L'équation de continuité :

$ \frac{\partial \mathbf{U}} {\partial x} +  \frac{\partial \mathbf{V}} {\partial y} =0 $

L'équation de conservation de quantité de mouvement :

$ \mathbf{U} \frac{\partial \mathbf{U}​ } {\partial x} + \mathbf{V} \frac{\partial \mathbf{U}} {\partial y}  =  \frac{\partial}{\partial y} (\nu \frac{\partial \mathbf{U}}{\partial y} - \overline{u' v'})+ g \beta (\mathbf{T}-T_r) $​

L'équation de l'énergie :

$ \mathbf{U} \frac{\partial \mathbf{T}} {\partial x} + \mathbf{V} \frac{\partial \mathbf{T}} {\partial y}  = \frac{\partial  }{\partial y} (\alpha ​\frac{\partial \mathbf{T}}{\partial y} - \overline{v' T'}) $

Les grandeurs en gras représentent des grandeurs moyennes, les termes en ' représentent les fluctuations.

Le long de ce projet, nous allons adopter l'approche RANS. Cependant, nous allons tester plusieurs modèles de turbulences : k-epsilon, k-epsilon RNG, RSM,...etc

Création du maillage

Maillage sous SALOME

La plate-forme SALOME est principalement développée par le CEA et EDF, celle ci permet de créer et mailler des géométries, ainsi que de modifier les propriétés numériques et physiques d'éléments géométriques et enfin de visualiser et post-traiter des champs de résultats. Cet outil est open-source, c'est pour cette raison que nous réalisons notre maillage avec, puisque l'integralité de la chaîne de calcul doit être libre.

On réalise ainsi un premier maillage régulier et uniforme (1cm la maille) de la géométrie présentée précédemment. 

Ensuite nous effectuerons un raffinement, avec un ratio 10, au niveau de la zone proche paroi et ce afin de bien représenter la couche limite qui se développe autour de la plaque chauffée.

Maillage sous OpenFOAM

Ce même maillage peut se faire directement sous OpenFoam puisque la géométrie est assez simple à construire, ceci en modifiant le fichier BlockMeshDict du cas test Cavity, mais cette fois-ci en raffinant aux parois avec un ratio 10.

   

 

Pour nos simulations, nous allons utiliser plusieurs maillages avec des ratios différents, afin d'analyser d'une part améliorer les résultats, et d'autre part, analyser son effet sur la qualité de ces résultats.

Paramètres de simulation

Conditions initiales

L'entrée

La difficulté principale de ce calcul est liée au choix de configuration, où l'entrée n'est plus libre, puisque elle est positionnée à 1.4 mètres en dessus du bord d'attaque. Il faut donc imposer en entrée, des profils non uniformes en vitesse ainsi qu'en température, issus des mesures expérimentales que nous représentons ci-dessous.

Il est à noter que ces données représentent un intervalle allant de 0 jusqu'à 12 cm à partir de la plaque verticale, sans pour autant donner des plus informations sur le reste du domaine d'entrée. Il va donc falloir choisir un profil qui représente plus ou moins ce qui se passe d'un point de vu dynamique et thermique.

Ainsi, nous imposons des profils linéaires qui relient les dernières valeurs données expérimentalement en y=0.12 m jusqu'à T=288.15K et U=1e-4m/s, en y=0.5 m.

NB: Le profil imposé en entrée doit coïncider avec les positions des points du maillage. Pour ce, nous effectuons des opérations d'interpolation via un programme Matlab qui permet de réaliser cette opération quelque soit la maillage mis en plaque.

 

Conditions limites

Le choix des conditions aux limites aux niveaux de la sortie et du bord de gauche, n'a pas été évident. Plusieurs essais ont été mis en place avant d'avoir choisit les bonnes BC qu'on résume dans le tableau ci-dessous.

  Entrée Plaque Sortie Bord
U (m/s) nonuniform List<vector>

fixedValue uniform (0 0 0)

zeroGradient zeroGradient
p (Pa) zeroGradient zeroGradient

fixedValue uniform

fixedValue uniform
T (K) nonuniform List<scalar>

fixedValue uniform 333.15K

zeroGradient zeroGradient

 

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

 

Présentation des résultats

Après convergence du calcul et atteinte du régime permanent, nous visualisons nos résultats sur paraview.

 

Vitesse (m/s)


Température (°C)


Lignes de courant (vitesse)

 

La visualisation sur paraview permet donc de valider ne serait ce que qualitativement les résultats de nos calculs.

Difficultées rencontrées lors de l'implantation des conditions limites

Il est tout d'abord extrêmement difficile de bien comprendre la signification des conditions limites proposées sur OpenFOAM. Dans notre cas, seuls de long essais nous ont permis de déterminer une fois pour toutes les conditions limites à utiliser pour nos simulations. L'implémentation des conditions limites fut la partie la plus longue du projet.

Cependant, les simulations dans leur ensemble étaient particulièrement difficiles à mettre en place, notamment pour les profils à l'entrée. Les valeurs expérimentales données permettaient d'établir un profil de vitesse ou de température, pour certains points donnés seulement. Notre maillage ne s'adaptant pas forcément exactement avec ces points, il a fallut effectuer une interpolation à partir des données expérimentales afin de trouver un profil à injecter qui convienne à notre maillage.

Malheureusement, ce problème en entraîna un autre : avec un profil de vitesse non-nulle en entrée et une vitesse nulle dans tout le reste du domaine, OpenFOAM s'avère incapable de s'adapter, et finit par s'arrêter sur ce qu'il nomme une : "discontinuity error". Cela impliquera dans notre cas de passer par un autre solveur, potentialFoam, pour obtenir des champs de vitesse dans tout le domaine, champs que OpenFOAM pourra accepter. Il nous faudra finalement injecter ces données dans le cas en cours pour parvenir à faire marcher la simulation.

 

Finalement, tout semble marcher pour le mieux lorsque l'on trace les profils de vitesse à l'entrée :

 

 

Il faut finalement accepter le fait que potentialFoam déforme le profil de vitesse à l'entrée (qui, après interpolation, se superpose exactement avec le valeurs expérimentales qui sont les conditions limites imposées).

Ce dernier problème n'a pu être résolu, en partie parce qu'il ne fut découvert que tardivement. Il faut donc garder à l'esprit que les simulations suivantes présenteront à la base ce genre de défaut ...

Calcul numérique ERCOFTAC : Exploitation des résultats

Etude de l'influence du modèle de turbulence utilisé

 

Bien que la plupart des premières expériences aient été menées avec un modèle de turbulence k-epsilon classique, et en utilisant des valeurs de grandeurs turbulentes prises comme ordre de grandeur par défaut, nous nous sommes penchés sur le modèle de turbulence dès que le besoin d'améliorer quantitativement nos résultats s'est fait sentir. Cela fut le cas après avoir établi les bonnes conditions limites qui permettaient un bon fonctionnement d'un point de vue qualitatif.

Ainsi, de nombreux modèles de turbulence ont été testés, et parmi eux, le modèle RNGk-epsilon, qui est l'un des modèles qui dérivent de k-epsilon. En effet, il consiste en une modification du terme de dissipation, plus précisément le terme de production. Cette modification a pour but de prendre en compte même les petites échelles de l'écoulement, et non seulement les grandes échelles comme pour le modèle k-epsilon standard. L'équation de k reste inchangée.

Les résultats obtenus, toujours en les comparant avec la référence expérimentale, sont affichés pour les différentes hauteurs 1.918m, 2.535m et 3.244m. Le maillage utilisé pour de telles simulations est de 500x100x1, avec un rapport de 100 (pour un bon raffinement au niveau de la paroi). Des simulations durant 10 secondes de temps physique ont été suffisantes dans notre cas pour atteindre un régime permanent :

 

 

 

 

On constate donc que le modèle RNGk-epsilon permet d'obtenir de bien meilleurs résultats que le modèle k-epsilon de base, sur tous les profils représentés ci-dessus. Concernant les profils de température, les résultats du modèle RNGk-epsilon obtenus sont en tout points bien plus proches des données expérimentales (par comparaison avec le modèle k-epsilon de base). Puis, pour les profils de vitesse, le maximum est mieux approché et l'estimation de la pente est meilleure.

Au final, le modèle RNGk-epsilon permet dans notre cas de mieux approcher quantitativement les données expérimentales de référence que pour tous les résultats obtenus jusqu'alors.

Par conséquent, toutes les simulations qui seront effectuées auront un modèle de turbulence RNGk-epsilon.

 

 

 

 

 

 

 

Etude de l'influence du maillage

Un autre paramètre qui s'avère très pertinent à analyser en CFD en général et pour notre cas en particulier, est l'effet du maillage. Pour cela, nous avons considéré deux maillages différents, un maillage grossier (250*50*1) avec un coefficient d'expansion suivant y de 10, et un autre raffiné (500*100*1) avec un coefficient de 100 suivant y. Les résultats obtenus, toujours en les comparant avec la référence expérimentale, sont affichés pour les différentes hauteurs 1.918m, 2.535m et 3.244m. Des simulations durant 10 secondes de temps physique ont été suffisantes dans notre cas pour atteindre un régime permanent. L'étude comparative de ces deux maillages, nous a donné les résultats suivants :

               

   

   

              

Nous remarquons que le maillage grossier donne de meilleurs résultats, ce qui est surprenant. Notre hypothèse pour expliquer cette remarque se base sur le coefficient d'expansion. En effet, comme nous prenons un ratio énorme (100) pour le maillage raffiné suivant y, donc en raffinant la zone proche de la paroi, les cellules deviennent trop étirées ce qui n'est pas agréable comme maillage.

Ce que nous pouvons tirer comme conclusion d'après cette analyse, et d'après d'autres manipulations que nous avons fait sur le maillage, est que Certes, OpenFOAM offre des outils de maillage (blockMesh, snappyHexMesh), cependant, ces outils ne sont pas assez puissants surtout pour des géométries complexes. La solution la plus pertinente pour ce problème du maillage est d'utiliser un autre logiciel pour générer le maillage comme Salome, ICEMCFD,...etc. et de l'exporter par le biais des outils offerts par OpenFOAM.

Etude de l'influence du paramètre epsilon

Nous avons noté que lorsque l'on calcule les grandeurs turbulentes, comme k (énergie cinétique turbulent) ou $\varepsilon$ (dissipation turbulente) et qu'on les injecte dans notre simulation, les résultats obtenus sont décevants.

Une étude sur l'influence du paramètre $\varepsilon$ est, au même titre que l'étude sur l'influence de k, indispensable pour mieux comprendre les phénomènes en jeu dans la simulation.

C'est pourquoi nous traçons, après plusieurs simulations, les profils de vitesse et de température pour différentes valeurs de $\varepsilon$. Le maillage utilisé contient 500x120x1 mailles, pour un rapport de 100 (pour le raffinement vers la paroi).

 

 

Tout d'abord, on remarque que les différences entre les différentes courbes pour les valeurs de $\varepsilon$ diminuent lorsque l'on considère des hauteurs de plus en plus élevées.
Cette constatation implique déjà une hypothèse qui semble se vérifier : la valeur de $\varepsilon$ imposée entrée est fixe, contrairement à celle à l'intérieur du domaine, qui se modifie au fur et à mesure des calculs effectués. Par conséquent, plus on se situe à une hauteur élevée, et moins l'influence de la dissipation "fixe" imposée en entrée se fait sentir, et le système peut alors évoluer vers une valeur de $\varepsilon$ qui fourni des résultats plus réalistes.

 

Ensuite, on remarque que $\varepsilon$ influe indéniablement sur les résultats obtenus, les simulations s'approchant le plus des données expérimentales étant pour les $\varepsilon$ les plus élevées. Cependant, la valeur de $\varepsilon$ calculée à partir des valeurs expérimentales est de l'ordre de ... 3.10-4 !! Ce qui est assez éloigné des tendances que l'on trouve ici ... Cela peut s'expliquer par le fait que les calculs sur les grandeurs turbulentes sont en réalité des approximations qui restent assez vagues, calculées à partir de grandeurs expérimentales qui peuvent se montrer imprécises. Ainsi, le $\varepsilon$ calculé ne serait pas très pertinent, puisqu'il s'agirait d'une approximation d'approximation.

 

Enfin, pour un $\varepsilon$ inférieur à 0.001, le schéma se met à diverger. Par conséquent, $\varepsilon$ joue également un rôle très important dans la stabilité du schéma numérique pour une simulation donnée, de trop petites valeurs de $\varepsilon$  étant bien entendu insuffisantes pour dissiper l'énergie qui s'accumule, et qui finalement résulte en une divergence, au niveau des vitesses le plus souvent pour notre cas (avec des vitesses supérieures à 7m/s et qui continuaient à augmenter alors qu'elles devraient être inférieures 1m/s).

 

 

 

Etude de l'influence du paramètre k

Dans une autre étude, nous avons analysé l'effet des valeurs de l'énergie cinétique turbulente k à l'entrée sur la qualité des résultats. Pour cela nous avons fait deux calculs, un avec un k non uniforme à l'entrée, calculé avec les grandeurs expérimentales tout en gardant les autres grandeurs turbulentes par défaut (valeurs qui étaient au début avant toute modification). L'autre calcul est fait avec un k uniforme à l'entrée, qui vaut la valeur moyenne du vecteur k du premier calcul. Comme pour les autres cas, les résultats obtenus, toujours en les comparant avec la référence expérimentale, sont affichés pour les différentes hauteurs 2.535m et 3.244m.

Nous obtenons les résultats suivants :

 

  

   

 

La même remarque est que la modification de cette valeur influence clairement les résultats. Il s'avère que le calcul à partir des relations pour l'estimation des grandeurs turbulentes (k,epsilon,...) est aberrant. Ceci peut se comprendre. En effet, l'estimation des grandeurs turbulentes est assez délicate pour les conditions aux limites est en général délicate. Le calcul avec les équations basées sur epsilon et k permet de donner juste un ordre de grandeur, surtout que la simulation est très sensible à ces grandeurs. En plus l'estimation de la dissipation pose toujours un problème pour les modèles type k-epsilon.

Calcul numérique le long du domaine (transition laminaire/turbulent)

Pour ne pas imposer un quelconque profil expérimental en entrée qui pourrait modifier l'écoulement, nous choisissons de réaliser un calcul dans le domaine en entier, c'est à dire de calculer la couche limite depuis le bord d'attaque, en passant par la zone de transition du régime laminaire vers le régime turbulent, jusqu'au bord de fuite (fin de la plaque).

Pour ce, nous procédons de deux façons:

a) Un seul calcul dans tout le domaine en considérant cette fois, un entrée libre.

b) Connaissant le point de transition laminaire/turbulent en x=0.8 m, nous effectuons deux calculs : Le premier va concerner la zone où la couche limite est laminaire, et ce en annulant la viscosité turbulente dans tout le domaine, ensuite nous passerons à un second calcul qui va concerner uniquement le domaine où la couche limite est turbulente, avec comme conditions en entrée les résultats en sortie du premier calcul. De cette façon, nous pourrons forcer la transition.

Mise en place des calculs

Calcul en un seul bloc

Le calcul se fera comme précédemment avec le solveur buoyantBoussinesqSimpleFoam, avec cette fois-ci une modification de la géométrie ( l'entrée ne commence plus à x=1.44m mais plutôt à 0). Le solveur potentialFoam n'est plus utilisé puisqu'il n'y a plus de problème de discontinuité des conditions de vitesses, et les conditions aux limites sont résumés dans le tableau ci-dessous :

  Entrée Plaque Sortie Bord
U (m/s) nonuniform List<vector>

fixedValue uniform (0 0 0)

zeroGradient zeroGradient
p (Pa) zeroGradient zeroGradient

fixedValue uniform

fixedValue uniform
T (K) nonuniform List<scalar>

fixedValue uniform 333.15K

zeroGradient zeroGradient

 

Calculs en deux blocs

Dans le premier domaine (de x=0 à x=0.8 m), nous lançons un premier calcul sous buoyantBoussinesqSimpleFoam avec cette fois-ci une viscosité turbulente nulle pour forcer le régime laminaire, et les conditions aux limites seront exactement identiques à celles utilisées précedemment.

Une fois le calcul convergé, nous récupérons les résultats au dernier pas de temps en x= 0.8m, pour ensuite les imposer comme conditions d'entrée pour le second domaine/calcul.

La récupération de ces profils en entrée peut se faire en passant d'abord par le logiciel "pararaview", pour ensuite enregistrer les datas sous format texte (data.dat), et enfin faire une des opérations de tri via quelques commandes linux :

  • Afin d'extraire les lignes contenant uniquement les données relatifs à la position x=0.8 et z=0.001

> grep -w 0.8 data.dat | grep -w 0.001  > Y.dat

  • Pour extraire les composantes des vitesses (colonnes 3, 4 et 5)

> cut -d',' -s -f3,4,5 Y.dat > U.dat

  • Pour extraire le profil de température (colonne 2)

> cut -d',' -s -f2 Y.dat > T.dat

  • Pour extraire le profil des pressions (colonne 1)

> cut -d',' -s -f1 Y.dat > p.dat

  • Pour respecter la forme avec laquelle s'écrit un profil de vitesses de type nonuniform List<vector>

> sed 's/^/(/' U.dat > U.dat (ouvrir une parenthèse au début de chaque ligne)

> sed 's/$/)/' U.dat > U.dat (fermer les parenthèses à la fin de chaque ligne)

> sed -e 's/,/ /g' U.dat > U.dat (remplacer le virgules par des espaces)

Après avoir récupérer les profils de vitesse, pression et température en sortie du premier bloc, on passe au calcul dans le deuxième bloc où les conditions en entrée seront de type nonuniform. Ainsi, il va falloir copier les dernier profils de vitesse, température et pression, lancer un premier calcul sous potentialFoam pour résoudre les problèmes de discontinuité, et ensuite réaliser un dernier calcul via buoyantBoussinesSimpleFoam.

 

 

 

 

Étude de la couche limite laminaire

Étude théorique

Dans cette partie, nous allons exploiter les simulations qui ont été faites sur le bloc en entier, en particulier la zone de couche laminaire, pour deux raisons. La première est de s'assurer que notre simulation est bien représentative de la réalité en comparant les résultats numériques à  la théorie, la deuxième raison est de s'assurer que les profils expérimentaux en entrée fournis sur le site d'ercoftac collent bien avec la simulation.

Tout d'abord, nous allons présenter les résultats théoriques concernant la partie laminaire.

Pour déterminer les profils de température et de vitesse théoriquement dans cette couche, nous allons nous baser bien évidemment sur les équations de Navier Stokes en couche limite, avec le modèle de Prandtl.

Ce modèle se base sur les mêmes hypothèses que nous avons mentionnées précédemment (voir http://hmf.enseeiht.fr/travaux/bei/beiep/content/g18/analyse-theorique-et-etude-preliminaire).

Nous obtenons donc les mêmes équations de conservation sauf le terme turbulent qui disparaît dans ce cas.

Conditions aux limites :

Vitesse :

$ \overrightarrow{U} (x,0)= \overrightarrow{0}$

$ u(x, \infty )=0 $

$ u(0,y)=0 $

 

Température :

T(x,0)=Tw ,

$ T(x,\infty)=Ta $

T(0,y)=Ta 

Donc finalement, notre problème est bien fermé.

Pour le résoudre, l'astuce est d'utiliser des variables de similitude qui permettent de passer des trois équations à dérivées partielles, à deux équations différentielles ordinaires.

 La variable de similitude adéquate pour ce cas est  : $ \eta (x,y)= (\frac {Gr_x} {4})^{1/4} \frac {y}{x} $

 Avec $ Gr_x=\frac{\beta g x^3 (T_w-T_a)}{\alpha^2} $.

Pour simplifier la résolution des équations, au lieu de considérer T, u et v , nous allons travailler avec les grandeurs suivantes :

$ \theta(x,y)=\theta(\eta)=\frac{T-T_\infty}{T_s-T_\infty} $

la fonction de courant $ \phi  $ telle que : $ u=\frac{\partial \phi}{\partial y}  $

 et $  v=\frac{\partial \phi}{\partial x}$

Nous pouvons écrire cette fonction de courant de la forme suivante : $ \phi=4 \nu \frac {Gr_x}{4}^{1/4}  \xi(\eta) $

Donc au lieu de travailler avec des EDP dont les inconnues sont u, v et T, nous allons considérer des EDO dont les inconnues sont $\theta$ et $\phi$ qui ne dépendent que de $\eta$.

Les équations ordinaires à résoudre sont :

 $\frac {d^3 \xi}{d \eta^3}+3 \xi \frac {d^2 \xi}{d \eta^2}-2 (\frac {d \xi}{d \eta})^2+ \theta=0 $

$ \frac {d^2 \theta}{d \eta^2}+3 Pr \xi (\frac {d \theta}{d \eta})=0 $

Pour les conditions aux limites, de la même façon, il faut les écrire en fonctions des nouvelles variables $ \xi $, $ \theta $ et $ \eta $.

Nous avons donc affaire à deux équations différentielles ordinaires (non-linéaires), avec les conditions aux limites qu'il faut, nous pouvons les résoudre numériquement facilement (avec matlab par exemple)..

A partir de cette résolution, nous pouvons accéder à des paramètres importants comme le nombre de Nusselt, l'épaisseur de la couche limite, la vitesse maximale en fonction de x, ..etc.

Le nombre de Nusselt :

Par définition du nombre de Nusselt : $ Nu= - \frac {\frac {\partial T}{\partial y} x }{Tw-Ta}$

Ce qui donne après calcul :  $ Nu= (\frac {Gr_x}{4})^{0.25} g(Pr).$

Avec $g(Pr)$=$ \frac {0.75 Pr^{0.5}}{(0.609+1.221 Pr^{0.5}+1.238 Pr)^{1/4}}$

L'épaisseur de la couche limite :

A partir de la définition de cette grandeur, on peut déduire facilement que cette grandeur varie en $ x^{1/4} $ : 

$ \delta (x) = x (\frac{Gr_x}{4})^{0.25}$

La vitesse maximale :

Une autre grandeur intéressante est la vitesse maximale Umax.

Théoriquement, on trouve que $ Umax \approx 0.5 \sqrt{g \beta (Tw-Ta) x} $

Exploitation des résultats & Comparaison

A présent nous avons les résultats théoriques ainsi que ceux de simulation. Un dernier point à préciser est que pour les différentes grandeurs que nous allons comparer, nous n'avons pas accès directement par Parafoam. Pour chaque grandeur, il y en a des manipulations à a faire.

Le nombre de Nusselt :

Numériquement, nous avons les profils de température en tout point, pour calculer le nusselt, il suffit de calculer le gradient de température au niveau de la paroi. Pour cela, nous avons calculé la différence entre la température de la paroi et celle de la maille qui suit suivant la direction y. Pour que le calcul soit correct, il faut avoir des mailles suffisamment fines.

Remarque Pour tout calcul sur Parafoam, il ne faut surtout pas exporter les résultats pour des lignes données utilisant plotoverline, car ceci ne permet d'avoir que des valeurs pour un pas d'espace de 0.005 quelque soit le maillage, l'une des faiblesses de cet outil. Pour surmonter cette difficulté, il faut exporter les résultats de tout le domaine, et après faire un tri sur les zones qui intéressent l'utilisateur.

La comparaison des deux approches donne :

                                 

Nous remarquons que les deux profils ne collent pas du tout, quelque soit le maillage. L'origine de cet écart ne provient pas de la simulation ni du maillage, car nous avons bien vérifié que la simulation est correcte, les profils expérimentaux à l'entrée de la couche limite turbulente collent bien avec les profils à la sortie du premier bloc. Le problème vient plutôt de la définition du gradient de température que nous avons considéré pour calculer le Nusselt numériquement. En effet, théoriquement, on montre que le Nusselt augmente avec x, ce qui est bien physique. Cependant, Si pour notre définition du gradient, comme la température suivant x augmente avec x, donc le gradient diminue forcément, par suite Le Nusselt diminue avec x. Nous avons beau cherché pour résoudre ce problème, mais malheureusement nous nous sommes pas arrivés à le résoudre. Les idées que nous avons eu pour surmonter cette difficulté étaient de chercher si OpenFOAM permet de calculer automatiquement ces grandeurs, en les codant par exemple (comment ce qu'on peut faire pour les coefficients de portance et de traînée). L'autre idée était de se servir du Python pour les coder, car ce langage s'avère très puissant pour l'automatisation des calculs et l'obtention des résultats. Malheureusement, nous n'avons pas eu le temps pour faire ces manipulations.

Vitesse maximale :

Pour cette grandeur, le calcul est moins délicat. La comparaison des deux approches nous donne :

 

 

                                      

 

Nous constatons que les deux profils ont la même forme avec un "léger" écart.

Epaisseur de la couche limite dynamique :

Concernant cette grandeur, c'était la galère pour la déterminer numériquement. En effet, si nous faisons un plotoverline pour tous les points du maillage, le calcul de cette épaisseur est impossible avec Parafoam, vu que cet outil considère des pas d'espace de 0.005m et non pas les points du maillage, ce qui est quasiment pas faisable, puisque cette épaisseur est de l'ordre du millimètre. Nous avons essayé d'exporter les résultats de tout le domaine, cependant, vu le nombre de points du maillage, et les vitesses qui étaient très sensibles, le calcul de cette grandeur était imprécis.

Exploitation des résultats

Un bloc

Un premier calcul basé sur des grandeurs turbulentes mises en place par défaut (cas test hotroom) nous permet d'obtenir les courbes ci-dessous :

Nous constatons que les profils numériques sont plus ou moins satisfaisants puisqu'ils s'approchent des profils expérimentaux, surtout en x = 2.535 m, où non seulement la simulation numérique prévoit la pente de décroissance mais également  le maximum de vitesse.


Un second calcul avec cette fois-ci des valeurs pour les grandeurs turbulentes calculées à partir des données expérimentales, donne les résultats ci-dessous :

 

Le tracé des courbes de vitesse et température pour cette deuxième simulation permet d'abord de confirmer la sensibilité du calcul aux grandeurs turbulentes, ainsi que de remarquer la non-amélioration des résultats, contrairement à ce que nous pourrions nous attendre.

Cette remarque pourrait être justifiée par la manière dont le calcul des grandeurs turbulentes s'est effectué ou imposé dans le domaine de calcul. En effet, le fait d'imposer une valeur moyenne dans tout le domaine ne peut être physiquement correcte surtout au niveau de l'entrée, d'ailleurs  cette hypothèse peut être confirmée par l'amélioration observée des profils quand on s'éloigne de l'entrée.

Deux blocs

 

La dernière configuration de calcul, à savoir la simulation numérique en deux blocs permet d'obtenir les profils ci-dessous :

Nous constatons que les profils numériques sont d'autant plus satisfaisants que ceux obtenus pour un calcul en un seul bloc, ce qui est parfaitement cohérent avec la théorie/expériences de la transition de la couche limite laminaire vers la couche limite turbulente en x = 0.8 m. 

Le remarque faite précédemment sur l'influence des valeurs des grandeurs turbulentes est revérifiée.

Raffinement du maillage

Afin d'étudier l'influence du maillage sur la précision des résultats du calcul en un seul bloc, nous avons considéré deux maillages différents, un maillage grossier (500*50*1) avec un coefficient d'expansion suivant y de 10, et un autre raffiné (1000*50*1) avec un coefficient de 20 suivant y. Les résultats obtenus, toujours en les comparant avec la référence expérimentale, sont affichés ci-dessous pour les différentes hauteurs 1.438m, 1.918m, 2.535m et 3.244m :

Nous remarquons que les courbes obtenus avec le maillage grossier sont légèrement plus proches des valeurs expérimentales , ce qui est surprenant.  Comme pour le calcul ERCOFTAC, l'hypothèse pour expliquer cette remarque  pourrait se baser sur le coefficient d'expansion. En effet, le raffinement en proche paroi a pour effet d'étirer les cellules de gauches, ce qui pourrait induire des erreurs de calculs.

 

Comparaison

 

Enfin nous comparons les différentes simulations mises en place pour ce calcul le long de la plaque en traçant comme précédemment les profils de vitesse et de température aux niveaux des quatre positions de mesures expérimentales: x=1.438m, x=1.918m, x=2.535m et x=3.244m.

Remarque : La courbe en rouge correspond aux résultats d'un calcul en deux blocs avec pour manière d'établir l'écoulement laminaire en bas du domaine, la désactivation de la turbulence (turbulence OFF) dans le fichier transportpropeties.

La comparaison des différentes simulations à partir des profils de vitesse/température permet de valider le calcul en deux bloc. Cette méthode permet donc de d'obtenir les résultats les plus proches de la réalité et s'avère la plus logique puisqu'elle permet de prendre en compte la zone de transition, ce qui n'est pas le cas du calcul en "un bloc". Le seul inconvénient de cette méthode s'avère être le positionnement de la zone de transition!