Upload
cypiii
View
535
Download
0
Embed Size (px)
DESCRIPTION
Transparent de la formation OpenFOAM du 27 et 28 mars à Toulouse
Citation preview
Toulouse
27 et 28 mars 2013 Version 3.05
Initiation à la CFD open-source avec le
code OpenFOAM® -
Tome I : Présentation générale du code,
premières simulations et premiers
programmes
-
Cyprien Soulaine
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
2
Objectifs
• Connaitre les possibilités du code OpenFOAM®
• Savoir trouver de l’aide
• Savoir lancer et post-traiter un calcul à partir des tutoriaux existants
• Lancer un calcul en adaptant les tutoriaux à son propre cas
• Savoir décrypter un solveur pour identifier le plus adapté à sa situation
• Créer son propre solveur en modifiant un solveur existant
• Oser se lancer dans l’aventure OpenFOAM® …
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
3
Présentation de la plateforme OpenFOAM® Qu’est ce qu’OpenFOAM ?
Premières simulations avec OpenFOAM®
Exercice n°1 : Diffusion de la chaleur
Structure générale d’un cas OpenFOAM®
Exercice n°2 : Cavité entrainée
Programmer des équations avec OpenFOAM®
Exercice n°5 : Ajout d’une équation de transport de chaleur dans icoFoam
Structure générale d’une application
Exercice n°6 : Température dans cavité entrainée
Où trouvez de l’aide et de la documentation ?
OpenFOAM : programmation des équations
Exercice n°3 : Ecoulement de Poiseuille
Transfert en milieu poreux avec OpenFOAM®
Exercice n°8 : Température dans un milieu poreux
Exercice n°7 : Créer un solveur « Darcy »
Exercice n°9 : Personnaliser des conditions aux limites
Exercice n°10 : Modèle à deux températures
Exercice n°4 : Ascension d’une bulle (VoF)
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
4
Présentation de la plateforme OpenFOAM® Qu’est ce qu’OpenFOAM ?
Premières simulations avec OpenFOAM®
Exercice n°1 : Diffusion de la chaleur
Structure générale d’un cas OpenFOAM®
Exercice n°2 : Cavité entrainée
Programmer des équations avec OpenFOAM®
Exercice n°5 : Ajout d’une équation de transport de chaleur dans icoFoam
Structure générale d’une application
Exercice n°6 : Température dans cavité entrainée
Où trouvez de l’aide et de la documentation ?
OpenFOAM : programmation des équations
Exercice n°3 : Ecoulement de Poiseuille
Transfert en milieu poreux avec OpenFOAM®
Exercice n°8 : Température dans un milieu poreux
Exercice n°7 : Créer un solveur « Darcy »
Exercice n°9 : Personnaliser des conditions aux limites
Exercice n°10 : Modèle à deux températures
Exercice n°4 : Ascension d’une bulle (VoF)
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
5
1989 : Début du développement à l’Imperial College London
1996 : Première version de FOAM
2004 : OpenFOAM distribué sous license GPL par OpenCFD Ltd.
2013 : version 2.2.0 ; rachat de OpenCFD par ESI Group
= Open Field Operation and Manipulation
- Résout les équations aux dérivées partielles par la méthode des volumes finis
- Code multi-physique principalement orienté vers la mécanique des fluides
- Prise en compte par défaut des géométries 3D
- Code open-source développé en C++ (programmation orientée objets)
- Téléchargeable gratuitement sur www.openfoam.com
- Conçu comme une boite à outils « facilement » programmable
- Modules de calcul-parallèle
- Installation multi-plateforme (préférence Linux)
Qu’est ce qu’OpenFOAM® ?
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
6
La boîte à outils OpenFOAM®
OpenFOAM® = plus de 200 programmes (pas seulement 1 exécutable)
post-traitement :
- livré avec ParaView (et l’utilitaire paraFoam)
- exportation vers d’autres plateformes de post-traitement (Fluent, Fieldview, EnSight…
- Utilitaire « sample » pour l’échantillonnage 1D ou 2D (export vers gnuplot, Grace/xmgr et jPlot)
Solveurs : - écoulement incompressible / compressible
- écoulement multiphasique
- combustion, électromagnétique, structure
- transfert de chaleur
- plusieurs approches de turbulence (DNS, RANS, LES)
- etc…
Préprocesseurs :
- Mailleur (blockMesh, snappyHexMesh…)
- Convertisseur de maillage (Ansys, Salomé, ideas, CFX, Star-CD, Gambit, Gmsh…)
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
7
Exemples de simulations
op
en
foam
.co
m
op
en
foam
.co
m
op
en
foam
.co
m
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
8
OpenFOAM® : programmation des équations
Le champ considéré peut-être scalaire, vectoriel ou tensoriel
La discrétisation des opérateurs est précisée lors du lancement de la
simulation
Ecriture des équations très proche de la formulation mathématique
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
9
2 guides officiels par OpenCFD (« user guide » et « programmer guide » )
(Documentation souvent insuffisante)
Plusieurs thèses fondatrices (Hrvoje Jasak 1996, Henrik Rusche 2001, …)
Un tutorial par solver. Il a souvent valeur de cas-test (Validation non-disponible
publiquement)
Accès direct au code-source (attention, le code est peu annoté !!)
En payant un support auprès d’OpenCFD Ltd, Wikki Ltd,….
Communauté active !
- Forum d’entraide (www.cfd-online.com/Forums/openfoam/)
- Un wiki (openfoamwiki.net)
- un Workshop annuel (8ème édition en 2013) (www.openfoamworkshop.org)
- Projet de travail collaboratif dirigé par 2 des développeurs orignaux
(www.extend-project.de)
Où trouver de l’aide et de la documentation ?
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
10
OpenFOAM à l’IMFT ? (intranet de Cosinus)
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
11
• Gratuit (pas de limitations dues aux licences),
• Accès aux sources (pas une “boîte noire”),
• Un outil supplémentaire pour les benchmarks code-
to-code,
• Bénéficie de mises à jour régulières,
• De nombreux solveurs “clé en main”,
• Facilité pour programmer des équations,
• Une communauté réactive (forum, congrès,
université d’été…),
• …..
• Temps de prise en main,
• La documentation !!
• Pas d’interface graphique,
• Commandes unix et C++,
•…..
Quels avantages / inconvénients ?
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
12
Présentation de la plateforme OpenFOAM® Qu’est ce qu’OpenFOAM ?
Premières simulations avec OpenFOAM®
Exercice n°1 : Diffusion de la chaleur
Structure générale d’un cas OpenFOAM®
Exercice n°2 : Cavité entrainée
Programmer des équations avec OpenFOAM®
Exercice n°5 : Ajout d’une équation de transport de chaleur dans icoFoam
Structure générale d’une application
Exercice n°6 : Température dans cavité entrainée
Où trouvez de l’aide et de la documentation ?
OpenFOAM : programmation des équations
Exercice n°3 : Ecoulement de Poiseuille
Transfert en milieu poreux avec OpenFOAM®
Exercice n°8 : Température dans un milieu poreux
Exercice n°7 : Créer un solveur « Darcy »
Exercice n°9 : Personnaliser des conditions aux limites
Exercice n°10 : Modèle à deux températures
Exercice n°4 : Ascension d’un bulle (VoF)
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
13
Structure générale d’un cas OpenFOAM
$ cd ~
$ mkdir -p $FOAM_RUN
Paramétrage du calcul (choix des solvers, des schémas
de discrétisation, du pas de temps, des sorties
fichiers…)
Contient les informations relatives au maillage
Toutes valeurs constantes pendant le calcul (Propriétés
du transport, des modèles de turbulence, de
thermodynamique…etc)
Un répertoire par pas de temps. Chaque répertoire
contient autant de fichier que de champs calculés
(T,U,p, Yi, k, Omega…)
L’initialisation du calcul se fait via un répertoire « 0 »
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
14
Exercice n°1 : Diffusion de la chaleur (1/4)
Géométrie et maillage générés
avec Ansys
Résolution de l’équation de la
chaleur
Conversion avec l’utilitaire
ansysToFoam
Exemple issu des tutoriaux livrés
avec OpenFOAM
573K
273K
Tini = 273K
Solver : laplacianFoam
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
15
Exercice n°1 : Diffusion de la chaleur (2/4)
$ run ¶
$ cp –r $FOAM_TUTORIALS/basic/laplacianFoam/flange Exo1 ¶
$ cd Exo1 ¶
$ ls ¶
$ gedit 0/T ¶
Conditions initiales et conditions aux limites
pour le champ T
Maillage : faces, points… défini plus loin
avec ansysToFoam
Valeur du coefficient de diffusion (m2/s)
Paramètres du calcul (pas de temps, sorties
fichiers…)
Schémas de discrétisation des différents
opérateurs (div, laplacian, ddt, grad…)
Paramètres et choix des solveurs linéaires
Scripts pour lancer automatiquement le tuto et
nettoyer le répertoire
Maillage créé avec Ansys
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
16
Exercice n°1 : Diffusion de la chaleur (3a/4)
Définition des conditions initiales
et des conditions à la limite
Dimensions du champ T
[kg m s K kgmol A cd]
Température initiale uniforme (T=273K)
à l’intérieur du solide
Valeur fixe (T=273K)
Flux nul
Valeur fixe (T=573K)
Condition à aux limites à t=0s
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
17
Exercice n°1 : Diffusion de la chaleur (3b/4)
$ gedit constant/transportProperties ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
18
Exercice n°1 : Diffusion de la chaleur (3c/4)
$ gedit system/controlDict ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
19
Exercice n°1 : Diffusion de la chaleur (4/4)
Conversion du maillage :
$ ansysToFoam flange.ans –scale 0.001 ¶
Visualisation du maillage dans paraView
$ paraFoam ¶
Lancement de la simulation
$ laplacianFoam ¶
Visualisation du résultat dans paraView
$ paraFoam ¶
Création de fichiers dans le
répertoire polyMesh
Création d’un répertoire / pas de
temps
1 - Choix des
champs à
visualiser
2 - « apply »
3- Choisir
« surface »
4 - Choix du
champ à
visualiser
5 - Pour lire
l’ensemble des
pas de temps
Exo1bis :
DT = 1e-3 m²/s Jusqu’à l’état
stationnaire
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
20
Exercice n°2 : Cavité entrainée (1/6)
Création de la géométrie et du maillage
avec l’utilitaire BlockMesh
Résolution de Navier-Stokes incompressible
en régime laminaire (solver icoFoam)
Post-traitement avec ParaView
$ run ¶
$ cp –r $FOAM_TUTORIALS/incompressible/icoFoam/cavity Exo2 ¶
$ cd Exo2 ¶
$ ls ¶
Tutorial détaillé dans le User Guide
fixedWalls
fixe
dW
alls
fixe
dW
alls
Ux=1m/s
movingWall
x
y
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
21
Exercice n°2 : Cavité entrainée (2/6)
Géométrie et maillage définis dans le fichier blockMeshDict
$ gedit constant/polyMesh/blockMeshDict ¶
BlockMesh = utilitaire de prétraitement pour les géométries simples
Définition de la géométrie en 3D car OpenFOAM n’accepte
que des géométrie 3D
4 5
6 7
3 2
1
0 x
y z
Attention l’ordre de numérotation des points est important !!
Définition des points
Définition du bloc hexa
Définition du maillage (Maillage
homogène, 1 seule maille dans
la direction z pour calcul 2D)
Définition des bords de la
géométrie (« patches »)
pour application des
conditions aux limites.
Les faces orthogonales a
l’axe Oz sont « vides »
pour préciser que le
calcul est 2D
On précise que le calcul est 2D
Les patches peuvent être de plusieurs types : -patch (type générique)
-wall (pour les conditions de mur, utile pour la turbulence)
-cyclic (pour les conditions périodiques)
-symmetryPlane (pour les plans de symétrie)
-empty (pour revenir à des géométries 2D ou 1D)
-wedge (pour les géométries axi-symmétrique)
-processor (pour le calcul parallèle)
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
22
Exercice n°2 : Cavité entrainée (3/6)
Exécution de blockMesh : $ blockMesh¶
Contrôle du maillage : $ checkMesh¶
Visualisation du maillage : $ paraFoam¶
1 - Choix des
parties à visualiser
2 – Visualiser
le nom des
patch sur la
géométrie
4 - « Apply » 5 - « wireframe »
6 – Edit>view Setting>use Parallel Projection
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
23
Exercice n°2 : Cavité entrainée (4a/6)
$ gedit constant/transportProperties &¶
On est donc bien en régime
laminaire
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
24
$ gedit 0/U¶
Exercice n°2 : Cavité entrainée (4b/6)
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
25
$ gedit 0/p¶
Exercice n°2 : Cavité entrainée (4c/6)
Attention aux unités, ici,
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
26
$ gedit system/controDict¶
Exercice n°2 : Cavité entrainée (4d/6)
Gestion de la discrétisation en
temps (début, fin, pas de temps)
Gestion des sorties fichiers
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
27
Exercice n°2 : Cavité entrainée (5/6)
Lancement du calcul :
$ icoFoam ¶
Post-traitement avec ParaView : $ paraFoam ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
28
Exercice n°2 : Cavité entrainée (6a/6)
On précise que l’on choisit les valeurs
au centre des cellules avec le filtre
CellCenter :
filters>alphabetical>CellCenter>Apply
Pour visualiser les vecteurs « vitesse »
On applique ensuite le filtre Glyph pour
tracer les vecteurs vitesses:
filters>alphabetical>Glyph>Properties
apply
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
29
Pour visualiser les vecteurs « vitesse »
Exercice n°2 : Cavité entrainée (6b/6)
Display> color by > U
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
30
Exercice n°3 : Ecoulement de Poiseuille (1/4)
Simuler un écoulement de Poiseuille dans un tube (2D) , avec condition de symétrie
Résolution de Navier-Stokes incompressible en régime laminaire (solver icoFoam)
$ run ¶
$ cp –r $FOAM_TUTORIALS/incompressible/icoFoam/cavity Exo3 ¶
$ cd Exo3 ¶
Objectifs :
x
y bottomWall
symmetryPlane
ou
tle
t
inle
t
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
31
Exercice n°3 : Ecoulement de Poiseuille (2/4)
$ gedit constant/polyMesh/blockMeshDict ¶
4
6 7
3 2
1
0 x
y z
inlet
bottomWall
outlet
symmetryPlane
$ blockMesh¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
32
Exercice n°3 : Ecoulement de Poiseuille (3a/4)
$ gedit 0/U¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
33
Exercice n°3 : Ecoulement de Poiseuille (3b/4)
$ gedit 0/p ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
34
Exercice n°3 : Ecoulement de Poiseuille (4/4)
Lancement du calcul : $ icoFoam ¶
Visualisation du résultat : $ paraFoam¶
1 – Filters>Data Analysis>Plot Over Line
2 – On va tracer le profil de vitesse le
long de l’axe y au milieu du tube
3 – Désélectionner la
visualisation du champ de
pression p
On garde les mêmes paramètres de calcul que ceux de l’exercice 2
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
35
Exercice n°4 : Ascension d’une bulle (1/5)
$ run ¶
$ cp –r $FOAM_TUTORIALS/multiphase/interFoam/laminar/damBreak Exo4 ¶
$ cd Exo4 ¶
$ cp ../Exo3/constant/polyMesh/blockMeshDict constant/polyMesh/.
Simuler l’ascension d’une bulle dans une colonne
d’eau
Utilisation d’un solveur de suivi d’interface (VoF)
Utilisation de l’utilitaire setFields pour
initialiser des champs.
Objectifs :
Exercice adapté du tutoriel damBreak détaillé
dans le user guide
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
36
Exercice n°4 : Ascension d’une bulle (2/5)
$ gedit constant/polyMesh/blockMeshDict ¶
4
6 7
3 2
1 0
x
y z
atmosphere
fixedWalls
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
37
Exercice n°4 : Ascension d’une bulle (3a/5)
$ gedit 0/alpha1.org¶
alpha1 représente la distribution
gaz/liquide dans le domaine (alpha1=0
pour le gaz, alpha1=1 pour l’eau)
Cette distribution sera initialisée par la
suite avec l’outil setFields. A ce stade,
seules les conditions aux limites sont
nécessaires.
setFields écrasera 0/alpha1, c’est
pourquoi on en fait une sauvegarde
0/alpha1.org
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
38
Exercice n°4 : Ascension d’une bulle (3b/5)
$ gedit 0/p_rgh¶
On utilise ici une pression hydrostatique
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
39
Exercice n°4 : Ascension d’une bulle (3c/5)
$ gedit 0/U¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
40
Exercice n°4 : Ascension d’une bulle (3d/5)
$ gedit constant/transportProperties¶
Eau définit dans le domaine
par alpha1=1
Air, définit pour alpha1 = 0
Tension de surface
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
41
Exercice n°4 : Ascension d’une bulle (3e/5)
$ gedit constant/g ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
42
Exercice n°4 : Ascension d’une bulle (3f/5)
$ gedit system/controlDict ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
43
Exercice n°4 : Ascension d’une bulle (4/5)
AVANT APRES
Avant de lancer le calcul, il faut initialiser la distribution gaz/liquide. On utilise setFields
$ cp 0/alpha1.old/ 0/alpha1¶
$ paraFoam ¶
$ gedit system/setFieldsDict ¶
$ setFields ¶
$ paraFoam ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
44
Exercice n°4 : Ascension d’une bulle (5/5)
Lancement du calcul : $ interFoam ¶
Post-traitement avec ParaView : $ paraFoam¶
t = 0 s t = 0.04 s t = 0.07 s
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
45
Présentation de la plateforme OpenFOAM® Qu’est ce qu’OpenFOAM ?
Premières simulations avec OpenFOAM®
Exercice n°1 : Diffusion de la chaleur
Structure générale d’un cas OpenFOAM®
Exercice n°2 : Cavité entrainée
Programmer des équations avec OpenFOAM®
Exercice n°5 : Ajout d’une équation de transport de chaleur dans icoFoam
Structure générale d’une application
Exercice n°6 : Température dans cavité entrainée
Où trouvez de l’aide et de la documentation ?
OpenFOAM : programmation des équations
Exercice n°3 : Ecoulement de Poiseuille
Transfert en milieu poreux avec OpenFOAM®
Exercice n°8 : Température dans un milieu poreux
Exercice n°7 : Créer un solveur « Darcy »
Exercice n°9 : Personnaliser des conditions aux limites
Exercice n°10 : Modèle à deux températures
Exercice n°4 : Ascension d’une bulle (VoF)
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
46
$ cd $FOAM_APP/solvers/¶
$ ls
Où trouvez les solvers dans OpenFOAM ?
$ cd basic/laplacianFoam ¶
$ ls ¶
$ gedit laplacianFoam.C ¶
Par exemple, on trouve laplacianFoam dans /basic
1 solver = 1 programme (par exemple l’équation de la chaleur se résout avec le solveur laplacianFoam)
Les solveurs sont classés par type (basic, heat transfer, combustion, incompressible,
multiphase….)
OpenFOAM peut-être vu comme une boîte à outils facilement programmable
Où trouvez le code source d’un programme ?
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
47
Appel des librairies
d’OpenFOAM
Création de la matrice
fvm:: termes implicites
fvc:: termes explicites
T et DT déclarés dans
createField.H
Derrière laplacianFoam : laplacianFoam.C
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
48
On déclare le champ T comme une instance de
l’objet volScalarField.
- Il s’agit d’un champ scalaire
- Il doit être lu au temps initial
-il est dimensionné (les dimensions sont définis
dans 0/T)
- Il est écrit dans chaque répertoire du pas de temps
(runTime.timeName())
- Il contient les conditions aux limites
On lit le fichier transportProperties dans le
répertoire /constant
On déclare ici la variable DT
Sa valeur et ses dimensions sont défnits dans
constant/transportProperties
Derrière laplacianFoam : createFields.H
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
49
Structure générale d’une application
Liens vers les librairies OpenFOAM utilisées dans
l’application
Liste des fichiers à compiler
Code source.
Le fichier .C est le fichier principal.
Exemple du solver icoFoam
$ cd $FOAM_APP/solvers/incompressible/icoFoam ¶
$ ls ¶
$ gedit icoFoam.C ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
50
Exercice n°5 : Ajout d’une équation de transport
dans icoFoam (1/4)
Objectif : développer un solver qui résout le couplage Navier-
Stokes + équation de la chaleur
Comment faire ??
Ajouter l’équation de transport d’un champ de températures à un
solver Naviers-Stokes déjà existant
On choisit de modifier le solver Naviers-Stokes incompressible
icoFoam
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
51
Exercice n°5 : Ajout d’une équation de transport
dans icoFoam (2/4)
$ cd $WM_PROJECT_USER_DIR ¶
$ mkdir -p applications/solvers/incompressible ¶
$ cd applications/solvers/incompressible ¶
On créé son espace « application » dans le répertoire personnel
Copie du solver icoFoam que l’on modifera ensuite
Compilation de myIcoFoam
$ cp –r $FOAM_APP/solvers/incompressible/icoFoam myIcoFoam ¶
$ cd myIcoFoam ¶
$ mv icoFoam.C myIcoFoam.C¶
$ gedit Make/files ¶
$ wclean ¶
$ wmake ¶
Fichier principal de l’appication
L’application « myIcoFoam » sera
compilée dans un dossier utilisateur Liens vers les librairies OpenFOAM
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
52
Exercice n°5 : Ajout d’une équation de transport
dans icoFoam (3/4) $ gedit createFields ¶
Déclaration du scalaire DT. Il sera lu
dans le fichier
« constant/transportProperties »
Déclaration du champ scalaire T.
-Ce champ apparaitra dans chaque
répertoire de pas de temps
-On précise qu’il doit être lu à
l’initialisation du calcul
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
53
Exercice n°5 : Ajout d’une équation de transport
dans icoFoam (3/4)
A jout de l’équation de la chaleur après la
résolution du couplage pression vitesse.
-L’équation est codée dans la matrice TEqn
-On aurait pu aussi directement écrire
solve
(
fvm::ddt(T)
+ fvm::div(phi,T)
- fvm::laplacian(DT,T)
);
- Naviers-Stokes calculé par l’algorithme
PISO de icoFoam
- Le champ « phi » représente le flux
surfacique de vitesse
Compilation de myIcoFoam
$ wmake ¶
$ gedit myIcoFoam.C ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
54
Exercice n°6 : température dans cavité entrainée (1/3)
Adapter l’exercice n°2 au transport de
température
Résolution de Navier-Stokes incompressible
en régime laminaire et de l’équation de la
chaleur (notre solver myIcoFoam)
$ run ¶
$ cp –r Exo2 Exo6¶
$ cd Exo6 ¶
$ rm –r 0.* 1* 2* 3* 4* 5* 6* 7* 8* 9* ¶
$ cp 0/p 0/T ¶
$ gedit 0/T ¶
Objectif : simuler un transport de chaleur
dans le cas de la cavité entrainée
fixedWalls
fixe
dW
alls
fixe
dW
alls
Ux=1m/s
movingWall
x
y
T=493 K
T=293 K
T=293 K T=
293 K
T=
293 K
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
55
Exercice n°6: température dans cavité entrainée(2a/3)
$ gedit 0/T¶
Conditions initiales et conditions aux
limites pour le champ T
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
56
Exercice n°6: température dans cavité entrainée(2b/3)
$ gedit constant/transportProperties¶
Valeur du coefficient de diffusion
pour la température
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
57
Exercice n°6: température dans cavité entrainée(2c/3)
$ gedit system/fvSolution¶
Paramètres du solveur linéaire pour T
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
58
Exercice n°6: température dans cavité entrainée(2d/3)
$ gedit system/fvSchemes¶
Schéma de discrétisation pour
l’équation en température
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
59
Exercice n°6: température dans cavité entrainée(2e/3)
$ gedit system/controlDict¶
Le temps est plus long pour
atteindre le régime établie
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
60
Exercice n°6: température dans cavité entrainée (3/3)
$ myIcoFoam ¶
$ paraFoam ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
61
Présentation de la plateforme OpenFOAM® Qu’est ce qu’OpenFOAM ?
Premières simulations avec OpenFOAM®
Exercice n°1 : Diffusion de la chaleur
Structure générale d’un cas OpenFOAM®
Exercice n°2 : Cavité entrainée
Programmer des équations avec OpenFOAM®
Exercice n°5 : Ajout d’une équation de transport de chaleur dans icoFoam
Structure générale d’une application
Exercice n°6 : Température dans cavité entrainée
Où trouvez de l’aide et de la documentation ?
OpenFOAM : programmation des équations
Exercice n°3 : Ecoulement de Poiseuille
Transfert en milieu poreux avec OpenFOAM®
Exercice n°8 : Température dans un milieu poreux
Exercice n°7 : Créer un solveur « Darcy »
Exercice n°9 : Personnaliser des conditions aux limites
Exercice n°10 : Modèle à deux températures
Exercice n°4 : Ascension d’une bulle (VoF)
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
62
Exercice n°7 : Créer un solveur “Darcy” (1/6)
Objectif : développer un solveur qui résout l’écoulement dans un milieu
poreux où la vitesse est évaluée par une loi de Darcy.
Comment résoudre un tel système ? On obtient une équation différentielle
sur la pression en injectant (2) dans (1) :
On va créer notre solveur en se basant sur le solveur existant laplacianFoam
(1)
(2)
$ cd $WM_PROJECT_USER_DIR/applications/solvers/ ¶
$ cp –r $FOAM_APP/solvers/basic/laplacianFoam darcyFoam ¶
$ cd darcyFoam ¶
$ mv laplacianFoam.C darcyFoam.C ¶
$ gedit Make/files ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
63
Exercice n°7 : Créer un solveur “Darcy” (2/6)
$ gedit createFields.H ¶
Déclaration de la viscosité du fluide mu et de la
perméabilité k du milieu poreux. Ils seront lus dans
le fichier « constant/transportProperties »
Déclaration du champ scalaire p.
-Ce champ apparaitra dans chaque répertoire de
pas de temps
-On précise qu’il doit être lu à l’initialisation du calcul
Déclaration du champ vitesse U.
-Ce champ apparaitra dans chaque répertoire de
pas de temps,
- Il ne sera pas lu à l’initialisation du calcul (même
si il est présent dans le répertoire 0),
- Pour satisfaire tous les constructeurs de l’objet
volVectorField, on précise via un argument
supplémentaire la dimension et une valeur initiale
de U.
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
64
Exercice n°7 : Créer un solveur “Darcy” (3/6)
$ gedit darcyFoam.C ¶
Le champ de pression p est évalué par
une équation de diffusion
Le vecteur vitesse U est déduit du
champ de pression par la loi de Darcy
$ rm write.H ¶
$ wclean ¶
$ wmake ¶
On supprime les fichiers inutiles
et on compile le programme
darcyFoam
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
65
Exercice n°7 : Créer un solveur “Darcy” (4/6)
$ blockMesh ¶
Astuce pour définir les
coordonnées des
points $ run ¶ $ mkdir darcyFoam ¶
$ cd darcyFoam ¶
$ cp -r $FOAM_TUTORIALS/basic/laplacianFoam/flange Exo7 ¶
$ cd Exo7 ¶ $ rm Allrun Allclean flange.ans ¶
$ cp $FOAM_TUTORIALS/incompressible/icoFoam/cavity/constant/
polyMesh/blockMeshDict constant/polyMesh/. ¶
$ gedit constant/polyMesh/blockMeshDict ¶
0 1
2 3
4 5
6 7
x
y z
inlet outlet
On prépare le « case » en s’appuyant sur le tutorial
laplacianFoam/flange, dont le paramétrage se rapproche le plus de
notre exemple
Pour gagner du temps, on récupère un blockMeshDict déjà existant,
que l’on va modifier
Nous allons simuler l’écoulement dans un milieu poreux 1D :
Définition du maillage
(Maillage homogène, 1 seule
maille dans les directions y et
z car le calcul est 1D)
Les faces orthogonales
aux axes Oy et Oz sont
« vides » pour préciser
que le calcul est 1D
On créé ensuite le maillage à l’aide de blockMesh
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
66
Exercice n°7 : Créer un solveur “Darcy” (5a/6)
On impose un différentiel de
pression entre l’entée et la sortie du
domaine
$ mv 0/T 0/p ¶
$ gedit 0/p ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
67
Exercice n°7 : Créer un solveur “Darcy” (5b/6)
$ gedit constant/transportProperties ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
68
Exercice n°7 : Créer un solveur “Darcy” (5c/6)
$ gedit system/controlDict ¶
darcyFoam est un solveur stationnaire, un
seul pas de temps est donc suffisant.
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
69
Exercice n°7 : Créer un solveur “Darcy” (5d/6)
$ gedit system/fvSchemes¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
70
Exercice n°7 : Créer un solveur “Darcy” (5e/6)
$ gedit system/fvSolution ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
71
Exercice n°7 : Créer un solveur “Darcy” (6/6)
$ gnuplot ¶
gnuplot> set xlabel "distance (m)" ¶
gnuplot> set ylabel "Pressure (kg/m/s)" ¶
gnuplot> plot "sets/1/lineX1_p.xy" using 1:2 with lines lw 4 title "p“ ¶
$ cp $FOAM_UTILITIES/postProcessing/sampling/sample/sampleDict system/. ¶
$ gedit system/sampleDict ¶
On va tracer les résultats à l’aide de l’outil d’échantillonnage sample, livré avec OpenFOAM, et du
programme Gnuplot. Comme blockMesh, sample requiert un fichier d’entrée, sampleDict, placé
quant-à-lui dans le répertoire /system :
On exécute ensuite l’échantillonnage :
Et on trace le champ de pression avec gnuplot :
$ sample ¶
On lance la simulation : $ darcyFoam ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
72
Exercice n°8 : Température dans un milieu poreux (1/7)
Objectif n°1 : développer un solveur qui résout le transport d’un champ
scalaire dans un milieu poreux où la vitesse est évaluée par une loi de
Darcy. (1)
(2)
(3)
Objectif n°2 : Tracer les résultats en fonction du temps en plaçant des
sondes.
Objectif n°3 : Changer les schémas de discrétisation
On va créer notre solveur en se basant sur le solveur précédent darcyFoam
$ cd $WM_PROJECT_USER_DIR/applications/solvers/ ¶
$ $ cp –r darcyFoam darcyTemperatureFoam ¶
$ cd darcyTemperatureFoam ¶
$ mv darcyFoam.C darcyTemperatureFoam.C ¶
$ gedit Make/files ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
73
Exercice n°8 : Température dans un milieu poreux (2/7)
$ gedit createFields.H ¶
En plus de la viscosité du fluide mu et de la
perméabilité k du milieu poreux, on déclare la
diffisivité thermique DT et la porisité eps. Ils seront
lus dans le fichier « constant/transportProperties »
Déclaration du flux de vitesse phi.
- Il s’agit d’un champ surfacique (vecteur U projeté
sur les surfaces du maillage)
- nécessaire pour utiliser l’opérateur divergence
(fvm::div(phi,T) )
- Peut également être déclaré avec
#include ‘’createPhi.H’’
Déclaration du champ de température T.
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
74
Exercice n°8 : Température dans un milieu poreux (3/7)
$ gedit darcyTemperatureFoam.C ¶
Le flux surfacique phi est actualisé à
partir de la nouvelle valeur du champ
de vitesse U.
Résolution de l’équation
d’advection/diffusion de la température
$ wclean ¶
$ wmake ¶
on compile le programme
darcyTemperatureFoam
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
75
Exercice n°8 : Température dans un milieu poreux (4/7)
$ run ¶
$ mkdir darcyTemperatureFoam ¶
$ cp –r ../darcyFoam/Exo7 Exo8 ¶
$ cd Exo8 ¶
$ rm –r 0.* 1* 2* 3* 4* 5* 6* 7* 8* 9* sets ¶
$ cp 0/p 0/T ¶
$ gedit 0/T ¶
Milieu poreux de perméabilité k
et de porosité eps P1 P0
Tin
Flux libre en sortie
On va se baser sur l’exercice précédent pour paramétrer le calcul
On cherche à évaluer la température dans un milieu poreux 1D
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
76
Exercice n°8 : Température dans un milieu poreux (5a/7)
$ gedit 0/T¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
77
Exercice n°8 : Température dans un milieu poreux (5b/7)
$ gedit constant/transportProperties ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
78
Exercice n°8 : Température dans un milieu poreux (5c/7)
$ gedit system/fvSchemes¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
79
Exercice n°8 : Température dans un milieu poreux (5d/7)
$ gedit system/fvSolution ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
80
Exercice n°8 : Température dans un milieu poreux (5e/7)
$ gedit system/controlDict ¶
Les sondes sont des fonctions qui sont exécutées
au cours du calcul.
Elles permettent de tracer la valeur d’un champ
pour une cellule donnée (la sonde) au cours du
temps.
On peut préciser autant de sondes qu’on le désire.
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
81
Exercice n°8 : Température dans un milieu poreux (6/7)
$ gedit plot_probes ¶ On va tracer les résultats des sondes à l’aide du script gnuplot suivant
On lance la simulation : $ darcyTemperatureFoam ¶
$ gnuplot –persist plot_probes ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
82
Exercice n°8 : Température dans un milieu poreux (7/7)
On remarque des oscillations dans la simulation précédente. Elles sont dues à une mauvaise stabilité
des schémas numériques de convection utilisés. On peut utiliser un schéma amont ou limiteur de pente
en précisant, dans system/fvSchemes Gauss upwind phi ou Gauss vanLeer au lieu de Gauss linear.
Le schéma amont est plus stable, mais plus diffusif. Les schémas du type limiteur de pente semblent
plus adaptés.
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
83
Exercice n°9 : Personnaliser des conditions aux limites (1/4)
$ cd $FOAM_SRC/finiteVolume/fields/fvPatchFields ¶
$ ls ¶
Objectif : Créer des conditions aux limites personnalisées
Pour définir une condition à la limite qui dépend du temps ou des autres champs, il existe
plusieurs possibilités :
• Programmation en dure dans le code
• Programmation de condition aux limites personnalisées
• Utilisation de l’utilitaire swak4Foam (http://openfoamwiki.net/index.php/Contrib/swak4Foam)
De base, OpenFOAM, gère un certain nombre de conditions à la limite. Elles sont situées dans le
répertoire suivant :
$ ls derived ¶
Toutes ces conditions sont dérivées des conditions de base fixedValue et fixedGradient.
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
84
Exercice n°9 : Personnaliser des conditions aux limites (2/4)
$ gedit Make/files ¶ $ gedit Make/options ¶
Dans les exercices précédents (6 et 7), nous évaluons l’écoulement dans un milieu poreux à partir
de la résolution d’une équation différentielle sur la pression. Les conditions aux limites sont donc
précisées sur la pression. Dans certain cas cependant, il est plus commode de définir une vitesse
en entrée du domaine plutôt qu’une pression. Il faut donc traduire cette condition d’entrée en vitesse
en une condition d’entrée en pression via la relation :
Nous allons créer une condition à la limite personnalisée, inspirée de la condition buoyantPressure,
( ) elle-même dérivée d’un fixedGradient.
$ cd $WM_PROJECT_USER_DIR/ ¶
$ mkdir boundaryConditions/ ¶
$ cd boundaryConditions/ ¶
$ $ cp –r $FOAM_SRC/finiteVolume/fields/fvPatchFields/derived/buoyantPressure darcyGradPressure¶
$ cd darcyGradPressure ¶
$ rename 's/buoyantPressure/darcyGradPressure/g' *.* ¶
$ sed -i 's/buoyantPressure/darcyGradPressure/g' *.* ¶
$ mkdir Make ¶
On remplace la chaine de caractère « buoyantPressure » par « darcyGradPressure » à
l’intérieur de tous les fichiers du répertoire
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
85
Exercice n°9 : Personnaliser des conditions aux limites (3a/4)
$ gedit darcyGradPressureFvPatchScalarField.H ¶
Cette condition à la limite dérive de la
condition de base « fixedGradient »
Nom de la condition à la limite qu’il
faudra préciser dans les fichiers
0/p
Déclaration des constructeurs
On précise que le gradient de p sera
calculé à partir de U
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
86
Exercice n°9 : Personnaliser des conditions aux limites (3b/4)
Suite de la déclaration des
constructeurs et des constructeurs
de copie
Déclaration de la fonction updateCoeffs().
C’est à travers cette fonction que
l’expression de la condition à la limite est
définie
Déclaration de la fonction write()
qui écrit les valeurs aux limites
dans les fichiers timeDirectory/p
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
87
Exercice n°9 : Personnaliser des conditions aux limites (4a/4)
$ gedit darcyGradPressureFvPatchScalarField.C ¶
Définition des constructeurs et des constructeurs de copie
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
88
Exercice n°9 : Personnaliser des conditions aux limites (4b/4)
On récupère les valeurs
de la viscosité du fluide et
de la perméabilité du
milieu poreux dans le
fichier transportProperties
On récupère la valeur du champ
de vitesse U au niveau de la
condition à la limite
On évalue ici le gradient de pression à la limite
selon la formule :
mu.value() permet d’accéder à la valeur de
l’objet mu déclarer comme dimensionedScalar
patch().nf() renvoie le vecteur normal au patch
$ wclean ¶
$ wmake libso ¶
on compile la librairie ldarcyGradPressure.so
qui est maintenant valable pour tous les
solveurs
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
89
Exercice n°10 : Modèle à 2 températures (1/6)
On va créer notre solveur en se basant sur le solveur darcyTemperatureFoam
$ cd $WM_PROJECT_USER_DIR/applications/solvers/ ¶
$ $ cp –r darcyTemperatureFoam darcyTwoTemperaturesFoam ¶
$ cd darcyTwoTemperaturesFoam ¶
$ mv darcyTemperatureFoam.C darcyTwoTemperaturesFoam.C ¶
$ gedit Make/files ¶
Objectif n°1 : Résoudre un transfert de chaleur dans un milieu poreux
par un modèle à 2 équations
(1)
(2)
(3)
(4)
Objectif n°2 : Utiliser des conditions à la limite personnalisées
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
90
Exercice n°10 : Modèle à 2 températures (2/6)
Le champ U est
maintenant initialisé à
partir de 0/U, ce qui
nous permet de définir
des conditions d’entrée
pour U
phi est créé en
appelant
createPhi.H
Déclaration des
champs de
température pour le
solide et pour le
fluide
Les constantes du modèles seront
lues dans le fichier
constant/transportProperties
$ gedit createFields.H ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
91
Exercice n°10 : Modèle à 2 températures (3/6)
$ gedit darcyTwoTemperaturesFoam.C ¶
Résolution de la température dans
le fluide. Une partie du terme
d’échange est traitée en implicite,
l’autre en explicite.
Résolution de la température
dans la matrice poreuse.
$ wclean ¶
$ wmake ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
92
Exercice n°10 : Modèle à 2 températures (4/6)
Milieu poreux de perméabilité k
et de porosité eps Vitesse Uin imposée
en entrée P0
Température du fluide
Tfin imposée en entrée Flux de chaleur (fluide et
solide) libre en sortie
On va se baser sur l’exercice précédent pour paramétrer le calcul
On cherche à évaluer le transfert de chaleur dans un milieu poreux 1D via un modèle à
deux températures
$ run ¶
$ mkdir darcytwoTemperaturesFoam ¶
$ cp –r ../darcyTemperatureFoam/Exo8 Exo10 ¶
$ cd Exo10 ¶
$ rm –r 0.* 1* 2* 3* 4* 5* 6* 7* 8* 9* sets probes ¶
$ mv 0/T 0/Tf ¶
$ cp 0/Tf 0/Ts
$ gedit 0/Tf ¶
Dans cet exemple, un milieu poreux initialement à 573K est refroidit par l’injection d’un
fluide à 273K
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
93
Exercice n°10 : Modèle à 2 températures (5a/6)
$ gedit 0/U ¶
On impose une vitesse du fluide à
l’entrée du milieu. Cette vitesse va
permettre d’évaluer le gradient de
pression à l’entrée.
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
94
Exercice n°10 : Modèle à 2 températures (5b/6)
$ gedit 0/p ¶
On utilise ici la condition à la limite
darcyGradPressure définie dans l’exercice
précédent. Le gradient de pression à la limite est
évalué via :
On doit préciser dans le fichier system/controlDict
que l’on utilise la librairie ldarcyGradPressure.so
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
95
Exercice n°10 : Modèle à 2 températures (5c/6)
$ gedit 0/Ts ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
96
Exercice n°10 : Modèle à 2 températures (5d/6)
$ gedit 0/Tf ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
97
Exercice n°10 : Modèle à 2 températures (5e/6)
$ gedit constant/transportProperties ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
98
Exercice n°10 : Modèle à 2 températures (5f/6)
$ gedit system/controlDict ¶
On précise ici que l’on va utiliser la librairie
ldarcyGradPressure.so qui nous permettra
d’utiliser la condition à la limite personnalisée
darcyGradPressure
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
99
Exercice n°10 : Modèle à 2 températures (5g/6)
$ gedit system/fvSolution ¶ $ gedit system/fvSchemes ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
100
Exercice n°10 : Modèle à 2 températures (6/6)
On post-traite ensuite les résultats (ici on a tracé les valeurs de Ts et Tf en fonction du temps pour
les 3 sondes)
On lance la simulation : $ darcyTwoTemperaturesFoam ¶
Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse
Initia
tio
n à
Op
en
FO
AM
®
101