Académique Documents
Professionnel Documents
Culture Documents
code OpenFOAM
-
Tome I : Prsentation gnrale du code,
premires simulations et premiers
programmes
-
Cyprien Soulaine
(cyprien.soulaine@gmail.com)
Toulouse
27 et 28 mars 2013
Version 3.05
Objectifs
- 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)
Prprocesseurs :
Initiation OpenFOAM
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)
openfoam.com
Initiation OpenFOAM
openfoam.com
openfoam.com
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)
$ cd ~
$ mkdir -p $FOAM_RUN
Initiation OpenFOAM
avec Ansys
Conversion avec lutilitaire
ansysToFoam
Rsolution de lquation de la
chaleur
Solver : laplacianFoam
573K
Flux nul
temps
$ laplacianFoam
4 - Choix du
champ 5 - Pour lire
visualiser 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 Tutorial dtaill dans le User Guide
movingWall
fixedWalls
fixedWalls
Rsolution de Navier-Stokes incompressible
en rgime laminaire (solver icoFoam)
y
fixedWalls
x
$ 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
Initiation OpenFOAM
4
5
Dfinition des bords de la Attention lordre de numrotation des points est important !!
gomtrie ( patches )
pour application des On prcise que le calcul est 2D
conditions aux limites.
Les patches peuvent tre de plusieurs types :
Les faces orthogonales a -patch (type gnrique)
laxe Oz sont vides -wall (pour les conditions de mur, utile pour la turbulence)
pour prciser que le -cyclic (pour les conditions priodiques)
calcul est 2D
-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 : $ blockMesh
Contrle du maillage : $ checkMesh
Visualisation du maillage : $ paraFoam
Initiation OpenFOAM
4 - Apply 5 - wireframe
2 Visualiser
le nom des
patch sur la
gomtrie
1 - Choix des
parties visualiser
Gestion de la discrtisation en
temps (dbut, fin, pas de temps)
filters>alphabetical>CellCenter>Apply
Objectifs :
Simuler un coulement de Poiseuille dans un tube (2D) , avec condition de symtrie
symmetryPlane
outlet
inlet
y bottomWall
x
$ run
$ cp r $FOAM_TUTORIALS/incompressible/icoFoam/cavity Exo3
$ cd Exo3
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse 30
Exercice n3 : Ecoulement de Poiseuille (2/4)
$ gedit constant/polyMesh/blockMeshDict
symmetryPlane
3 2
inlet 7 outlet
6
Initiation OpenFOAM
y z 0
x 1
4
bottomWall
$ blockMesh
Cyprien Soulaine - Institut de Mcanique des Fluides de Toulouse 31
Exercice n3 : Ecoulement de Poiseuille (3a/4)
$ gedit 0/U
Initiation OpenFOAM
3 Dslectionner la
visualisation du champ de
pression p
$ 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
3 2
Initiation OpenFOAM
7 6
0 1
fixedWalls
y z
x
Tension de surface
AVANT APRES
1 solver = 1 programme
(par exemple lquation de la chaleur se rsout avec le solveur laplacianFoam)
Initiation OpenFOAM
Les solveurs sont classs par type (basic, heat transfer, combustion, incompressible,
multiphase.)
Cration de la matrice
fvm:: termes implicites
fvc:: termes explicites
T et DT dclars dans
createField.H
Comment faire ??
Compilation de myIcoFoam
$ wclean
$ wmake
T=293 K
temprature
Initiation OpenFOAM
fixedWalls
chaleur (notre solver myIcoFoam)
y
fixedWalls T=293 K
x
$ 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
$ myIcoFoam
$ paraFoam
Initiation OpenFOAM
$ rm write.H
$ wclean
$ wmake
$ cd Exo7
$ rm Allrun Allclean flange.ans
Dfinition du maillage 3
2
(Maillage homogne, 1 seule inlet 7 6 outlet
maille dans les directions y et 0
1
z car le calcul est 1D)
y z 4 5
x
$ cp $FOAM_TUTORIALS/incompressible/icoFoam/cavity/constant/
polyMesh/blockMeshDict constant/polyMesh/.
Les faces orthogonales $ gedit constant/polyMesh/blockMeshDict
aux axes Oy et Oz sont
vides pour prciser
que le calcul est 1D
On impose un diffrentiel de
pression entre lente et la sortie du
domaine
$ gedit system/controlDict
Initiation OpenFOAM
$ gedit system/fvSchemes
Initiation OpenFOAM
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 :
$ cp $FOAM_UTILITIES/postProcessing/sampling/sample/sampleDict system/.
Initiation OpenFOAM
$ gedit system/sampleDict
(2)
(3)
$ gedit darcyTemperatureFoam.C
Initiation OpenFOAM
Rsolution de lquation
dadvection/diffusion de la temprature
$ wclean
$ wmake
on compile le programme
darcyTemperatureFoam
$ gedit system/controlDict
Initiation OpenFOAM
On va tracer les rsultats des sondes laide du script gnuplot suivant $ gedit plot_probes
Initiation OpenFOAM
Le schma amont est plus stable, mais plus diffusif. Les schmas du type limiteur de pente semblent
plus adapts.
$ 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
de la permabilit du
milieu poreux dans le
fichier transportProperties
$ wclean
$ wmake libso
(3)
(4)
Le champ U est
maintenant initialis
partir de 0/U, ce qui
Initiation OpenFOAM
phi est cr en
appelant
createPhi.H
Dclaration des
champs de
temprature pour le
solide et pour le
fluide
Rsolution de la temprature
dans la matrice poreuse.
$ wclean
$ wmake
Dans cet exemple, un milieu poreux initialement 573K est refroidit par linjection dun
fluide 273K
Initiation OpenFOAM
$ 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
$ gedit system/controlDict
Initiation OpenFOAM
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