prog:openfoam
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | |||
prog:openfoam [2020/07/31 07:40] – Ajout de l'exemple en vrac root | prog: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 | + | '' |
- | A besoin d'un fichier | + | |
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | ===Configuration du maillage=== | ||
+ | |||
+ | Il faut remplir le fichier '' | ||
+ | |||
+ | < | ||
// Entête | // Entête | ||
FoamFile | FoamFile | ||
{ | { | ||
- | | + | |
- | format | + | format |
- | class | + | class |
- | object | + | object |
} | } | ||
+ | |||
// 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 | ||
( | ( | ||
- | | + | |
- | (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 | ||
( | ( | ||
- | | + | |
- | // 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:// | + | // https:// |
- | 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 | + | |
+ | // 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 | ||
( | ( | ||
- | | + | |
- | 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 '' | ||
+ | ===Définition d'un fluide incompressible, | ||
- | On définit | + | Il faut se baser sur les exemples fournis |
- | 0/p | + | * Conditions initiales |
+ | On définit les conditions initiales dans le dossier '' | ||
+ | |||
+ | <file txt 0/p> | ||
FoamFile | FoamFile | ||
{ | { | ||
- | | + | |
- | format | + | format |
- | class | + | class |
- | object | + | object |
} | } | ||
+ | |||
// L' | // L' | ||
dimensions | dimensions | ||
+ | |||
// Le champ de pression est uniforme. Le type étant incompressible, | // Le champ de pression est uniforme. Le type étant incompressible, | ||
internalField | internalField | ||
+ | |||
// On définit le type de condition initiale | // On définit le type de condition initiale | ||
boundaryField | boundaryField | ||
{ | { | ||
- | | + | |
- | 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' | + | // Pas de condition pour les deux faces 3D puisqu' |
- | frontAndBack | + | frontAndBack |
- | { | + | { |
- | type empty; | + | type empty; |
- | } | + | } |
} | } | ||
+ | </ | ||
- | Le fichier | + | <file txt 0/U> |
FoamFile | FoamFile | ||
{ | { | ||
- | | + | |
- | format | + | format |
- | class | + | class |
- | object | + | object |
} | } | ||
+ | |||
// Unité : m/s | // Unité : m/s | ||
dimensions | dimensions | ||
+ | |||
// Champ uniforme. | // Champ uniforme. | ||
internalField | internalField | ||
+ | |||
// https:// | // https:// | ||
boundaryField | boundaryField | ||
{ | { | ||
- | | + | |
- | movingWall | + | movingWall |
- | { | + | { |
- | type fixedValue; | + | type fixedValue; |
- | // 1 m/s | + | // 1 m/s |
- | value | + | value |
- | } | + | } |
- | // Les murs n' | + | // Les murs n' |
- | fixedWalls | + | fixedWalls |
- | { | + | { |
- | type noSlip; | + | type noSlip; |
- | } | + | } |
- | // le devant et derrière n' | + | // le devant et derrière n' |
- | frontAndBack | + | frontAndBack |
- | { | + | { |
- | type empty; | + | type empty; |
- | } | + | } |
} | } | ||
+ | </ | ||
- | La propriété physique est dans constant/ | + | La propriété physique est dans le fichier '' |
+ | |||
+ | <file txt constant/ | ||
FoamFile | FoamFile | ||
{ | { | ||
- | | + | |
- | format | + | format |
- | class | + | class |
- | location | + | location |
- | object | + | object |
} | } | ||
- | // 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; | ||
+ | </ | ||
+ | Il y a le contrôle dans le dossier '' | ||
- | + | <file txt system/ | |
- | Et il y a le contrôle dans le dossier système : | + | |
- | fichier | + | |
FoamFile | FoamFile | ||
{ | { | ||
- | | + | |
- | format | + | format |
- | class | + | class |
- | location | + | location |
- | object | + | object |
} | } | ||
application | application | ||
Ligne 230: | Ligne 259: | ||
timePrecision | timePrecision | ||
runTimeModifiable true; | runTimeModifiable true; | ||
+ | </ | ||
- | + | <file txt system/ | |
- | + | ||
- | + | ||
- | fichier | + | |
// On laisse les valeurs par défaut. | // On laisse les valeurs par défaut. | ||
FoamFile | FoamFile | ||
{ | { | ||
- | | + | |
- | format | + | format |
- | class | + | class |
- | location | + | location |
- | object | + | object |
} | } | ||
ddtSchemes | ddtSchemes | ||
{ | { | ||
- | | + | |
} | } | ||
gradSchemes | gradSchemes | ||
{ | { | ||
- | | + | |
- | grad(p) | + | grad(p) |
} | } | ||
divSchemes | divSchemes | ||
{ | { | ||
- | | + | |
- | div(phi, | + | div(phi, |
} | } | ||
laplacianSchemes | laplacianSchemes | ||
{ | { | ||
- | | + | |
} | } | ||
interpolationSchemes | interpolationSchemes | ||
{ | { | ||
- | | + | |
} | } | ||
snGradSchemes | snGradSchemes | ||
{ | { | ||
- | | + | |
} | } | ||
+ | </ | ||
- | + | <file txt system/ | |
- | fichier | + | |
- | + | ||
FoamFile | FoamFile | ||
{ | { | ||
- | | + | |
- | format | + | format |
- | class | + | class |
- | location | + | location |
- | object | + | object |
} | } | ||
solvers | solvers | ||
{ | { | ||
- | | + | |
- | { | + | { |
- | solver | + | solver |
- | preconditioner | + | preconditioner |
- | tolerance | + | tolerance |
- | relTol | + | relTol |
- | } | + | } |
- | | + | |
- | { | + | { |
- | $p; | + | $p; |
- | relTol | + | relTol |
- | } | + | } |
- | | + | |
- | { | + | { |
- | solver | + | solver |
- | smoother | + | smoother |
- | tolerance | + | tolerance |
- | relTol | + | relTol |
- | } | + | } |
} | } | ||
PISO | PISO | ||
{ | { | ||
- | | + | |
- | nNonOrthogonalCorrectors 0; | + | nNonOrthogonalCorrectors 0; |
- | // Le fluide étant incompressible, | + | // Le fluide étant incompressible, |
- | pRefCell | + | pRefCell |
- | pRefValue | + | pRefValue |
} | } | ||
- | + | </ | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | PDRblockMeshDict | + |
prog/openfoam.1596174003.txt.gz · Dernière modification : 2020/07/31 07:40 de root