Presentation Openfoam
Presentation Openfoam
Outline
What is Opensource Software OpenFOAM Overview
Utilities, Libraries and Solvers Data Formats
Outline
Examples
Lid driven Cavity Buoyancy driven flow Free Surface Flows Dynamic Meshing Fluid Structure Interaction
Examples Apache (web server) runs ~60% of the internet Linux Operating System based on UNIX. Firefox Standards Compliant Web Browser ...many more....
And of course
OpenFOAM - Overview
OpenFOAM stands for: Open Field Operations And Manipulation Consists of a library of efficient CFD related C++ modules. These can be combined together to create
solvers utilities (for example pre/post-processing, mesh checking, manipulation, conversion, etc.)
OpenFOAM - Overview
So far modules, libraries and applications are available for the following tasks
SOLVERS Basic CFD Incompressible flows Compressible flows Multiphase flows DNS and LES Combustion Heat transfer Electromagnetics Solid dynamics Finance UTILITIES Pre-processing The FoamX case manager Other pre-processing utilities Post-processing The paraFoam post-processor Third-party post-processing Other post-processing utilities Mesh processing Mesh generation Mesh converters Mesh manipulation LIBRARIES Model libraries Turbulence Large-eddy simulation (LES) Transport models Thermophysical models Lagrangian particle tracking Chemical kinetics Other features Linear system solvers ODE system solvers Parallel computing Mesh motion Numerical method
OpenFOAM - Overview
Data Formats
Open foam cases consist of a directory, and subdirectories with specific tasks.
Top Level Case Directory Initial Conditions
Timestep Data Constant Data (fluid properties, etc) Mesh (also in each TS dir for moving meshes) Simulation controls (disc. schemes, solvers, Timestep size, write controls, ... ) Exported Data (ie. VTK format)
OpenFOAM - Overview
A GUI (FoamX) allows easy access to the files, to control all facets, and run simulations.
FoamX GUI
OpenFOAM - Overview
Alternatively direct access to files is possible
Boundary and initial conditions are set in ' 0' directory.
file '.../cavity/0/U' Velocities
Note that OpenFOAM keeps track of dimensions and type (ie scalar, vector, tensor) and checks these when compiling a solver. Initial internal field values boundary type and value (where required)
OpenFOAM - Overview
file '.../cavity/0/p' Pressures pressure is a scalar dimensions (ie m 2/s2 = N/m2)
Initial internal field values boundary type (zero normal gradient, no value reqd)
OpenFOAM - Overview
Postprocessing
Quantitative data available using utility applications,ie.
etc... sampleSurface patchAverage patchIntegrate wallHeatFlux checkYPlus wallGradU
OpenFOAM - Overview
ParaFoam
ParaFoam imports fields in general formats and filters are applied to construct contours, graphs, etc.
Grid visualisation (above) and overlay of pressure contours, velocity vectors and grid (right)
Customisation
Due to opensource code, customisation is easy. for solvers, a typical flow equation can be descibed as follows. (ie momentum)
fvVectorMatrix UEqn ( fvm::ddt(U) + fvm::div(phi, U) - fvm::laplacian(nu, U) ); solve(UEqn == -fvc::grad(p));
Pressure gradient
New solvers can be created by modifying existing solvers, for example to add scalar transport, equation is similar to above.
OpenFOAM - Overview
In combination, the above utilities and solvers are at least as powerful as the commercial offerings. (Fluent, ANSYS CFX, StarCD, etc) though some initial investment in learning is required.
OpenFOAM - Examples
Lid driven cavity
Standard test case, bottom and side walls are no-slip and stationary, top wall is driven at 1 m/s. Flow is assumed incompressible, isothermal and laminar. Solution obtained using the standard icoFoam solver
OpenFOAM - Examples
Mesh generation
Mesh for this problem is created using the blockMesh utility Geometry, grid spacing and labels for boundaries (patches) are all specified in a blockMeshDict. Running the utility gives a mesh as shown.
OpenFOAM - Examples
Boundary Conditions
Set in 0/U fixedWalls type fixedValue value uniform (0 0 0) movingWall type fixedValue value uniform (1 0 0) Set in 0/p fixedWalls type zeroGradient movingWall type zeroGradient
movingWall
fixedWalls
OpenFOAM - Examples
Solution run using icoFoam Typical Output (at each timestep)
Time = 0.8 Mean and max Courant Numbers = 0.0500943 0.42312 BICCG: Solving for Ux, Initial residual = 8.9862e-09, Final residual = 8.9862e-09, No Iterations 0 BICCG: Solving for Uy, Initial residual = 2.28622e-08, Final residual = 2.28622e-08, No Iterations 0 ICCG: Solving for p, Initial residual = 1.02719e-06, Final residual = 1.61421e-07, No Iterations 1 time step continuity errors : sum local = 1.01957e-09, global = -1.23457e-19, cumulative = -1.32236e-18 ICCG: Solving for p, Initial residual = 3.48287e-07, Final residual = 3.48287e-07, No Iterations 0 time step continuity errors : sum local = 1.62239e-09, global = -5.22778e-20, cumulative = -1.37464e-18 ExecutionTime = 1.73 s ClockTime = 3 s End...
OpenFOAM - Examples
Results
From paraview graphical results can be obtained.
Pressure Stream Lines
OpenFOAM - Examples
Buoyancy driven flow
Isothermal sphere, in walled enclose open at top and bottom Flow is assumed incompressible and laminar with boussinesq assumption for buoyant forces. Solution obtained using contributed boussinesqBuoyantFoam solver
OpenFOAM - Examples
Buoyancy driven flow
OpenFOAM - Examples
Free-surface flow
Side walls Outlet
solid cube, 50% suspended in free-stream channel flow. Flow is assumed incompressible and laminar with VOF tracking of interface. Solution obtained using the standard interFoam solver
brick
OpenFOAM - Examples
Free-surface flow
OpenFOAM - Examples
Dynamic Moving Mesh
Cylinder in free stream flow Flow is assumed incompressible and laminar Re ~ 100 Solution obtained using the standard icoDyMFoam solver
OpenFOAM - Examples
Dynamic Moving Mesh
In the solution, periodic shedding of vortices in the wake can be observed.
OpenFOAM - Examples
Fluid Structure Interaction
Channel flow, obstructed by solid block, covered with flexible casing. Fluid stucture interaction solution obtained using contributed icoStructFoam solver