OpenFoam: simulation d'un venturi
Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

OpenFoam: simulation d'un venturi



  1. #1
    Bastien_student

    OpenFoam: simulation d'un venturi


    ------

    Bonjour à tous !

    Je suis étudiant ingénieur. Dans le cadre de mon stage je dois utiliser OpenFoam (sous ubuntu 14). J'ai réalisé le tutoriel sur "DamBreak" et je pense avoir compris le fonctionnement du logiciel. Je reste un débutant malgré tout.

    Cependant, mon sujet de stage porte sur un venturi "simplifié". Le schémas est fourni en PJ.
    Nom : Venturi.png
Affichages : 271
Taille : 102,4 Ko

    1) Je dois imposé une vitesse initiale ainsi que une hauteur d'eau. Le but est de trouver la meilleure configuration pour une vitesse optimale au centre. Je ne sais pas comment imposé une vitesse (ou un débit).
    Pensez vous que je puisse faire cela à partir du tuto DamBreak ? Sinon lequel me conseillez-vous ?


    2) J'ai réaliser le maillage sur blockMeshDict puis j'ai utilisé blockMesh mais ça ne marche pas.
    D'où provient mon erreur ? Je ne peux mettre le fichier en PJ, je l'ai donc collé ci-dessous (c'est un peu long)

    /*--------------------------------*- C++ -*----------------------------------*\
    | ========= | |
    | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
    | \\ / O peration | Version: 2.3.1 |
    | \\ / A nd | Web: www.OpenFOAM.org |
    | \\/ M anipulation | |
    \*---------------------------------------------------------------------------*/
    FoamFile
    {
    version 2.0;
    format ascii;
    class dictionary;
    object blockMeshDict;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

    convertToMeters 1;

    vertices
    (
    (0 0 0) // 0
    (30 0 0) // 1
    (31 0 0)
    (30 0 1.5)
    (31 0 1.5)
    (0 2 0) // 5
    (24.419 2 0)
    (25 2 0)
    (25.581 2 0)
    (30 2 0)
    (31 2 0) // 10
    (0 2 0.1) // 11
    (24.419 2 0.1)
    (25 2 0.1)
    (25.581 2 0.1)
    (30 2 0.1) // 15
    (31 2 0.1) // 16
    (25 2 0.11) // 17
    (0 2 0.24) // 18
    (24.419 2 0.24)
    (25.581 2 0.24)
    (30 2 0.24)
    (31 2 0.24) //22
    (0 2 0.25) // 23
    (24.419 2 0.25)
    (25 2 0.25)
    (25.581 2 0.25)
    (30 2 0.25)
    (31 2 0.25) // 28
    (0 2 1.5) // 29
    (24.419 2 1.5)
    (25 2 1.5)
    (25.581 2 1.5)
    (30 2 1.5)
    (31 2 1.5) // 34
    (30 0 0.1) // 35
    (30 0 0.24)
    (30 0 0.25)
    (31 0 0.1)
    (31 0 0.24)
    (31 0 0.25) // 40
    (0 2.4 0) // 41
    (24.419 2.4 0)
    (25 2.4 0)
    (25.581 2.4 0)
    (30 2.4 0)
    (31 2.4 0) // 46
    (0 2.4 0.1) // 47
    (24.419 2.4 0.1)
    (25 2.4 0.1)
    (25.581 2.4 0.1)
    (30 2.4 0.1) // 51
    (31 2.4 0.1) // 52
    (25 2.4 0.11) // 53
    (0 2.4 0.24) // 54
    (24.419 2.4 0.24)
    (25.581 2.4 0.24)
    (30 2.4 0.24)
    (31 2.4 0.24) //58
    (0 2.4 0.25) // 59
    (24.419 2.4 0.25)
    (25 2.4 0.25)
    (25.581 2.4 0.25)
    (30 2.4 0.25)
    (31 2.4 0.25) // 64
    (0 2.4 1.5)
    (24.419 2.4 1.5)
    (25 2.4 1.5)
    (25.581 2.4 1.5)
    (30 2.4 1.5)
    (31 2.4 1.5) // 70
    (0 3 0) // 71
    (24.419 3 0)
    (25 3 0)
    (25.581 3 0)
    (30 3 0)
    (31 3 0) // 76
    (0 3 0.1) // 77
    (24.419 3 0.1)
    (25 3 0.1)
    (25.581 3 0.1)
    (30 3 0.1) // 81
    (31 3 0.1) // 82
    (25 3 0.11) // 83
    (0 3 0.24) // 84
    (24.419 3 0.24)
    (25.581 3 0.24)
    (30 3 0.24)
    (31 3 0.24) //88
    (0 3 0.25) // 89
    (24.419 3 0.25)
    (25 3 0.25)
    (25.581 3 0.25)
    (30 3 0.25)
    (31 3 0.25) // 94
    (0 3 1.5)
    (24.419 3 1.5)
    (25 3 1.5)
    (25.581 3 1.5)
    (30 3 1.5)
    (31 3 1.5) // 100


    );

    blocks
    (
    hex (1 2 10 9 35 38 16 15) (1 1 1) simpleGrading (1 1 1) // 12 blocks dans la fosse 0<y<2
    hex (35 38 16 15 36 39 22 21) (1 1 1) simpleGrading (1 1 1)
    hex (36 39 22 21 37 40 28 27) (1 1 1) simpleGrading (1 1 1)
    hex (37 40 28 27 3 4 34 33) (1 1 1) simpleGrading (1 1 1)
    hex (9 10 46 45 15 16 52 51) (1 1 1) simpleGrading (1 1 1)
    hex (15 16 52 51 21 22 58 57) (1 1 1) simpleGrading (1 1 1)
    hex (21 22 58 57 27 28 64 63) (1 1 1) simpleGrading (1 1 1)
    hex (27 28 64 63 33 34 70 69) (1 1 1) simpleGrading (1 1 1)
    hex (45 46 76 75 51 52 82 81) (1 1 1) simpleGrading (1 1 1)
    hex (51 52 82 81 57 58 88 87) (1 1 1) simpleGrading (1 1 1)
    hex (57 58 88 87 63 64 94 93) (1 1 1) simpleGrading (1 1 1)
    hex (63 64 94 93 69 70 100 99) (1 1 1) simpleGrading (1 1 1)
    hex (5 6 42 41 11 12 48 47) (1 1 1) simpleGrading (1 1 1) // 8 blocks 0<x<24.419
    hex (11 12 48 47 18 19 55 54) (1 1 1) simpleGrading (1 1 1)
    hex (18 19 55 54 23 24 60 59) (1 1 1) simpleGrading (1 1 1)
    hex (23 24 60 59 29 30 66 65) (1 1 1) simpleGrading (1 1 1)
    hex (41 42 72 71 47 48 78 77) (1 1 1) simpleGrading (1 1 1)
    hex (47 48 78 77 54 55 85 84) (1 1 1) simpleGrading (1 1 1)
    hex (54 55 85 84 59 60 80 89) (1 1 1) simpleGrading (1 1 1)
    hex (59 60 80 89 65 66 96 95) (1 1 1) simpleGrading (1 1 1)
    hex (8 9 45 44 14 15 51 50) (1 1 1) simpleGrading (1 1 1) // 8 blocks 25.581<x<30
    hex (14 15 51 50 20 21 57 56) (1 1 1) simpleGrading (1 1 1)
    hex (20 21 57 56 26 27 63 62) (1 1 1) simpleGrading (1 1 1)
    hex (26 27 63 62 32 33 69 68) (1 1 1) simpleGrading (1 1 1)
    hex (44 45 75 74 50 51 81 80) (1 1 1) simpleGrading (1 1 1)
    hex (50 51 81 80 56 57 87 86) (1 1 1) simpleGrading (1 1 1)
    hex (56 57 87 86 62 63 93 92) (1 1 1) simpleGrading (1 1 1)
    hex (62 63 93 92 68 69 99 98) (1 1 1) simpleGrading (1 1 1)
    hex (6 7 43 42 12 13 49 48) (1 1 1) simpleGrading (1 1 1) // 8 blocks 24.419 <x< 25.581
    hex (7 8 44 43 13 14 50 49) (1 1 1) simpleGrading (1 1 1)
    hex (24 25 61 60 30 31 67 66) (1 1 1) simpleGrading (1 1 1)
    hex (25 26 62 61 31 32 68 67) (1 1 1) simpleGrading (1 1 1)
    hex (42 43 73 72 48 49 79 78) (1 1 1) simpleGrading (1 1 1)
    hex (43 44 74 73 49 50 80 79) (1 1 1) simpleGrading (1 1 1)
    hex (60 61 91 90 66 67 97 96) (1 1 1) simpleGrading (1 1 1)
    hex (61 62 92 91 67 68 98 97) (1 1 1) simpleGrading (1 1 1)
    hex (12 13 49 48 19 19 55 55) (1 1 1) simpleGrading (1 1 1) // 8 prismes
    hex (49 50 14 13 56 56 20 20) (1 1 1) simpleGrading (1 1 1)
    hex (48 49 79 78 55 79 79 55) (1 1 1) simpleGrading (1 1 1)
    hex (49 50 79 80 56 86 86 56) (1 1 1) simpleGrading (1 1 1)
    hex (17 17 53 53 25 24 60 61) (1 1 1) simpleGrading (1 1 1)
    hex (62 62 26 26 61 53 17 25) (1 1 1) simpleGrading (1 1 1)
    hex (60 61 91 80 53 83 83 53) (1 1 1) simpleGrading (1 1 1)
    hex (61 62 92 91 53 83 83 53) (1 1 1) simpleGrading (1 1 1)
    hex (55 49 79 85 60 53 83 80) (1 1 1) simpleGrading (1 1 1) // 2 parallèlogrammes
    hex (49 56 86 79 53 62 92 83) (1 1 1) simpleGrading (1 1 1)

    );

    edges
    (
    );

    boundary
    (
    leftWall
    {
    type wall;
    faces
    (
    (5 11 47 41)
    (11 18 54 47)
    (18 23 59 54)
    (23 29 65 59)
    (41 47 77 71)
    (47 54 84 77)
    (54 59 89 84)
    (59 65 95 89)
    );
    }
    rightWall
    {
    type wall;
    faces
    (
    (76 82 52 46)
    (82 88 58 52)
    (88 94 64 58)
    (94 100 70 64)
    (46 52 16 10)
    (52 58 22 16)
    (58 64 28 22)
    (64 70 34 28)
    (10 16 38 2)
    (16 22 39 38)
    (22 28 40 39)
    (28 34 4 40)
    );
    }
    lowerWall
    {
    type wall;
    faces
    (
    (5 6 12 11) //
    (11 12 19 18)
    (18 19 24 23)
    (23 24 30 29)
    (6 7 13 12) //
    (7 8 14 13)
    (13 19 19 12) // 4 triangles
    (13 20 20 14)
    (17 25 24 17)
    (25 26 26 17)
    (55 19 24 60) // 6 faces du Venturi
    (19 13 49 55)
    (13 20 56 49)
    (20 26 62 56)
    (62 53 17 26)
    (60 53 17 24)
    (55 49 53 60 // 2 parallelogrammes
    (49 56 62 53)
    (24 25 31 30) //
    (25 26 32 31)
    (8 9 15 14) //
    (14 15 21 20)
    (20 21 27 26)
    (26 27 33 32)
    (1 35 15 9) // fosse 12G + 4 bas
    (35 36 21 15)
    (36 37 27 21)
    (27 33 3 37)
    (9 15 51 45)
    (15 21 57 51)
    (21 27 63 57)
    (27 33 69 63)
    (45 51 81 75)
    (51 57 87 81)
    (57 63 93 87)
    (63 69 99 93)
    (1 2 38 35) ////
    (35 38 39 36)
    (36 39 40 37)
    (37 40 4 3)
    );
    }
    atmosphere
    {
    type patch;
    faces
    (
    (71 77 78 72)
    (77 84 85 78)
    (84 89 90 85)
    (89 95 96 90)
    (72 78 79 73)
    (73 79 80 74)
    (78 85 85 79) // 4 triangles
    (80 79 79 86)
    (91 83 83 90)
    (92 83 83 91)
    (90 83 79 85) // 2 parallelogrammes
    (83 92 86 79)
    (74 80 81 75)
    (80 86 87 81)
    (86 92 93 87)
    (92 98 99 93)
    (75 81 82 76)
    (81 87 88 82)
    (87 93 94 88)
    (93 99 100 94)
    );
    }
    );

    mergePatchPairs
    (
    );

    // ****************************** ****************************** ************* //


    Merci beaucoup

    -----

  2. #2
    mAx6010

    Re : OpenFoam: simulation d'un venturi

    Hello,
    Pour ta question 1 (si mes souvenirs sont bons, DamBreak fait du multiphase)
    Si tu debutes sous OpenFOAM, je commencerais deja par utiliser un solveur plus basique du genre simpleFoam (monophase incompressible).
    ça te permettra deja de te familiariser avec l environnement.
    Pour imposer un debit, tu dois imposer une vitesse.
    Pour ce faire tu vas dans le repertoire /0 et tu modifies ton fichier U
    Tu imposes une vitesse sur le patch en question avec fixedValue par exemple; tu imposes aussi une vitesse nulle sur les parois, et aussi un zeroGradient sur ta sortie qui devrait etre une condition en pression.
    Il faut aussi modifier les fichiers p et autres fichiers pour la turbu
    (le mieux etant de choper un tutorial dont les CL ressemblent aux tiennes > commence deja par faire de l incompressible monophasique; qd t auras compris, tu passeras au diphasique)

    Pour ta deuxieme question (qui devrait etre en fait ta premiere question): sans le maillage tu ne pourras rien faire. Donc tu dois deja regler ton probleme de maillage.
    Comme tu l as compris, la definition de ton maillage se trouve dans le fichier blockMeshDict, et pour construire ton maillage tu appelles blockMesh.
    Maintenant ça ne fonctionne pas, (ça va arriver tres souvent) mais il faut lire les messages d erreur c est ce qui va te permettre de rectifier le tir.
    Bref il faut debugger... la routine quoi

  3. #3
    Bastien_student

    Re : OpenFoam: simulation d'un venturi

    Merci pour ta réponse rapide !!

    Je vais suivre tes conseils et commencer par un solveur basique comme simpleFoam. Je dois mieux me familiariser avec le logiciel. Je ferai le multi phase plus tard.

    Pour le maillage je vais donc chercher à débugger en suivant les messages d'erreurs. Je pense que c'est le plus long à faire.



    Comment trouver le tutorial adapté à mes conditions limites ? Je ne dois pas tous les exécuter ou juste regarder le contenu des fichiers ?

  4. #4
    mAx6010

    Re : OpenFoam: simulation d'un venturi

    Il faut juste regarder dans le dossier 0 des tutoriaux
    Mais dans ton cas, regarde "pitzDaily" dans les tutoriaux du solveur simpleFoam (incompressible turbulent)

  5. A voir en vidéo sur Futura
  6. #5
    Bastien_student

    Re : OpenFoam: simulation d'un venturi

    Super merci, je vais faire ça cet après-midi,

    La semaine prochaine je suis en vacance, si j'ai quelques soucis je reposterai la semaine suivante.

    Bonne journée

  7. #6
    Bastien_student

    Re : OpenFoam: simulation d'un venturi

    Hello,

    J'ai réalisé le tuto de simpleFoam comme tu m'avais conseillé.
    J'ai maintenant une idée précise de ce que je veux, mon objectif étant toujours de réaliser une simulation du mon Venturi la plus précise de la réalité.

    Pour le maillage, c'est ok. Mon tuteur me conseille fortement de partir du tuto "damBreak" et d'utiliser le solveur interFoam.

    Lorsque je visualise sur paraFoam, mon maillage ressemble à une "boite" et est fermé. Je ne peux pas visualiser correctement la vitesse à l’intérieur du Venturi.
    Cela est-il un paramètre de paraFoam à régler ou un mauvais maillage ?

    J'ai compris comment imposer des conditions initiales de vitesse. Cependant je souhaiterai avoir un courant continu et non un "bloc d'eau" qui se casse et va contre les parois.
    J'aimerai avoir inlet à gauche avec une vitesse imposée, outlet outflow à droite, tout ça encadré par 3 "walls" et enfin le dessus à Pression atmosphérique.
    Pensez-vous que ces conditions ce rapprochent au maximum de la réalité ?
    Dois je supprimer le fichier setFieldsdict ? Comment générer ce courant à partir de Controldict comme dans "PitzDaly"?

    Bonne journée

  8. #7
    mAx6010

    Re : OpenFoam: simulation d'un venturi

    Hello,
    Pour paraFoam, c est le post processeur integré à OF.
    La par contre je connais pas trop car je passais par paraview, mais ça doit etre kif kif pareil.
    Lorsque tu as tes resultats, ceux-ci sont regroupés par "patch".
    Donc tu dois selectionner le patch que tu veux et afficher tes donnees.
    Dans ton cas pour avoir une idee de ton maillage en 3d, essaie d afficher la surface de ton patch wall (avec les edges, pour voir le maillage), tu auras la surface externe de ton domaine.
    Pour afficher la distribution des vitesses, il te faut un plan de coupe.
    Tu dois avoir le moyen de faire des splits a partir d un volume (sous paraview c est Slice)

    le fichier setFieldsdict te sert a indentifier le domaine de cellule pour lequel tu lui attribueras une phase, donc faut pas le supprimer (mais tu peux le faire par curiosité, OF te mettra un message d erreur)

    Les parametres dans ControlDict pour PitzDaily sont facultatifs: en l occurence c'est pour creer des fonctions de courant (que tu peux aussi recuperer avec le postprocessing).
    Essaie d y aller step by step,
    Toutes tes Conditions aux Limites sont dans le dossier 0
    Si tu ne connais pas, je te conseille http://www.cfd-online.com/Forums/openfoam/

  9. #8
    Bastien_student

    Re : OpenFoam: simulation d'un venturi

    Salut,
    Merci pour tes bons conseils j'ai bien avancé dans mon projet grâce à toi !
    Mon maillage est à présent fini, CI et "boundary" aussi. J'ai supprimé la partie "box" d'eau initiale du fichier SetFieldsDict également.
    Cependant, j'ai un petit souci :
    2.png

    3.png

    En effet, j'ai imposé une vitesse initiale (0.14 m/s) avec une hauteur "inlet" de 30 cm afin de créer un flux continu et d'étudier les variations de vitesse.
    Comme on voit sur les images, je n'arrive pas à créer ce flux.
    Si cela vient le suppression du SetFieldsDict, comment gérer ça ? La vitesse est-elle trop faible ? Le problème vient-il des conditions initiales ?

    Merci

  10. #9
    mAx6010

    Re : OpenFoam: simulation d'un venturi

    Hello,
    Comme ça je ne sais pas trop, ce que je vois par contre c est qu il y a un probleme de continuite entre ton inlet et tes wall adjacents (ta variable alpha water n est pas continue).
    Je vais me repeter, mais a ta place, je ferai rapido un calcul en incompressible avec simplefoam sur ton maillage, pour etre sur que tes problemes sont lies au solver interFoam, et pas a autre chose.
    Tu parles de suppression du SetFieldsDict, il ne faut pas le supprimer.
    As-tu fais un display de ta variable alpha_water au temps t=0?

  11. #10
    Bastien_student

    Re : OpenFoam: simulation d'un venturi

    Re,

    Je vais suivre ton conseil et vérifier le maillage avec simpleFoam. Je n'ai pas supprimé le fichier SetFieldsDict, juste la "box" d'eau initiale du damBreak.
    Faut-il avoir impérativement avoir un bloc d'eau initialement ?

    A t=0 j'ai ceci :
    Nom : 8.png
Affichages : 230
Taille : 5,1 Ko
    Seule la partie inlet contient l'eau (soit alfawater=1)

  12. #11
    mAx6010

    Re : OpenFoam: simulation d'un venturi

    Non c est pas bon.
    Extrude ta face bleue sur tout le domaine, et initialise le volume bleu obtenu avec ton liquide

  13. #12
    Bastien_student

    Re : OpenFoam: simulation d'un venturi

    Bonjour,

    Merci mAx6010 pour tes conseils, j'ai (enfin) réussi ma simulation sur OpenFoam et les résultats sont cohérents !!
    Cette dernière a été réalisée dans le cas d'un régime laminaire.

    Je dois maintenant refaire un test mais en régime turbulent. Je pense utiliser le fichier de base damBreak mais en régime turbulent (RAS).
    Mon maillage sera donc le même et les conditions initiale également.
    Le modèle utilisé est le "k-epsilon".

    Comment dois-je définir les valeur de k et epsilon ? Dois-je les calculer avant ?

    Peut-être utiliser ce lien suivant : http://www.cfd-online.com/Tools/turbulence.php ?

  14. #13
    Jaunin
    Animateur Technologies et Bricolage

    Re : OpenFoam: simulation d'un venturi

    Bonjour,
    C'est juste pour information:

    http://www.comsol.com/events/6761/th...&utm_content=1

    Cordialement.
    Jaunin__

  15. #14
    Jaunin
    Animateur Technologies et Bricolage

    Re : OpenFoam: simulation d'un venturi

    Oups, désolé, ce n'est pas ce que je croyais, le sujet était tout autre.

  16. #15
    mAx6010

    Re : OpenFoam: simulation d'un venturi

    Désolé du retard j etais en conges.
    Pour le RANS (et pas RAS), ton maillage reste quasiment le même, il faut juste s assurer que la hauteur de ta premiere maille par rapport à ton wall soit à bonne distance.
    Je te renvoie à la theorie de la turbu et plus particulierement à la log-law pour la sous-couche visqueuse (en gros si tu as un maillage trop fin, ta premiere cellule tombe dans la couche limite laminaire et donc le solveur va la traiter avec son modele de turbulence)
    Tu as pris le bon lien pour tes conditions limites en regime turbulent

Discussions similaires

  1. installation openFOAM pour windows 32
    Par paline31 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 20/03/2013, 11h43
  2. OpenFOAM - modeles de paroi
    Par mAx6010 dans le forum Physique
    Réponses: 8
    Dernier message: 04/02/2013, 07h32
  3. Tutoriel Openfoam
    Par stiflerbassist dans le forum Physique
    Réponses: 7
    Dernier message: 31/07/2011, 18h29
  4. openFoam
    Par chwebij dans le forum Technologies
    Réponses: 0
    Dernier message: 22/03/2007, 15h51
  5. OpenFoam
    Par chwebij dans le forum Technologies
    Réponses: 0
    Dernier message: 01/02/2007, 13h34
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...