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 11:56] – Mise à jour de l'installation root | prog:openfoam [2020/08/01 23:43] (Version actuelle) – [Modélisation] : fix typo root | ||
---|---|---|---|
Ligne 15: | Ligne 15: | ||
Il est possible d' | Il est possible d' | ||
- | Il est possible que des messages de type '' | + | Il est possible que des messages de type '' |
Décompresser les sources dans un dossier de la partition Linux. Ne pas décompresser dans un disque dur Windows (''/ | Décompresser les sources dans un dossier de la partition Linux. Ne pas décompresser dans un disque dur Windows (''/ | ||
Ligne 27: | Ligne 27: | ||
Et lancer la compilation : | Et lancer la compilation : | ||
- | ./Allwmake -s -l | + | ./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.1596102987.txt.gz · Dernière modification : 2020/07/30 11:56 de root