OpenFOAM Introduction - ULiege · OpenFoam What's OpenFOAM? OpenFOAM: Open source Field Operation...
Transcript of OpenFOAM Introduction - ULiege · OpenFoam What's OpenFOAM? OpenFOAM: Open source Field Operation...
OpenFOAMIntroduction
Speakers:Francois Rigo
José [email protected]
Amandine [email protected]
February 2016
OpenFoam
What's OpenFOAM? OpenFOAM: Open source Field Operation And
Manipulation C++ toolbox for the development of customized
numerical solvers, and pre-/post-processing utilitiesfor the solution of continuum mechanics problems,including computational fluid dynamics (CFD).
OpenFoam
What comes with OpenFOAM? Basic CFD solvers
Incompressible flow with RANS and LES Advanced CFD solvers
Compressible flow solvers with RANS and LES Buoyancy-driven flow solvers Multiphase flow solvers Combustion problems Solvers for conjugate heat transfer
Particle Tracking
Molecular dynamics solvers[28]
Electromagnetics solvers
Solid dynamics solvers
OpenFoam
What are the applications of OpenFOAM?
CATIA Room
Ubuntu Login User: foam Pass: catia1135
Linux Basics
Open Terminal: In gnome 2.x:
Applications → Accesories → Terminal In KDE 4.x:
Applications menu → Systems → Konsole
Linux Basics
Create Folder ~$mkdir name
Copy files ~$cp name destination
Delete files(attention: no undelete option) ~$rm name
Rename file ~$mv name_original name_new
To edit a file, we'll use Gedit $gedit filename
Linux Basics
Change directory ~$cd folder
Go to home directory ~$cd
See working directory ~$pwd
See working directory's content ~$ls
OpenFOAM Basics
Create a directory named student_work_2016_A in the OpenFOAM workdirectory
~$cd
~$cd OpenFOAM/foam-2.1.1/run
Note: you can use the <tab> key to autocomplete the line ~$mkdir student_work_2016_A
Copy the cavity problem to the created directory ~$cp -r tutorials/incompressible/icoFoam/cavity student_work_2016_A/
Go to student_work_2016_A ~$cd student_work_2016_A
Rename the folder to Cavity_original ~$mv cavity cavity_original
Go to cavity_original folder ~$cd cavity_original
OpenFOAM Basics
Folder structure
OpenFOAM Basics
Test case problem: lid-driven cavity
OpenFOAM Basics
Block Structure of of mesh
OpenFOAM Basics
blockMeshDictconvertToMeters 0.1;
vertices ( (0 0 0) (1 0 0) (1 1 0) (0 1 0) (0 0 0.1) (1 0 0.1) (1 1 0.1) (0 1 0.1));
OpenFOAM Basics
blockMeshDictblocks ( hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1));
OpenFOAM Basics
blockMeshDictboundary( movingWall { type wall; faces ( (3 7 6 2) ); }
fixedWalls { type wall; faces ( (0 4 7 3) (2 6 5 1) (1 5 4 0) ); }
...
...
frontAndBack { type empty; faces ( (0 3 2 1) (4 5 6 7) ); });
OpenFOAM Basics
To generate the mesh from the blockMeshDict: ~$blockMesh
To visualize the mesh: ~$paraFoam
OpenFOAM Basics
In paraFoam:a) Apply in the Object Inspector
b) Surface With edges in the representation menu
a
b
OpenFOAM Basics
Problem set-up Initial values: Folder ”0”
U p
Properties: Folder ”constant” TransportProperties
Numerical Control: Folder ”system” controlDict fvSchemes fvSolution
OpenFOAM Basics
File: ”p”dimensions [0 2 -2 0 0 0 0];
internalField uniform 0;
boundaryField{ movingWall { type zeroGradient; }
fixedWalls { type zeroGradient; }
frontAndBack { type empty; }}
OpenFOAM Basics
File: ”U”dimensions [0 1 -1 0 0 0 0];internalField uniform (0 0 0);boundaryField{ movingWall { type fixedValue; value uniform (1 0 0); }
fixedWalls { type fixedValue; value uniform (0 0 0); }
frontAndBack { type empty; }}
OpenFOAM Basics
File: ”U” For external flows
dimensions [0 1 -1 0 0 0 0];internalField uniform (0 0 0);boundaryField{ dummyWall { type freestream; freestreamValue uniform (1 0 0); }
}
OpenFOAM Basics
File: ”transportProperties”nu [ 0 2 -1 0 0 0 0 ] 0.01;
OpenFOAM Basics
File: ”controlDict”application icoFoam;
startFrom startTime;startTime 0;stopAt endTime;endTime 0.5;
DeltaT 0.005; // CFL is imposed through δt
writeControl timeStep;writeInterval 20;purgeWrite 0;writeFormat ascii;writePrecision 6;writeCompression off;
timeFormat general;timePrecision 6;runTimeModifiable true;
CFL=δ t|U|δ x
OpenFOAM Basics
To run the case ~$icoFoam
To visualize the results: ~$paraFoam
paraFoam Basics
a
paraFoam Basics
b
c d
paraFoam Basics
Common toolbar
Glyph: to show arrows
Stream tracer: to showstreamlines
Student Work
Mesh Grading Problem is based on the lid-driven cavity tutorial It introduces the mesh grading feature
Student Work
Test case problem: lid-driven cavity
Student Work
Student Work
Create a directory named student_work_2016_A in theOpenFOAM work directory
~$cd
~$cd OpenFOAM/foam-2.1.1/run
Note: you can use the <tab> key to autocomplete the line Copy the cavity problem to the created directory
~$cp -rtutorials/incompressible/icoFoam/cavitystudent_work_2016_A/
Go to student_work_2016_A
~$cd student_work_2016_A/
Rename the folder to cavity_grading
~$mv cavity cavity_grading
Student Work
blockMeshDictvertices( (0.0 0.0 0.0) (0.5 0.0 0.0) (1.0 0.0 0.0)
(0.0 0.5 0.0) (0.5 0.5 0.0) (1.0 0.5 0.0)
(0.0 1.0 0.0) (0.5 1.0 0.0) (1.0 1.0 0.0)
(0.0 0.0 0.1) (0.5 0.0 0.1) (1.0 0.0 0.1) (0.0 0.5 0.1) (0.5 0.5 0.1) (1.0 0.5 0.1) (0.0 1.0 0.1) (0.5 1.0 0.1) (1.0 1.0 0.1));
Student Work
blockMeshDictblocks( hex (0 1 4 3 9 10 13 12) (10 10 1) simpleGrading (2 2 1) hex (1 2 5 4 10 11 14 13) (10 10 1) simpleGrading (0.5 2 1) hex (3 4 7 6 12 13 16 15) (10 10 1) simpleGrading (2 0.5 1) hex (4 5 8 7 13 14 17 16) (10 10 1) simpleGrading (0.5 0.5 1));
Student Workboundary( movingWall { type wall; faces ( (6 15 16 7) (7 16 17 8) ); }
fixedWalls { type wall; faces ( (3 12 15 6) (0 9 12 3) (0 1 10 9) (1 2 11 10) (2 5 14 11) (5 8 17 14) ); }...
...
frontAndBack { type empty; faces ( (0 3 4 1) (1 4 5 2) (3 6 7 4) (4 7 8 5) (9 10 13 12) (10 11 14 13) (12 13 16 15) (13 14 17 16) ); });
Student Work
Build mesh ~$blockMesh
Run the files: ~$icoFoam
View the results: ~$paraFoam
OpenFOAM Integrals
To calculate the integral of variable over apatch
General structure ~$ patchIntegrate <variable> <patch>
For example: ~$ patchIntegrate U movingWall
OpenFOAM Integrals
To calculate forces controlDict...timeFormat general;
timePrecision 6;
runTimeModifiable true;
functions{
#include "forceCoeffs"}
OpenFOAM Integrals
To calculate forces forceCoeffs Adapted from
tutorials/incompressible/simpleFoam/motorBike/system/forceCoeffs
/*--------------------------------*- C++ -*----------------------------------*\| ========= | || \\ / F ield | OpenFOAM: The Open Source CFD Toolbox || \\ / O peration | Version: v3.0+ || \\ / A nd | Web: www.OpenFOAM.com || \\/ M anipulation | |\*---------------------------------------------------------------------------*/
forceCoeffs1{ type forceCoeffs;
functionObjectLibs ( "libforces.so" );
outputControl timeStep; timeInterval 1;
log yes;
patches ( patchesName ); rhoName rhoInf; // Indicates incompressible rhoInf 1; // Redundant for incompressible liftDir (0 0 1); dragDir (1 0 0); CofR (1 0 0); // Axle midpoint on ground pitchAxis (0 1 0); magUInf 20; lRef 1.0; // Reference length Aref 1.0; // Reference Area}
Remember to set the correct values!!!
C L=2FL
ρU∞2 A
CD=2FD
ρU∞2 A
References
Linux Just google:”linux commands”
OpenFOAM OpenFoam User Guide
Installing OpenFOAM http://www.openfoam.com/version-v3.0+/