101
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 ([email protected])

Initiation Openfoam Tome 1v3.05

  • Upload
    cypiii

  • View
    535

  • Download
    0

Embed Size (px)

DESCRIPTION

Transparent de la formation OpenFOAM du 27 et 28 mars à Toulouse

Citation preview

Page 1: Initiation Openfoam Tome 1v3.05

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

([email protected])

Page 2: Initiation Openfoam Tome 1v3.05

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® …

Page 3: Initiation Openfoam Tome 1v3.05

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)

Page 4: Initiation Openfoam Tome 1v3.05

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)

Page 5: Initiation Openfoam Tome 1v3.05

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® ?

Page 6: Initiation Openfoam Tome 1v3.05

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…)

Page 7: Initiation Openfoam Tome 1v3.05

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

Page 8: Initiation Openfoam Tome 1v3.05

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

Page 9: Initiation Openfoam Tome 1v3.05

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 ?

Page 10: Initiation Openfoam Tome 1v3.05

Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse

Initia

tio

n à

Op

en

FO

AM

®

10

OpenFOAM à l’IMFT ? (intranet de Cosinus)

Page 11: Initiation Openfoam Tome 1v3.05

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 ?

Page 12: Initiation Openfoam Tome 1v3.05

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)

Page 13: Initiation Openfoam Tome 1v3.05

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 »

Page 14: Initiation Openfoam Tome 1v3.05

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

Page 15: Initiation Openfoam Tome 1v3.05

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

Page 16: Initiation Openfoam Tome 1v3.05

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

Page 17: Initiation Openfoam Tome 1v3.05

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 ¶

Page 18: Initiation Openfoam Tome 1v3.05

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 ¶

Page 19: Initiation Openfoam Tome 1v3.05

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

Page 20: Initiation Openfoam Tome 1v3.05

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

Page 21: Initiation Openfoam Tome 1v3.05

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)

Page 22: Initiation Openfoam Tome 1v3.05

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

Page 23: Initiation Openfoam Tome 1v3.05

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

Page 24: Initiation Openfoam Tome 1v3.05

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)

Page 25: Initiation Openfoam Tome 1v3.05

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,

Page 26: Initiation Openfoam Tome 1v3.05

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

Page 27: Initiation Openfoam Tome 1v3.05

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 ¶

Page 28: Initiation Openfoam Tome 1v3.05

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

Page 29: Initiation Openfoam Tome 1v3.05

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

Page 30: Initiation Openfoam Tome 1v3.05

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

Page 31: Initiation Openfoam Tome 1v3.05

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¶

Page 32: Initiation Openfoam Tome 1v3.05

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¶

Page 33: Initiation Openfoam Tome 1v3.05

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 ¶

Page 34: Initiation Openfoam Tome 1v3.05

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

Page 35: Initiation Openfoam Tome 1v3.05

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

Page 36: Initiation Openfoam Tome 1v3.05

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

Page 37: Initiation Openfoam Tome 1v3.05

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

Page 38: Initiation Openfoam Tome 1v3.05

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

Page 39: Initiation Openfoam Tome 1v3.05

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¶

Page 40: Initiation Openfoam Tome 1v3.05

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

Page 41: Initiation Openfoam Tome 1v3.05

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 ¶

Page 42: Initiation Openfoam Tome 1v3.05

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 ¶

Page 43: Initiation Openfoam Tome 1v3.05

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 ¶

Page 44: Initiation Openfoam Tome 1v3.05

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

Page 45: Initiation Openfoam Tome 1v3.05

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)

Page 46: Initiation Openfoam Tome 1v3.05

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 ?

Page 47: Initiation Openfoam Tome 1v3.05

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

Page 48: Initiation Openfoam Tome 1v3.05

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

Page 49: Initiation Openfoam Tome 1v3.05

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 ¶

Page 50: Initiation Openfoam Tome 1v3.05

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

Page 51: Initiation Openfoam Tome 1v3.05

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

Page 52: Initiation Openfoam Tome 1v3.05

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

Page 53: Initiation Openfoam Tome 1v3.05

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 ¶

Page 54: Initiation Openfoam Tome 1v3.05

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

Page 55: Initiation Openfoam Tome 1v3.05

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

Page 56: Initiation Openfoam Tome 1v3.05

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

Page 57: Initiation Openfoam Tome 1v3.05

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

Page 58: Initiation Openfoam Tome 1v3.05

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

Page 59: Initiation Openfoam Tome 1v3.05

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

Page 60: Initiation Openfoam Tome 1v3.05

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 ¶

Page 61: Initiation Openfoam Tome 1v3.05

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)

Page 62: Initiation Openfoam Tome 1v3.05

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 ¶

Page 63: Initiation Openfoam Tome 1v3.05

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.

Page 64: Initiation Openfoam Tome 1v3.05

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

Page 65: Initiation Openfoam Tome 1v3.05

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

Page 66: Initiation Openfoam Tome 1v3.05

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 ¶

Page 67: Initiation Openfoam Tome 1v3.05

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 ¶

Page 68: Initiation Openfoam Tome 1v3.05

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.

Page 69: Initiation Openfoam Tome 1v3.05

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¶

Page 70: Initiation Openfoam Tome 1v3.05

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 ¶

Page 71: Initiation Openfoam Tome 1v3.05

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 ¶

Page 72: Initiation Openfoam Tome 1v3.05

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 ¶

Page 73: Initiation Openfoam Tome 1v3.05

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.

Page 74: Initiation Openfoam Tome 1v3.05

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

Page 75: Initiation Openfoam Tome 1v3.05

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

Page 76: Initiation Openfoam Tome 1v3.05

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¶

Page 77: Initiation Openfoam Tome 1v3.05

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 ¶

Page 78: Initiation Openfoam Tome 1v3.05

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¶

Page 79: Initiation Openfoam Tome 1v3.05

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 ¶

Page 80: Initiation Openfoam Tome 1v3.05

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.

Page 81: Initiation Openfoam Tome 1v3.05

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 ¶

Page 82: Initiation Openfoam Tome 1v3.05

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.

Page 83: Initiation Openfoam Tome 1v3.05

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.

Page 84: Initiation Openfoam Tome 1v3.05

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

Page 85: Initiation Openfoam Tome 1v3.05

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

Page 86: Initiation Openfoam Tome 1v3.05

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

Page 87: Initiation Openfoam Tome 1v3.05

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

Page 88: Initiation Openfoam Tome 1v3.05

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

Page 89: Initiation Openfoam Tome 1v3.05

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

Page 90: Initiation Openfoam Tome 1v3.05

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 ¶

Page 91: Initiation Openfoam Tome 1v3.05

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 ¶

Page 92: Initiation Openfoam Tome 1v3.05

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

Page 93: Initiation Openfoam Tome 1v3.05

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.

Page 94: Initiation Openfoam Tome 1v3.05

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

Page 95: Initiation Openfoam Tome 1v3.05

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 ¶

Page 96: Initiation Openfoam Tome 1v3.05

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 ¶

Page 97: Initiation Openfoam Tome 1v3.05

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 ¶

Page 98: Initiation Openfoam Tome 1v3.05

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

Page 99: Initiation Openfoam Tome 1v3.05

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 ¶

Page 100: Initiation Openfoam Tome 1v3.05

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 ¶

Page 101: Initiation Openfoam Tome 1v3.05

Cyprien Soulaine - Institut de Mécanique des Fluides de Toulouse

Initia

tio

n à

Op

en

FO

AM

®

101