Vous êtes sur la page 1sur 101

Initiation la CFD open-source avec le code OpenFOAM Tome I : Prsentation gnrale du code, premires simulations et premiers programmes Cyprien

n Soulaine (cyprien.soulaine@gmail.com)

Toulouse 27 et 28 mars 2013


Version 3.05

Objectifs
Connaitre les possibilits du code OpenFOAM
Savoir trouver de laide Savoir lancer et post-traiter un calcul partir des tutoriaux existants Lancer un calcul en adaptant les tutoriaux son propre cas Savoir dcrypter un solveur pour identifier le plus adapt sa situation Crer son propre solveur en modifiant un solveur existant Oser se lancer dans laventure OpenFOAM
2

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

Prsentation de la plateforme OpenFOAM


Quest ce quOpenFOAM ? OpenFOAM : programmation des quations O trouvez de laide et de la documentation ?

Initiation OpenFOAM

Premires simulations avec OpenFOAM


Structure gnrale dun cas OpenFOAM Exercice n1 : Diffusion de la chaleur Exercice n2 : Cavit entraine Exercice n3 : Ecoulement de Poiseuille Exercice n4 : Ascension dune bulle (VoF)

Programmer des quations avec OpenFOAM


Structure gnrale dune application Exercice n5 : Ajout dune quation de transport de chaleur dans icoFoam Exercice n6 : Temprature dans cavit entraine

Transfert en milieu poreux avec OpenFOAM


Exercice n7 : Crer un solveur Darcy Exercice n8 : Temprature dans un milieu poreux Exercice n9 : Personnaliser des conditions aux limites Exercice n10 : Modle deux tempratures
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

Prsentation de la plateforme OpenFOAM


Quest ce quOpenFOAM ? OpenFOAM : programmation des quations O trouvez de laide et de la documentation ?

Initiation OpenFOAM

Premires simulations avec OpenFOAM


Structure gnrale dun cas OpenFOAM Exercice n1 : Diffusion de la chaleur Exercice n2 : Cavit entraine Exercice n3 : Ecoulement de Poiseuille Exercice n4 : Ascension dune bulle (VoF)

Programmer des quations avec OpenFOAM


Structure gnrale dune application Exercice n5 : Ajout dune quation de transport de chaleur dans icoFoam Exercice n6 : Temprature dans cavit entraine

Transfert en milieu poreux avec OpenFOAM


Exercice n7 : Crer un solveur Darcy Exercice n8 : Temprature dans un milieu poreux Exercice n9 : Personnaliser des conditions aux limites Exercice n10 : Modle deux tempratures
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

Quest ce quOpenFOAM ?

= Open Field Operation and Manipulation


Initiation OpenFOAM
- Rsout les quations aux drives partielles par la mthode des volumes finis - Code multi-physique principalement orient vers la mcanique des fluides - Prise en compte par dfaut des gomtries 3D

- Code open-source dvelopp en C++ (programmation oriente objets)


- Tlchargeable gratuitement sur www.openfoam.com - Conu comme une boite outils facilement programmable - Modules de calcul-parallle

- Installation multi-plateforme (prfrence Linux)


1989 : Dbut du dveloppement lImperial College London

1996 : Premire version de FOAM


2004 : OpenFOAM distribu sous license GPL par OpenCFD Ltd. 2013 : version 2.2.0 ; rachat de OpenCFD par ESI Group
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

La bote outils OpenFOAM


OpenFOAM = plus de 200 programmes (pas seulement 1 excutable)

Initiation OpenFOAM

Prprocesseurs :
Mailleur (blockMesh, snappyHexMesh) Convertisseur de maillage (Ansys, Salom, ideas, CFX, Star-CD, Gambit, Gmsh)

Solveurs :
- coulement incompressible / compressible - coulement multiphasique - combustion, lectromagntique, structure - transfert de chaleur - plusieurs approches de turbulence (DNS, RANS, LES) - etc

post-traitement :
livr avec ParaView (et lutilitaire paraFoam) exportation vers dautres plateformes de post-traitement (Fluent, Fieldview, EnSight Utilitaire sample pour lchantillonnage 1D ou 2D (export vers gnuplot, Grace/xmgr et jPlot)

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

Exemples de simulations

Initiation OpenFOAM

openfoam.com

openfoam.com

openfoam.com

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

OpenFOAM : programmation des quations

Initiation OpenFOAM

Le champ considr peut-tre scalaire, vectoriel ou tensoriel

La discrtisation des oprateurs est prcise lors du lancement de la simulation


Ecriture des quations trs proche de la formulation mathmatique
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

O trouver de laide et de la documentation ?


2 guides officiels par OpenCFD ( user guide et programmer guide ) (Documentation souvent insuffisante)
Plusieurs thses fondatrices (Hrvoje Jasak 1996, Henrik Rusche 2001, )

Initiation OpenFOAM

Un tutorial par solver. Il a souvent valeur de cas-test (Validation non-disponible publiquement)

Accs direct au code-source (attention, le code est peu annot !!)


En payant un support auprs dOpenCFD Ltd, Wikki Ltd,.

Communaut active !
- Forum dentraide (www.cfd-online.com/Forums/openfoam/) - Un wiki (openfoamwiki.net) - un Workshop annuel (8me dition en 2013) (www.openfoamworkshop.org) - Projet de travail collaboratif dirig par 2 des dveloppeurs orignaux (www.extend-project.de)
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

OpenFOAM lIMFT ? (intranet de Cosinus)

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

10

Quels avantages / inconvnients ?

Initiation OpenFOAM

Gratuit (pas de limitations dues aux licences),


Accs aux sources (pas une bote noire),
Un outil supplmentaire pour les benchmarks codeto-code, Bnficie de mises jour rgulires, De nombreux solveurs cl en main, Facilit pour programmer des quations, Une communaut ractive (forum, congrs, universit dt), ..

Temps de prise en main,


La documentation !!
Pas dinterface graphique, Commandes unix et C++, ..

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

11

Prsentation de la plateforme OpenFOAM


Quest ce quOpenFOAM ? OpenFOAM : programmation des quations O trouvez de laide et de la documentation ?

Initiation OpenFOAM

Premires simulations avec OpenFOAM


Structure gnrale dun cas OpenFOAM Exercice n1 : Diffusion de la chaleur Exercice n2 : Cavit entraine Exercice n3 : Ecoulement de Poiseuille Exercice n4 : Ascension dun bulle (VoF)

Programmer des quations avec OpenFOAM


Structure gnrale dune application Exercice n5 : Ajout dune quation de transport de chaleur dans icoFoam Exercice n6 : Temprature dans cavit entraine

Transfert en milieu poreux avec OpenFOAM


Exercice n7 : Crer un solveur Darcy Exercice n8 : Temprature dans un milieu poreux Exercice n9 : Personnaliser des conditions aux limites Exercice n10 : Modle deux tempratures
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

12

Structure gnrale dun cas OpenFOAM


$ cd ~ $ mkdir -p $FOAM_RUN

Initiation OpenFOAM

Paramtrage du calcul (choix des solvers, des schmas de discrtisation, du pas de temps, des sorties fichiers) Toutes valeurs constantes pendant le calcul (Proprits du transport, des modles de turbulence, de thermodynamiqueetc) Contient les informations relatives au maillage Un rpertoire par pas de temps. Chaque rpertoire contient autant de fichier que de champs calculs (T,U,p, Yi, k, Omega) Linitialisation du calcul se fait via un rpertoire 0
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

13

Exercice n1 : Diffusion de la chaleur (1/4)


Tini = 273K 273K
Initiation OpenFOAM
Gomtrie et maillage gnrs avec Ansys
Conversion avec lutilitaire ansysToFoam

Exemple issu des tutoriaux livrs avec OpenFOAM

Rsolution de lquation de la chaleur

573K

Solver : laplacianFoam

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

14

Exercice n1 : 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 dfini plus loin avec ansysToFoam Valeur du coefficient de diffusion (m2/s) Paramtres du calcul (pas de temps, sorties fichiers) Schmas de discrtisation des diffrents oprateurs (div, laplacian, ddt, grad) Paramtres et choix des solveurs linaires Scripts pour lancer automatiquement le tuto et nettoyer le rpertoire Maillage cr avec Ansys
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

Initiation OpenFOAM

15

Exercice n1 : Diffusion de la chaleur (3a/4)


Dfinition des conditions initiales et des conditions la limite
Dimensions du champ T

Initiation OpenFOAM

[kg m s K kgmol A cd] Temprature initiale uniforme (T=273K) lintrieur du solide Condition aux limites t=0s Flux nul

Valeur fixe (T=273K) Valeur fixe (T=573K)

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

16

Exercice n1 : Diffusion de la chaleur (3b/4)


$ gedit constant/transportProperties

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

17

Exercice n1 : Diffusion de la chaleur (3c/4)


$ gedit system/controlDict

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

18

Exercice n1 : Diffusion de la chaleur (4/4)


Conversion du maillage :
$ ansysToFoam flange.ans scale 0.001

Cration de fichiers dans le rpertoire polyMesh

Visualisation du maillage dans paraView


$ paraFoam

Initiation OpenFOAM

Lancement de la simulation
$ laplacianFoam

Cration dun rpertoire / pas de temps

Visualisation du rsultat dans paraView


$ paraFoam

4 - Choix du champ visualiser

5 - Pour lire lensemble des pas de temps

3- Choisir surface

2 - apply

Exo1bis : DT = 1e-3 m/s


Jusqu ltat stationnaire

1 - Choix des champs visualiser


Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

19

Exercice n2 : Cavit entraine (1/6)


Ux=1m/s
movingWall

Tutorial dtaill dans le User Guide

Initiation OpenFOAM

Cration de la gomtrie et du maillage avec lutilitaire BlockMesh


fixedWalls fixedWalls

Rsolution de Navier-Stokes incompressible en rgime laminaire (solver icoFoam)

y x

fixedWalls

Post-traitement avec ParaView

$ run $ cp r $FOAM_TUTORIALS/incompressible/icoFoam/cavity Exo2 $ cd Exo2 $ ls


Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

20

Exercice n2 : Cavit entraine (2/6)


BlockMesh = utilitaire de prtraitement pour les gomtries simples
Gomtrie et maillage dfinis dans le fichier blockMeshDict
Dfinition des points

$ gedit constant/polyMesh/blockMeshDict
Dfinition de la gomtrie en 3D car OpenFOAM naccepte que des gomtrie 3D
3 2 6

Initiation OpenFOAM

Dfinition du bloc hexa

Dfinition du maillage (Maillage homogne, 1 seule maille dans la direction z pour calcul 2D)

z x 4

0 1 5

Dfinition des bords de la gomtrie ( patches ) pour application des conditions aux limites. Les faces orthogonales a laxe Oz sont vides pour prciser que le calcul est 2D

Attention lordre de numrotation des points est important !! On prcise que le calcul est 2D Les patches peuvent tre de plusieurs types :
-patch (type gnrique) -wall (pour les conditions de mur, utile pour la turbulence) -cyclic (pour les conditions priodiques) -symmetryPlane (pour les plans de symtrie) -empty (pour revenir des gomtries 2D ou 1D) -wedge (pour les gomtries axi-symmtrique) -processor (pour le calcul parallle)
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

21

Exercice n2 : Cavit entraine (3/6)


Excution de blockMesh : Contrle du maillage :

$ blockMesh $ checkMesh $ paraFoam


6 Edit>view Setting>use Parallel Projection

Visualisation du maillage :

Initiation OpenFOAM

4 - Apply

5 - wireframe

2 Visualiser le nom des patch sur la gomtrie

1 - Choix des parties visualiser

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

22

Exercice n2 : Cavit entraine (4a/6)


$ gedit constant/transportProperties &

Initiation OpenFOAM

On est donc bien en rgime laminaire

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

23

Exercice n2 : Cavit entraine (4b/6)


$ gedit 0/U

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

24

Exercice n2 : Cavit entraine (4c/6)


$ gedit 0/p

Initiation OpenFOAM

Attention aux units, ici,

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

25

Exercice n2 : Cavit entraine (4d/6)


$ gedit system/controDict

Initiation OpenFOAM

Gestion de la discrtisation en temps (dbut, fin, pas de temps)

Gestion des sorties fichiers

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

26

Exercice n2 : Cavit entraine (5/6)


Lancement du calcul :
$ icoFoam

Initiation OpenFOAM

Post-traitement avec ParaView :

$ paraFoam

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

27

Exercice n2 : Cavit entraine (6a/6)


Pour visualiser les vecteurs vitesse
On prcise que lon choisit les valeurs au centre des cellules avec le filtre CellCenter :
filters>alphabetical>CellCenter>Apply

Initiation OpenFOAM

On applique ensuite le filtre Glyph pour tracer les vecteurs vitesses:


filters>alphabetical>Glyph>Properties apply
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

28

Exercice n2 : Cavit entraine (6b/6)


Pour visualiser les vecteurs vitesse

Initiation OpenFOAM
Display> color by > U
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

29

Exercice n3 : Ecoulement de Poiseuille (1/4)


Objectifs :
Simuler un coulement de Poiseuille dans un tube (2D) , avec condition de symtrie Rsolution de Navier-Stokes incompressible en rgime laminaire (solver icoFoam)

Initiation OpenFOAM

symmetryPlane outlet bottomWall


x
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

$ run $ cp r $FOAM_TUTORIALS/incompressible/icoFoam/cavity Exo3 $ cd Exo3


30

inlet

Exercice n3 : Ecoulement de Poiseuille (2/4)


$ gedit constant/polyMesh/blockMeshDict
symmetryPlane
3 2 6

inlet

outlet

Initiation OpenFOAM

z x 4

0 1

bottomWall

$ blockMesh
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

31

Exercice n3 : Ecoulement de Poiseuille (3a/4)


$ gedit 0/U

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

32

Exercice n3 : Ecoulement de Poiseuille (3b/4)


$ gedit 0/p

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

33

Exercice n3 : Ecoulement de Poiseuille (4/4)


On garde les mmes paramtres de calcul que ceux de lexercice 2

Lancement du calcul : $ icoFoam


Visualisation du rsultat :
$ paraFoam

Initiation OpenFOAM

1 Filters>Data Analysis>Plot Over Line

3 Dslectionner la visualisation du champ de pression p

2 On va tracer le profil de vitesse le long de laxe y au milieu du tube

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

34

Exercice n4 : Ascension dune bulle (1/5)


Objectifs :
Simuler lascension dune bulle dans une colonne deau

Initiation OpenFOAM

Exercice adapt du tutoriel damBreak dtaill dans le user guide Utilisation dun solveur de suivi dinterface (VoF)

Utilisation de lutilitaire setFields pour initialiser des champs. $ run $ cp r $FOAM_TUTORIALS/multiphase/interFoam/laminar/damBreak Exo4 $ cd Exo4 $ cp ../Exo3/constant/polyMesh/blockMeshDict constant/polyMesh/.
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

35

Exercice n4 : Ascension dune bulle (2/5)


$ gedit constant/polyMesh/blockMeshDict

atmosphere

Initiation OpenFOAM

3 7 6

y x

fixedWalls

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

36

Exercice n4 : Ascension dune bulle (3a/5)


$ gedit 0/alpha1.org

Initiation OpenFOAM

alpha1 reprsente la distribution gaz/liquide dans le domaine (alpha1=0 pour le gaz, alpha1=1 pour leau) Cette distribution sera initialise par la suite avec loutil setFields. A ce stade, seules les conditions aux limites sont ncessaires.

setFields crasera 0/alpha1, cest pourquoi on en fait une sauvegarde 0/alpha1.org

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

37

Exercice n4 : Ascension dune bulle (3b/5)


$ gedit 0/p_rgh

Initiation OpenFOAM

On utilise ici une pression hydrostatique

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

38

Exercice n4 : Ascension dune bulle (3c/5)


$ gedit 0/U

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

39

Exercice n4 : Ascension dune bulle (3d/5)


$ gedit constant/transportProperties

Initiation OpenFOAM

Eau dfinit dans le domaine par alpha1=1

Air, dfinit pour alpha1 = 0

Tension de surface

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

40

Exercice n4 : Ascension dune bulle (3e/5)


$ gedit constant/g

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

41

Exercice n4 : Ascension dune bulle (3f/5)


$ gedit system/controlDict

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

42

Exercice n4 : Ascension dune bulle (4/5)


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

Initiation OpenFOAM

AVANT

APRES

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

43

Exercice n4 : Ascension dune bulle (5/5)


Lancement du calcul : $ interFoam
Post-traitement avec ParaView :
$ paraFoam

Initiation OpenFOAM

t=0s

t = 0.04 s

t = 0.07 s
44

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

Prsentation de la plateforme OpenFOAM


Quest ce quOpenFOAM ? OpenFOAM : programmation des quations O trouvez de laide et de la documentation ?

Initiation OpenFOAM

Premires simulations avec OpenFOAM


Structure gnrale dun cas OpenFOAM Exercice n1 : Diffusion de la chaleur Exercice n2 : Cavit entraine Exercice n3 : Ecoulement de Poiseuille Exercice n4 : Ascension dune bulle (VoF)

Programmer des quations avec OpenFOAM


Structure gnrale dune application Exercice n5 : Ajout dune quation de transport de chaleur dans icoFoam Exercice n6 : Temprature dans cavit entraine

Transfert en milieu poreux avec OpenFOAM


Exercice n7 : Crer un solveur Darcy Exercice n8 : Temprature dans un milieu poreux Exercice n9 : Personnaliser des conditions aux limites Exercice n10 : Modle deux tempratures
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

45

O trouvez le code source dun programme ?


OpenFOAM peut-tre vu comme une bote outils facilement programmable 1 solver = 1 programme

Initiation OpenFOAM

(par exemple lquation de la chaleur se rsout avec le solveur laplacianFoam)

O trouvez les solvers dans OpenFOAM ?


$ cd $FOAM_APP/solvers/ $ ls

Les solveurs sont classs par type (basic, heat transfer, combustion, incompressible, multiphase.)

Par exemple, on trouve laplacianFoam dans /basic


$ cd basic/laplacianFoam $ ls $ gedit laplacianFoam.C

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

46

Derrire laplacianFoam : laplacianFoam.C


Appel des librairies dOpenFOAM

Initiation OpenFOAM

Cration de la matrice
fvm:: termes implicites
fvc:: termes explicites

T et DT dclars dans createField.H

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

47

Derrire laplacianFoam : createFields.H


On dclare le champ T comme une instance de lobjet volScalarField. - Il sagit dun champ scalaire - Il doit tre lu au temps initial

Initiation OpenFOAM

-il est dimensionn (les dimensions sont dfinis dans 0/T) - Il est crit dans chaque rpertoire du pas de temps (runTime.timeName()) - Il contient les conditions aux limites

On lit le fichier transportProperties dans le rpertoire /constant

On dclare ici la variable DT

Sa valeur et ses dimensions sont dfnits dans constant/transportProperties

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

48

Structure gnrale dune application


Code source. Le fichier .C est le fichier principal.

Initiation OpenFOAM

Liste des fichiers compiler Liens vers les librairies OpenFOAM utilises dans lapplication

Exemple du solver icoFoam


$ cd $FOAM_APP/solvers/incompressible/icoFoam $ ls $ gedit icoFoam.C

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

49

Exercice n5 : Ajout dune quation de transport dans icoFoam (1/4)


Objectif : dvelopper un solver qui rsout le couplage NavierStokes + quation de la chaleur

Initiation OpenFOAM

Comment faire ?? Ajouter lquation de transport dun champ de tempratures un solver Naviers-Stokes dj existant On choisit de modifier le solver Naviers-Stokes incompressible icoFoam
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

50

Exercice n5 : Ajout dune quation de transport dans icoFoam (2/4)


On cr son espace application dans le rpertoire personnel
$ cd $WM_PROJECT_USER_DIR $ mkdir -p applications/solvers/incompressible $ cd applications/solvers/incompressible

Initiation OpenFOAM

Copie du solver icoFoam que lon modifera ensuite


$ cp r $FOAM_APP/solvers/incompressible/icoFoam myIcoFoam $ cd myIcoFoam $ mv icoFoam.C myIcoFoam.C $ gedit Make/files Fichier principal de lappication

Lapplication myIcoFoam sera compile dans un dossier utilisateur Liens vers les librairies OpenFOAM

Compilation de myIcoFoam
$ wclean $ wmake
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

51

Exercice n5 : Ajout dune quation de transport dans icoFoam (3/4) $ gedit createFields

Initiation OpenFOAM

Dclaration du scalaire DT. Il sera lu dans le fichier constant/transportProperties

Dclaration du champ scalaire T. -Ce champ apparaitra dans chaque rpertoire de pas de temps -On prcise quil doit tre lu linitialisation du calcul

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

52

Exercice n5 : Ajout dune quation de transport dans icoFoam (3/4) $ gedit myIcoFoam.C

- Naviers-Stokes calcul par lalgorithme PISO de icoFoam

Initiation OpenFOAM

- Le champ phi reprsente le flux surfacique de vitesse

A jout de lquation de la chaleur aprs la rsolution du couplage pression vitesse.

-Lquation est code dans la matrice TEqn -On aurait pu aussi directement crire solve ( fvm::ddt(T) + fvm::div(phi,T) - fvm::laplacian(DT,T) );

Compilation de myIcoFoam $ wmake

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

53

Exercice n6 : temprature dans cavit entraine (1/3)


T=493 K Ux=1m/s
movingWall

Objectif : simuler un transport de chaleur dans le cas de la cavit entraine


T=293 K Adapter lexercice n2 au transport de temprature Rsolution de Navier-Stokes incompressible en rgime laminaire et de lquation de la chaleur (notre solver myIcoFoam)

Initiation OpenFOAM

T=293 K

T=293 K

fixedWalls

y x

fixedWalls

T=293 K

$ 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


Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

fixedWalls

54

Exercice n6: temprature dans cavit entraine(2a/3)


$ gedit 0/T

Initiation OpenFOAM

Conditions initiales et conditions aux limites pour le champ T

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

55

Exercice n6: temprature dans cavit entraine(2b/3)


$ gedit constant/transportProperties

Initiation OpenFOAM

Valeur du coefficient de diffusion pour la temprature

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

56

Exercice n6: temprature dans cavit entraine(2c/3)


$ gedit system/fvSolution

Initiation OpenFOAM

Paramtres du solveur linaire pour T

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

57

Exercice n6: temprature dans cavit entraine(2d/3)


$ gedit system/fvSchemes

Initiation OpenFOAM

Schma de discrtisation pour lquation en temprature

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

58

Exercice n6: temprature dans cavit entraine(2e/3)


$ gedit system/controlDict

Initiation OpenFOAM

Le temps est plus long pour atteindre le rgime tablie

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

59

Exercice n6: temprature dans cavit entraine (3/3)


$ myIcoFoam $ paraFoam

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

60

Prsentation de la plateforme OpenFOAM


Quest ce quOpenFOAM ? OpenFOAM : programmation des quations O trouvez de laide et de la documentation ?

Initiation OpenFOAM

Premires simulations avec OpenFOAM


Structure gnrale dun cas OpenFOAM Exercice n1 : Diffusion de la chaleur Exercice n2 : Cavit entraine Exercice n3 : Ecoulement de Poiseuille Exercice n4 : Ascension dune bulle (VoF)

Programmer des quations avec OpenFOAM


Structure gnrale dune application Exercice n5 : Ajout dune quation de transport de chaleur dans icoFoam Exercice n6 : Temprature dans cavit entraine

Transfert en milieu poreux avec OpenFOAM


Exercice n7 : Crer un solveur Darcy Exercice n8 : Temprature dans un milieu poreux Exercice n9 : Personnaliser des conditions aux limites Exercice n10 : Modle deux tempratures
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

61

Exercice n7 : Crer un solveur Darcy (1/6)


Objectif : dvelopper un solveur qui rsout lcoulement dans un milieu poreux o la vitesse est value par une loi de Darcy.

(1) Initiation OpenFOAM (2)


Comment rsoudre un tel systme ? On obtient une quation diffrentielle sur la pression en injectant (2) dans (1) :

On va crer notre solveur en se basant sur le solveur existant laplacianFoam


$ 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 Mcanique des Fluides de Toulouse

62

Exercice n7 : Crer un solveur Darcy (2/6)


$ gedit createFields.H
Dclaration du champ scalaire p. -Ce champ apparaitra dans chaque rpertoire de pas de temps -On prcise quil doit tre lu linitialisation du calcul

Initiation OpenFOAM

Dclaration du champ vitesse U. -Ce champ apparaitra dans chaque rpertoire de pas de temps, - Il ne sera pas lu linitialisation du calcul (mme si il est prsent dans le rpertoire 0), - Pour satisfaire tous les constructeurs de lobjet volVectorField, on prcise via un argument supplmentaire la dimension et une valeur initiale de U.

Dclaration de la viscosit du fluide mu et de la permabilit k du milieu poreux. Ils seront lus dans le fichier constant/transportProperties
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

63

Exercice n7 : Crer un solveur Darcy (3/6)


$ gedit darcyFoam.C

Initiation OpenFOAM

Le champ de pression p est valu par une quation de diffusion

Le vecteur vitesse U est dduit 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 Mcanique des Fluides de Toulouse

64

Exercice n7 : Crer un solveur Darcy (4/6)


Astuce pour dfinir les coordonnes des points

On prpare le case en sappuyant sur le tutorial laplacianFoam/flange, dont le paramtrage se rapproche le plus de notre exemple $ run $ mkdir darcyFoam $ cd darcyFoam $ cp -r $FOAM_TUTORIALS/basic/laplacianFoam/flange Exo7 $ cd Exo7 $ rm Allrun Allclean flange.ans

Initiation OpenFOAM

Nous allons simuler lcoulement dans un milieu poreux 1D :


Dfinition du maillage (Maillage homogne, 1 seule maille dans les directions y et z car le calcul est 1D) 3 2 6 1 5

inlet 7 0 y z 4 x

outlet

Pour gagner du temps, on rcupre un blockMeshDict dj existant, que lon va modifier $ cp $FOAM_TUTORIALS/incompressible/icoFoam/cavity/constant/ polyMesh/blockMeshDict constant/polyMesh/. $ gedit constant/polyMesh/blockMeshDict

Les faces orthogonales aux axes Oy et Oz sont vides pour prciser que le calcul est 1D

On cr ensuite le maillage laide de blockMesh $ blockMesh


Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

65

Exercice n7 : Crer un solveur Darcy (5a/6)


$ mv 0/T 0/p $ gedit 0/p

Initiation OpenFOAM

On impose un diffrentiel de pression entre lente et la sortie du domaine

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

66

Exercice n7 : Crer un solveur Darcy (5b/6)


$ gedit constant/transportProperties

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

67

Exercice n7 : Crer un solveur Darcy (5c/6)


$ gedit system/controlDict

Initiation OpenFOAM

darcyFoam est un solveur stationnaire, un seul pas de temps est donc suffisant.

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

68

Exercice n7 : Crer un solveur Darcy (5d/6)

$ gedit system/fvSchemes

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

69

Exercice n7 : Crer un solveur Darcy (5e/6)


$ gedit system/fvSolution

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

70

Exercice n7 : Crer un solveur Darcy (6/6)


On lance la simulation : $ darcyFoam On va tracer les rsultats laide de loutil dchantillonnage sample, livr avec OpenFOAM, et du programme Gnuplot. Comme blockMesh, sample requiert un fichier dentre, sampleDict, plac quant--lui dans le rpertoire /system :

Initiation OpenFOAM

$ cp $FOAM_UTILITIES/postProcessing/sampling/sample/sampleDict system/. $ gedit system/sampleDict

On excute ensuite lchantillonnage :


$ sample

Et on trace le champ de pression avec gnuplot :


$ 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

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

71

Exercice n8 : Temprature dans un milieu poreux (1/7)


Objectif n1 : dvelopper un solveur qui rsout le transport dun champ scalaire dans un milieu poreux o la vitesse est value par une loi de Darcy.

(1) (2) (3)

Initiation OpenFOAM

Objectif n2 : Tracer les rsultats en fonction du temps en plaant des sondes. Objectif n3 : Changer les schmas de discrtisation

On va crer notre solveur en se basant sur le solveur prcdent 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 Mcanique des Fluides de Toulouse

72

Exercice n8 : Temprature dans un milieu poreux (2/7)


$ gedit createFields.H

Initiation OpenFOAM

Dclaration du flux de vitesse phi. - Il sagit dun champ surfacique (vecteur U projet sur les surfaces du maillage) - ncessaire pour utiliser loprateur divergence (fvm::div(phi,T) ) - Peut galement tre dclar avec #include createPhi.H

Dclaration du champ de temprature T.

En plus de la viscosit du fluide mu et de la permabilit k du milieu poreux, on dclare la diffisivit thermique DT et la porisit eps. Ils seront lus dans le fichier constant/transportProperties
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

73

Exercice n8 : Temprature dans un milieu poreux (3/7)


$ gedit darcyTemperatureFoam.C

Initiation OpenFOAM

Le flux surfacique phi est actualis partir de la nouvelle valeur du champ de vitesse U.

Rsolution de lquation dadvection/diffusion de la temprature

$ wclean $ wmake

on compile le programme darcyTemperatureFoam 74

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

Exercice n8 : Temprature dans un milieu poreux (4/7)

On cherche valuer la temprature dans un milieu poreux 1D

Initiation OpenFOAM

P1

Milieu poreux de permabilit k et de porosit eps

P0

Tin

Flux libre en sortie

On va se baser sur lexercice prcdent pour paramtrer le calcul


$ 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
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

75

Exercice n8 : Temprature dans un milieu poreux (5a/7)


$ gedit 0/T

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

76

Exercice n8 : Temprature dans un milieu poreux (5b/7)


$ gedit constant/transportProperties

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

77

Exercice n8 : Temprature dans un milieu poreux (5c/7)


$ gedit system/fvSchemes

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

78

Exercice n8 : Temprature dans un milieu poreux (5d/7)


$ gedit system/fvSolution

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

79

Exercice n8 : Temprature dans un milieu poreux (5e/7)


$ gedit system/controlDict

Initiation OpenFOAM

Les sondes sont des fonctions qui sont excutes au cours du calcul. Elles permettent de tracer la valeur dun champ pour une cellule donne (la sonde) au cours du temps. On peut prciser autant de sondes quon le dsire.

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

80

Exercice n8 : Temprature dans un milieu poreux (6/7)


On lance la simulation : $ darcyTemperatureFoam On va tracer les rsultats des sondes laide du script gnuplot suivant
$ gedit plot_probes

Initiation OpenFOAM

$ gnuplot persist plot_probes

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

81

Exercice n8 : Temprature dans un milieu poreux (7/7)


On remarque des oscillations dans la simulation prcdente. Elles sont dues une mauvaise stabilit des schmas numriques de convection utiliss. On peut utiliser un schma amont ou limiteur de pente en prcisant, dans system/fvSchemes Gauss upwind phi ou Gauss vanLeer au lieu de Gauss linear.

Initiation OpenFOAM
Le schma amont est plus stable, mais plus diffusif. Les schmas du type limiteur de pente semblent plus adapts.
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

82

Exercice n9 : Personnaliser des conditions aux limites (1/4)


Objectif : Crer des conditions aux limites personnalises
De base, OpenFOAM, gre un certain nombre de conditions la limite. Elles sont situes dans le rpertoire suivant :

Initiation OpenFOAM

$ cd $FOAM_SRC/finiteVolume/fields/fvPatchFields $ ls

Toutes ces conditions sont drives des conditions de base fixedValue et fixedGradient.
$ ls derived

Pour dfinir une condition la limite qui dpend du temps ou des autres champs, il existe plusieurs possibilits : Programmation en dure dans le code Programmation de condition aux limites personnalises Utilisation de lutilitaire swak4Foam (http://openfoamwiki.net/index.php/Contrib/swak4Foam)
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

83

Exercice n9 : Personnaliser des conditions aux limites (2/4)


Dans les exercices prcdents (6 et 7), nous valuons lcoulement dans un milieu poreux partir de la rsolution dune quation diffrentielle sur la pression. Les conditions aux limites sont donc prcises sur la pression. Dans certain cas cependant, il est plus commode de dfinir une vitesse en entre du domaine plutt quune pression. Il faut donc traduire cette condition dentre en vitesse en une condition dentre en pression via la relation :

Initiation OpenFOAM

Nous allons crer une condition la limite personnalise, inspire de la condition buoyantPressure, ( ) elle-mme drive dun 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 caractre buoyantPressure par darcyGradPressure lintrieur de tous les fichiers du rpertoire

$ gedit Make/files

$ gedit Make/options

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

84

Exercice n9 : Personnaliser des conditions aux limites (3a/4)


$ gedit darcyGradPressureFvPatchScalarField.H

Cette condition la limite drive de la condition de base fixedGradient

Initiation OpenFOAM

On prcise que le gradient de p sera calcul partir de U

Nom de la condition la limite quil faudra prciser dans les fichiers 0/p

Dclaration des constructeurs

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

85

Exercice n9 : Personnaliser des conditions aux limites (3b/4)


Suite de la dclaration des constructeurs et des constructeurs de copie

Initiation OpenFOAM

Dclaration de la fonction updateCoeffs(). Cest travers cette fonction que lexpression de la condition la limite est dfinie

Dclaration de la fonction write() qui crit les valeurs aux limites dans les fichiers timeDirectory/p

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

86

Exercice n9 : Personnaliser des conditions aux limites (4a/4)


$ gedit darcyGradPressureFvPatchScalarField.C

Initiation OpenFOAM

Dfinition des constructeurs et des constructeurs de copie


Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

87

Exercice n9 : Personnaliser des conditions aux limites (4b/4)


On rcupre la valeur du champ de vitesse U au niveau de la condition la limite On rcupre les valeurs de la viscosit du fluide et de la permabilit du milieu poreux dans le fichier transportProperties

Initiation OpenFOAM

On value ici le gradient de pression la limite selon la formule : mu.value() permet daccder la valeur de lobjet mu dclarer 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 Mcanique des Fluides de Toulouse

88

Exercice n10 : Modle 2 tempratures (1/6)


Objectif n1 : Rsoudre un transfert de chaleur dans un milieu poreux par un modle 2 quations (1)

Initiation OpenFOAM

(2) (3) (4) Objectif n2 : Utiliser des conditions la limite personnalises

On va crer 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
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

89

Exercice n10 : Modle 2 tempratures (2/6)


$ gedit createFields.H
Le champ U est maintenant initialis partir de 0/U, ce qui nous permet de dfinir des conditions dentre pour U

Initiation OpenFOAM

phi est cr en appelant createPhi.H

Dclaration des champs de temprature pour le solide et pour le fluide

Les constantes du modles seront lues dans le fichier constant/transportProperties


Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

90

Exercice n10 : Modle 2 tempratures (3/6)


$ gedit darcyTwoTemperaturesFoam.C

Initiation OpenFOAM

Rsolution de la temprature dans le fluide. Une partie du terme dchange est traite en implicite, lautre en explicite.

Rsolution de la temprature dans la matrice poreuse.

$ wclean $ wmake
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

91

Exercice n10 : Modle 2 tempratures (4/6)


On cherche valuer le transfert de chaleur dans un milieu poreux 1D via un modle deux tempratures Dans cet exemple, un milieu poreux initialement 573K est refroidit par linjection dun fluide 273K
Vitesse Uin impose en entre Milieu poreux de permabilit k et de porosit eps

Initiation OpenFOAM

P0

Temprature du fluide Tfin impose en entre

Flux de chaleur (fluide et solide) libre en sortie

On va se baser sur lexercice prcdent pour paramtrer le calcul


$ 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
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

92

Exercice n10 : Modle 2 tempratures (5a/6)


$ gedit 0/U

Initiation OpenFOAM

On impose une vitesse du fluide lentre du milieu. Cette vitesse va permettre dvaluer le gradient de pression lentre.

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

93

Exercice n10 : Modle 2 tempratures (5b/6)


$ gedit 0/p

Initiation OpenFOAM

On utilise ici la condition la limite darcyGradPressure dfinie dans lexercice prcdent. Le gradient de pression la limite est valu via :

On doit prciser dans le fichier system/controlDict que lon utilise la librairie ldarcyGradPressure.so

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

94

Exercice n10 : Modle 2 tempratures (5c/6)


$ gedit 0/Ts

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

95

Exercice n10 : Modle 2 tempratures (5d/6)


$ gedit 0/Tf

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

96

Exercice n10 : Modle 2 tempratures (5e/6)


$ gedit constant/transportProperties

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

97

Exercice n10 : Modle 2 tempratures (5f/6)


$ gedit system/controlDict

Initiation OpenFOAM

On prcise ici que lon va utiliser la librairie ldarcyGradPressure.so qui nous permettra dutiliser la condition la limite personnalise darcyGradPressure

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

98

Exercice n10 : Modle 2 tempratures (5g/6)


$ gedit system/fvSolution $ gedit system/fvSchemes

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

99

Exercice n10 : Modle 2 tempratures (6/6)


On lance la simulation : $ darcyTwoTemperaturesFoam On post-traite ensuite les rsultats (ici on a trac les valeurs de Ts et Tf en fonction du temps pour les 3 sondes)

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

100

Initiation OpenFOAM

Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse

101

Vous aimerez peut-être aussi