Outils pour utilisateurs

Outils du site


prog:openfoam

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
prog:openfoam [2020/07/31 07:40] – Ajout de l'exemple en vrac rootprog:openfoam [2020/08/01 23:43] (Version actuelle) – [Modélisation] : fix typo root
Ligne 31: Ligne 31:
 ====Modélisation==== ====Modélisation====
  
-icoFoam : solver for laminar, isothermal, incompressible flow +===Programmes===
-pisoFoam : solver will be used for turbulent, isothermal, incompressible flow+
  
-blockMesh mesh generator +''blockMesh'' : générateur de maillage. 
-A besoin d'un fichier : system/blockMeshDict dont le format est :+ 
 +''icoFoam'' solveur pour des fluides laminaires, isothermes et incompressibles. 
 + 
 +''pisoFoam'' : solveur pour des fluides turbulents, isothermes et incompressibles. 
 + 
 +===Configuration du maillage=== 
 + 
 +Il faut remplir le fichier ''system/blockMeshDict'' 
 + 
 +<code>
 // Entête // Entête
 FoamFile FoamFile
 { {
-    version     2.0; +  version     2.0; 
-    format      ascii; +  format      ascii; 
-    class       dictionary; +  class       dictionary; 
-    object      blockMeshDict;+  object      blockMeshDict;
 } }
 +
 // Coefficient réducteur de la position des sommets. // Coefficient réducteur de la position des sommets.
 scale   0.1; scale   0.1;
 +
 // Les sommets de la forme où le fluide circulera. // Les sommets de la forme où le fluide circulera.
 vertices vertices
 ( (
-    (0 0 0) // Sommet 0 +  (0 0 0) // Sommet 0 
-    (1 0 0) +  (1 0 0) 
-    (1 1 0) +  (1 1 0) 
-    (0 1 0) +  (0 1 0) 
-    (0 0 0.1) // Une épaisseur égale à scale indique une modélisation 2D. +  (0 0 0.1) // Une épaisseur égale à scale indique une modélisation 2D. 
-    (1 0 0.1) +  (1 0 0.1) 
-    (1 1 0.1) +  (1 1 0.1) 
-    (0 1 0.1) // Sommet 7+  (0 1 0.1) // Sommet 7
 ); );
 +
 // Définition du bloc à mailler // Définition du bloc à mailler
 blocks blocks
 ( (
-    // Cube à mailler. +  // Cube à mailler. 
-                          // Nombre de discrétisation du maillage en x, y, z. +                        // Nombre de discrétisation du maillage en x, y, z. 
-                          // En mettant z à 1, on modélise en 2D. +                        // En mettant z à 1, on modélise en 2D. 
-                                    // uniform expansions en x, y et z +                                  // uniform expansions en x, y et z 
-                                    // https://www.openfoam.com/documentation/user-guide/blockMesh.php +                                  // https://www.openfoam.com/documentation/user-guide/blockMesh.php 
-    hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1)+  hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1)
 ); );
-// Si on souhaite que des bords ne soient pas forcément droit.+ 
 +// Si on souhaite des bords ne soient pas forcément droit.
 edges edges
 ( (
 ); );
 +
 // On définit les 8 faces. Un type par condition initiale. // On définit les 8 faces. Un type par condition initiale.
 boundary boundary
 ( (
-    // L'entrée du fluide. +  // L'entrée du fluide. 
-    movingWall +  movingWall 
-    +  
-        type wall; +    type wall; 
-        faces +    faces 
-        +    
-            (3 7 6 2) +      (3 7 6 2) 
-        ); +    ); 
-    +  
-    // Les 3 faces qui ferment le rectangle. +  // Les 3 faces qui ferment le rectangle. 
-    fixedWalls +  fixedWalls 
-    +  
-        type wall; +    type wall; 
-        faces +    faces 
-        +    
-            (0 4 7 3) +      (0 4 7 3) 
-            (2 6 5 1) +      (2 6 5 1) 
-            (1 5 4 0) +      (1 5 4 0) 
-        ); +    ); 
-    +  
-    // Les deux faces qui font le devant et derrière +  // Les deux faces qui font le devant et derrière 
-    // Mais comme on modélise en 2D, elles sont vides. +  // Mais comme on modélise en 2D, elles sont vides. 
-    frontAndBack +  frontAndBack 
-    +  
-        type empty; +    type empty; 
-        faces +    faces 
-        +    
-            (0 3 2 1) +      (0 3 2 1) 
-            (4 5 6 7) +      (4 5 6 7) 
-        ); +    ); 
-    }+  }
 ); );
-// TODO : pour connecter deux blocs.+ 
 +// Pour connecter deux blocs.
 mergePatchPairs mergePatchPairs
 ( (
 ); );
  
-Après création de ce fichier, on exécute le programme blockMesh. Cela va créer le dossier constant/polyMesh avec les fichiers boundary, faces, neighbour, owner et points.+</code>
  
 +Après création de ce fichier, on exécute le programme ''blockMesh''. Cela va créer le dossier constant/polyMesh avec les fichiers ''boundary'', ''faces'', ''neighbour'', ''owner'' et ''points''.
  
 +===Définition d'un fluide incompressible, isotherme et laminaire===
  
-On définit les conditions initiales dans le dossier "0". Dans ce dossier, on définit la pression via le fichier "p" et la véolcité via le fichier "u"+Il faut se baser sur les exemples fournis dans les tutoriels et les adapter. Ici : ''incompressible/icoFoam/cavity/cavity''.
  
-0/p+  * Conditions initiales
  
 +On définit les conditions initiales dans le dossier ''0''. Dans ce dossier, on définit la pression via le fichier ''p'' et la vélocité via le fichier ''U''. Sous Linux, bien respecter la casse.
 +
 +<file txt 0/p>
 FoamFile FoamFile
 { {
-    version     2.0; +  version     2.0; 
-    format      ascii; +  format      ascii; 
-    class       volScalarField; +  class       volScalarField; 
-    object      p;+  object      p;
 } }
 +
 // L'unité SI [kg m s K mol A cd]. Ici la pression cinétique m^2/s^2 // L'unité SI [kg m s K mol A cd]. Ici la pression cinétique m^2/s^2
 dimensions      [0 2 -2 0 0 0 0]; dimensions      [0 2 -2 0 0 0 0];
 +
 // Le champ de pression est uniforme. Le type étant incompressible, la valeur n'a pas d'importance. // Le champ de pression est uniforme. Le type étant incompressible, la valeur n'a pas d'importance.
 internalField   uniform 0; internalField   uniform 0;
 +
 // On définit le type de condition initiale // On définit le type de condition initiale
 boundaryField boundaryField
 { {
-    // Le mur bougeant est celui d'où le vent circule. +  // Le mur bougeant est celui d'où le vent circule. 
-    movingWall +  movingWall 
-    +  
-        type            zeroGradient; +    type            zeroGradient; 
-    +  
-    // Les murs fixes sont ceux qui ferment la boite. +  // Les murs fixes sont ceux qui ferment la boite. 
-    fixedWalls +  fixedWalls 
-    +  
-        type            zeroGradient; +    type            zeroGradient; 
-    +  
-    // Pas de condition pour les deux faces 3D puisqu'on veut travailler en 2D. +  // Pas de condition pour les deux faces 3D puisqu'on veut travailler en 2D. 
-    frontAndBack +  frontAndBack 
-    +  
-        type            empty; +    type            empty; 
-    }+  }
 } }
 +</file>
  
-Le fichier 0/U+<file txt 0/U>
  
 FoamFile FoamFile
 { {
-    version     2.0; +  version     2.0; 
-    format      ascii; +  format      ascii; 
-    class       volVectorField; +  class       volVectorField; 
-    object      U;+  object      U;
 } }
 +
 // Unité : m/s // Unité : m/s
 dimensions      [0 1 -1 0 0 0 0]; dimensions      [0 1 -1 0 0 0 0];
 +
 // Champ uniforme. // Champ uniforme.
 internalField   uniform (0 0 0); internalField   uniform (0 0 0);
 +
 // https://www.openfoam.com/documentation/user-guide/standard-boundaryconditions.php // https://www.openfoam.com/documentation/user-guide/standard-boundaryconditions.php
 boundaryField boundaryField
 { {
-    // On fait circuler du vent horizontalement au plafond. +  // On fait circuler du vent horizontalement au plafond. 
-    movingWall +  movingWall 
-    +  
-        type            fixedValue; +    type            fixedValue; 
-        // 1 m/s +    // 1 m/s 
-        value           uniform (1 0 0); +    value           uniform (1 0 0); 
-    +  
-    // Les murs n'autorisent pas le glissement (vélocité à 0) +  // Les murs n'autorisent pas le glissement (vélocité à 0) 
-    fixedWalls +  fixedWalls 
-    +  
-        type            noSlip; +    type            noSlip; 
-    +  
-    // le devant et derrière n'existent pas. +  // le devant et derrière n'existent pas. 
-    frontAndBack +  frontAndBack 
-    +  
-        type            empty; +    type            empty; 
-    }+  }
 } }
 +</file>
  
-La propriété physique est dans constant/transportProperties+La propriété physique est dans le fichier ''constant/transportProperties''
 + 
 +<file txt constant/transportProperties>
 FoamFile FoamFile
 { {
-    version     2.0; +  version     2.0; 
-    format      ascii; +  format      ascii; 
-    class       dictionary; +  class       dictionary; 
-    location    "constant"; +  location    "constant"; 
-    object      transportProperties;+  object      transportProperties;
 } }
-// nu est la kinematic viscosity.+ 
 +// nu est la viscosité cinématique.
 // Le nombre de Reynolds vaut d*abs(U)/nu d est la longueur (0.1) et U la viscosité du fluide (1 ici). // Le nombre de Reynolds vaut d*abs(U)/nu d est la longueur (0.1) et U la viscosité du fluide (1 ici).
 nu              0.01; nu              0.01;
 +</file>
  
 +Il y a le contrôle dans le dossier ''system/controlDict''.
  
- +<file txt system/controlDict>
-Et il y a le contrôle dans le dossier système : +
-fichier system/controlDict +
 FoamFile FoamFile
 { {
-    version     2.0; +  version     2.0; 
-    format      ascii; +  format      ascii; 
-    class       dictionary; +  class       dictionary; 
-    location    "system"; +  location    "system"; 
-    object      controlDict;+  object      controlDict;
 } }
 application     icoFoam; application     icoFoam;
Ligne 230: Ligne 259:
 timePrecision   6; timePrecision   6;
 runTimeModifiable true; runTimeModifiable true;
 +</file>
  
- +<file txt system/fvSchemes>
- +
- +
-fichier system/fvSchemes +
 // On laisse les valeurs par défaut. // On laisse les valeurs par défaut.
 FoamFile FoamFile
 { {
-    version     2.0; +  version     2.0; 
-    format      ascii; +  format      ascii; 
-    class       dictionary; +  class       dictionary; 
-    location    "system"; +  location    "system"; 
-    object      fvSchemes;+  object      fvSchemes;
 } }
 ddtSchemes ddtSchemes
 { {
-    default         Euler;+  default         Euler;
 } }
 gradSchemes gradSchemes
 { {
-    default         Gauss linear; +  default         Gauss linear; 
-    grad(p)         Gauss linear;+  grad(p)         Gauss linear;
 } }
 divSchemes divSchemes
 { {
-    default         none; +  default         none; 
-    div(phi,U)      Gauss linear;+  div(phi,U)      Gauss linear;
 } }
 laplacianSchemes laplacianSchemes
 { {
-    default         Gauss linear orthogonal;+  default         Gauss linear orthogonal;
 } }
 interpolationSchemes interpolationSchemes
 { {
-    default         linear;+  default         linear;
 } }
 snGradSchemes snGradSchemes
 { {
-    default         orthogonal;+  default         orthogonal;
 } }
 +</file>
  
- +<file txt system/fvSolution>
-fichier system/fvSolution +
- +
 FoamFile FoamFile
 { {
-    version     2.0; +  version     2.0; 
-    format      ascii; +  format      ascii; 
-    class       dictionary; +  class       dictionary; 
-    location    "system"; +  location    "system"; 
-    object      fvSolution;+  object      fvSolution;
 } }
 solvers solvers
 { {
-    +  
-    +  
-        solver          PCG; +    solver          PCG; 
-        preconditioner  DIC; +    preconditioner  DIC; 
-        tolerance       1e-06; +    tolerance       1e-06; 
-        relTol          0.05; +    relTol          0.05; 
-    }+  }
  
-    pFinal +  pFinal 
-    +  
-        $p; +    $p; 
-        relTol          0; +    relTol          0; 
-    }+  }
  
-    +  
-    +  
-        solver          smoothSolver; +    solver          smoothSolver; 
-        smoother        symGaussSeidel; +    smoother        symGaussSeidel; 
-        tolerance       1e-05; +    tolerance       1e-05; 
-        relTol          0; +    relTol          0; 
-    }+  }
 } }
  
 PISO PISO
 { {
-    nCorrectors     2; +  nCorrectors     2; 
-    nNonOrthogonalCorrectors 0; +  nNonOrthogonalCorrectors 0; 
-    // Le fluide étant incompressible, les deux valeurs n'ont pas d'importance. +  // Le fluide étant incompressible, les deux valeurs n'ont pas d'importance. 
-    pRefCell        0; +  pRefCell        0; 
-    pRefValue       0;+  pRefValue       0;
 } }
- +</file>
- +
- +
- +
- +
-PDRblockMeshDict  blockMeshDict      +
prog/openfoam.1596174003.txt.gz · Dernière modification : 2020/07/31 07:40 de root