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édenteProchaine révision | Révision précédente | ||
| prog:openfoam [2020/07/30 21:24] – [Installation] : activation de la compilation parallèle root | prog:openfoam [2020/08/01 23:43] (Version actuelle) – [Modélisation] : fix typo root | ||
|---|---|---|---|
| Ligne 29: | Ligne 29: | ||
| ./Allwmake -s -l -j | ./Allwmake -s -l -j | ||
| + | ====Modélisation==== | ||
| + | |||
| + | ===Programmes=== | ||
| + | |||
| + | '' | ||
| + | |||
| + | '' | ||
| + | |||
| + | '' | ||
| + | |||
| + | ===Configuration du maillage=== | ||
| + | |||
| + | Il faut remplir le fichier '' | ||
| + | |||
| + | < | ||
| + | // Entête | ||
| + | FoamFile | ||
| + | { | ||
| + | version | ||
| + | format | ||
| + | class | ||
| + | object | ||
| + | } | ||
| + | |||
| + | // Coefficient réducteur de la position des sommets. | ||
| + | scale 0.1; | ||
| + | |||
| + | // Les sommets de la forme où le fluide circulera. | ||
| + | vertices | ||
| + | ( | ||
| + | (0 0 0) // Sommet 0 | ||
| + | (1 0 0) | ||
| + | (1 1 0) | ||
| + | (0 1 0) | ||
| + | (0 0 0.1) // Une épaisseur égale à scale indique une modélisation 2D. | ||
| + | (1 0 0.1) | ||
| + | (1 1 0.1) | ||
| + | (0 1 0.1) // Sommet 7 | ||
| + | ); | ||
| + | |||
| + | // Définition du bloc à mailler | ||
| + | blocks | ||
| + | ( | ||
| + | // Cube à mailler. | ||
| + | // Nombre de discrétisation du maillage en x, y, z. | ||
| + | // En mettant z à 1, on modélise en 2D. | ||
| + | // uniform expansions en x, y et z | ||
| + | // https:// | ||
| + | hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1) | ||
| + | ); | ||
| + | |||
| + | // Si on souhaite des bords ne soient pas forcément droit. | ||
| + | edges | ||
| + | ( | ||
| + | ); | ||
| + | |||
| + | // On définit les 8 faces. Un type par condition initiale. | ||
| + | boundary | ||
| + | ( | ||
| + | // L' | ||
| + | movingWall | ||
| + | { | ||
| + | type wall; | ||
| + | faces | ||
| + | ( | ||
| + | (3 7 6 2) | ||
| + | ); | ||
| + | } | ||
| + | // Les 3 faces qui ferment le rectangle. | ||
| + | fixedWalls | ||
| + | { | ||
| + | type wall; | ||
| + | faces | ||
| + | ( | ||
| + | (0 4 7 3) | ||
| + | (2 6 5 1) | ||
| + | (1 5 4 0) | ||
| + | ); | ||
| + | } | ||
| + | // Les deux faces qui font le devant et derrière | ||
| + | // Mais comme on modélise en 2D, elles sont vides. | ||
| + | frontAndBack | ||
| + | { | ||
| + | type empty; | ||
| + | faces | ||
| + | ( | ||
| + | (0 3 2 1) | ||
| + | (4 5 6 7) | ||
| + | ); | ||
| + | } | ||
| + | ); | ||
| + | |||
| + | // Pour connecter deux blocs. | ||
| + | mergePatchPairs | ||
| + | ( | ||
| + | ); | ||
| + | |||
| + | </ | ||
| + | |||
| + | Après création de ce fichier, on exécute le programme '' | ||
| + | |||
| + | ===Définition d'un fluide incompressible, | ||
| + | |||
| + | Il faut se baser sur les exemples fournis dans les tutoriels et les adapter. Ici : '' | ||
| + | |||
| + | * Conditions initiales | ||
| + | |||
| + | On définit les conditions initiales dans le dossier '' | ||
| + | |||
| + | <file txt 0/p> | ||
| + | FoamFile | ||
| + | { | ||
| + | version | ||
| + | format | ||
| + | class | ||
| + | object | ||
| + | } | ||
| + | |||
| + | // L' | ||
| + | dimensions | ||
| + | |||
| + | // Le champ de pression est uniforme. Le type étant incompressible, | ||
| + | internalField | ||
| + | |||
| + | // On définit le type de condition initiale | ||
| + | boundaryField | ||
| + | { | ||
| + | // Le mur bougeant est celui d'où le vent circule. | ||
| + | movingWall | ||
| + | { | ||
| + | type zeroGradient; | ||
| + | } | ||
| + | // Les murs fixes sont ceux qui ferment la boite. | ||
| + | fixedWalls | ||
| + | { | ||
| + | type zeroGradient; | ||
| + | } | ||
| + | // Pas de condition pour les deux faces 3D puisqu' | ||
| + | frontAndBack | ||
| + | { | ||
| + | type empty; | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <file txt 0/U> | ||
| + | |||
| + | FoamFile | ||
| + | { | ||
| + | version | ||
| + | format | ||
| + | class | ||
| + | object | ||
| + | } | ||
| + | |||
| + | // Unité : m/s | ||
| + | dimensions | ||
| + | |||
| + | // Champ uniforme. | ||
| + | internalField | ||
| + | |||
| + | // https:// | ||
| + | boundaryField | ||
| + | { | ||
| + | // On fait circuler du vent horizontalement au plafond. | ||
| + | movingWall | ||
| + | { | ||
| + | type fixedValue; | ||
| + | // 1 m/s | ||
| + | value | ||
| + | } | ||
| + | // Les murs n' | ||
| + | fixedWalls | ||
| + | { | ||
| + | type noSlip; | ||
| + | } | ||
| + | // le devant et derrière n' | ||
| + | frontAndBack | ||
| + | { | ||
| + | type empty; | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | La propriété physique est dans le fichier '' | ||
| + | |||
| + | <file txt constant/ | ||
| + | FoamFile | ||
| + | { | ||
| + | version | ||
| + | format | ||
| + | class | ||
| + | location | ||
| + | object | ||
| + | } | ||
| + | |||
| + | // 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). | ||
| + | nu 0.01; | ||
| + | </ | ||
| + | |||
| + | Il y a le contrôle dans le dossier '' | ||
| + | |||
| + | <file txt system/ | ||
| + | FoamFile | ||
| + | { | ||
| + | version | ||
| + | format | ||
| + | class | ||
| + | location | ||
| + | object | ||
| + | } | ||
| + | application | ||
| + | startFrom | ||
| + | startTime | ||
| + | stopAt | ||
| + | endTime | ||
| + | // Co*d/n/U = (constante)1*0.1(scale)/ | ||
| + | deltaT | ||
| + | writeControl | ||
| + | // On enregistre les résultats tous les deltaT*20 soit 0.1s. | ||
| + | // Les résultats intermédiaires seront enregistrés dans un dossier " | ||
| + | writeInterval | ||
| + | purgeWrite | ||
| + | writeFormat | ||
| + | writePrecision | ||
| + | writeCompression off; | ||
| + | timeFormat | ||
| + | timePrecision | ||
| + | runTimeModifiable true; | ||
| + | </ | ||
| + | |||
| + | <file txt system/ | ||
| + | // On laisse les valeurs par défaut. | ||
| + | FoamFile | ||
| + | { | ||
| + | version | ||
| + | format | ||
| + | class | ||
| + | location | ||
| + | object | ||
| + | } | ||
| + | ddtSchemes | ||
| + | { | ||
| + | default | ||
| + | } | ||
| + | gradSchemes | ||
| + | { | ||
| + | default | ||
| + | grad(p) | ||
| + | } | ||
| + | divSchemes | ||
| + | { | ||
| + | default | ||
| + | div(phi, | ||
| + | } | ||
| + | laplacianSchemes | ||
| + | { | ||
| + | default | ||
| + | } | ||
| + | interpolationSchemes | ||
| + | { | ||
| + | default | ||
| + | } | ||
| + | snGradSchemes | ||
| + | { | ||
| + | default | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <file txt system/ | ||
| + | FoamFile | ||
| + | { | ||
| + | version | ||
| + | format | ||
| + | class | ||
| + | location | ||
| + | object | ||
| + | } | ||
| + | solvers | ||
| + | { | ||
| + | p | ||
| + | { | ||
| + | solver | ||
| + | preconditioner | ||
| + | tolerance | ||
| + | relTol | ||
| + | } | ||
| + | |||
| + | pFinal | ||
| + | { | ||
| + | $p; | ||
| + | relTol | ||
| + | } | ||
| + | |||
| + | U | ||
| + | { | ||
| + | solver | ||
| + | smoother | ||
| + | tolerance | ||
| + | relTol | ||
| + | } | ||
| + | } | ||
| + | |||
| + | PISO | ||
| + | { | ||
| + | nCorrectors | ||
| + | nNonOrthogonalCorrectors 0; | ||
| + | // Le fluide étant incompressible, | ||
| + | pRefCell | ||
| + | pRefValue | ||
| + | } | ||
| + | </ | ||
prog/openfoam.1596137078.txt.gz · Dernière modification : de root
