Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
– an OpenSource Computational Fluid Dynamics ToolboxOutline of the presentation:
� General presentation of OpenFOAM (www.openfoam.org)
� Tensors, tensor fields and discretization of PDEs in OpenFOAM
� Applications in OpenFOAM
� OpenFOAM by an example (simpleFOAM, pitzDaily tutorial)
� Presentation of the use of OpenFOAM in the water turbine field,including validation against results from CFX-5 and measurements
� Presentation of other people and activities at Chalmers using Open-FOAM
� Interest for an OpenFOAM course in the fall of 2007?
Some of the material in this presentation is based on the OpenFOAM manual, which is avail-able at the OpenFOAM homepage: www.openfoam.org
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
Find it at:www.openfoam.org
Links to:OpenCFD informationDownloadDocumentationDiscussion group
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
The OpenSource OpenFOAM CFD solver - a quick overview� OpenFOAM = Open Field Operation and Manipulation, www.openfoam.org
An OpenSource object oriented C++ tool for solving PDE’s
� Preprocessing (grid generator, converters, manipulators, case setup)
� Postprocessing (using OpenSource Paraview)
� Many specialized CFD solvers implemented, e.g.. – simpleFoam: A finite volume steady-state solver for incompressible,. turbulent flow of non-Newtonian fluids, using the SIMPLE algorithm. – turbFoam: A finite volume solver for unsteady incompressible, turbulent. flow of non-Newtonian fluids, using the PISO algorithm. – icoDyMFoam: Sliding/moving grid
� OpenSource = possibility to have insight into the code. * Makes development and tailor-made solvers possible. – simpleUnsteadyRotatingFoam: Unsteady SIMPLE solver. with Coriolis and centrifugal terms. – cavInterFoam: Cavitation using VOF and the Kunz’ cavitation model. * Makes research implementations available and results reproducable.
� Access to an international community of OpenFOAM users
� Runs in parallel using automatic/manual domain decomposition.
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
Solving PDEs with OpenFOAM
� The PDEs we wish to solve involve derivatives of tensor fields withrespect to time and space
� The PDEs must be discretized in time and space before we solvethem
� We will start by having a look at algebra of tensors in OpenFOAMat a single point
� We will then have a look at how to generate tensor fields fromtensors
� Finally we will see how to discretize PDEs and how to set boundaryconditions using high-level coding in OpenFOAM
� Later, in the worked example, we will see how to do this usingFoamX – the OpenFOAM GUI
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
Basic tensor classes in OpenFOAM� Pre-defined classes for tensors of rank 0-3, but may be extended indefinitely
Rank Common name Basic name Access function0 Scalar scalar1 Vector vector x(), y(), z()2 Tensor tensor xx(), xy(), xz(), ...
Example:
A tensor is defined line-by-line:tensor T( 11, 12, 13, 21, 22, 23, 31, 32, 33);
Info � � “Txz = “ � � T.xz() � � endl;Outputs to the screen:Txz = 13
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
Algebraic tensor operations in OpenFOAM� Tensor operations operate on the entire tensor entity instead of a
series of operations on its components
� The OpenFOAM syntax closely mimics the syntax used in written mathematics,using descriptive functions or symbolic operators
Examples:
Operation Comment Mathematical Descriptiondescription in OpenFOAM
Addition a + b a + bOuter product Rank a, b � � ab a * bInner product Rank a, b � � a � b a & bCross product Rank a, b � � a � b a ˆ bOperations exclusive to tensors of rank 2Transpose ��� T.T()Diagonal diagT diag(T)Determinant detT det(T)Operations exclusive to scalarsPositive (boolean) s � 0 pos(s)Hyperbolic arc sine asinh s asinh(s)
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
Dimensional units in OpenFOAM
� OpenFOAM checks the dimensional consistencyDeclaration of a tensor with dimensions:dimensionedTensor sigma. (. ”sigma”,. dimensionSet( 1, -1, -2, 0, 0, 0, 0),. tensor( 1e6, 0, 0, 0, 1e6, 0, 0, 0, 1e6). );
The values of dimensionSet correspond to the powers of each SI unit:No. Property Unit Symbol1 Mass kilogram kg2 Length metre m3 Time second s4 Temperature Kelvin K5 Quantity moles mol6 Current ampere A7 Luminous intensity candela cd
sigma then has the dimension � � � ��� ���
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
Construction of a tensor field in OpenFOAM
� A tensor field is a list of tensors� The use of typedef in OpenFOAM yields readable type definitions:
scalarField, vectorField, tensorField, symmTensorField, ...
� Algebraic operations can be performed between different fields,and between a field and a single tensor, e.g. Field U, scalar 2.0:U = 2.0 * U;
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
Discretization of a tensor field in OpenFOAM
� FVM (Finite Volume Method) or FEM (Finite Element Method)� No limitations on the number of faces bounding each cell
� No restriction on the alignment of each face
� The mesh class polyMesh can be used to construct a polyhedralmesh using the minimum information required
� The fvMesh class extends the polyMesh class to include additionaldata needed for the FV discretization
� The geometricField class relates a tensor field to an fvMesh (canalso be typedef volField, surfaceField, pointField)
� A geometricField inherits all the tensor algebra of its correspond-ing field, has dimension checking, and can be subjected to specificdiscretization procedures
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
Equation discretization in OpenFOAM
� Converts the PDEs into a set of linear algebraic equations, Ax=b, where x and b are volFields(geometricFields). A is an fvMatrix, which is created by a discretization of a geometricField andinherits the algebra of its corresponding field, and it supports many of the standard algebraicmatrix operations
� The fvm (Finite Volume Method) and fvc (Finite Volume Calculus) classes contain static func-tions for the differential operators, and discretize any geometricField. fvm returns an fvMatrix,and fvc returns a geometricField.
Examples:Term description Implicit/explicit Mathematical expression fvm::/fvc:: functionsLaplacian Implicit/Explicit � � � � � laplacian(Gamma,phi)Time derivative Implicit/Explicit � � � �� ddt(phi)
� � � � � � ddt(rho, phi)Convection Implicit/Explicit � � �� � div(psi, scheme)
� � � � � � div(psi, phi, word)div(psi, phi)
Source Implicit � � Sp(rho, phi)Implicit/Explicit SuSp(rho, phi)
� : vol � type Field, � : scalar, volScalarField, � : surfaceScalarField
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
Example
The equation
� ��
���
� � � ��
� � � � � ��
� � � � �
has the OpenFOAM representation
solve(
fvm::ddt(rho, U)+ fvm::div(phi, U)- fvm::laplacian(mu, U)
==- fvc::grad(p)
)
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
Example: laplacianFoam, the source code#include ”fvCFD.H” // Include the class definitionsint main(int argc, char *argv[])
�
# include ”setRootCase.H” // Set the correct path# include ”createTime.H” // Create the time# include ”createMesh.H” // Create the mesh# include ”createFields.H” // Create temperature field T and set thermal diffusivity DT
. for (runTime++; !runTime.end(); runTime++) // Time loop
. �
# include ”readSIMPLEControls.H” // Solution controls ( ICCG, nNonOrthCorr = 4). for (int nonOrth=0; nonOrth � =nNonOrthCorr; nonOrth++). �
. solve( fvm::ddt(T) - fvm::laplacian(DT, T) ); // Solve � � � �� � � � � � � � �
. �
# include ”write.H” // Write out results at specified time instances. �
. return(0); // End with ’ok’ signal
�
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
Example: laplacianFoam, discretization and boundary conditionsDiscretization:dictionary fvSchemes, read from file:
ddtSchemes
�
. default Euler;
�
laplacianSchemes
�
. default none;
. laplacian(DT,T) Gauss linear corrected;
�
Boundary conditions:Part of class volScalarField object T, read from file:boundaryField �
. patch1 � type zeroGradient; �
. patch2 � type fixedValue; value uniform 273; � �
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
Applications in OpenFOAM
� An application in OpenFOAM is a high-level code using theOpenFOAM libraries
� Applications are categorized into Solvers and Utilities.Solvers solve specific problems in continuum mechanics,Utilities perform tasks involving data manipulation
Examples of precompiled solvers:Category Application DescriptionSolver potentialFoam Simple potential flow solver which can be used to generate starting fields for full Navier Stokes codesSolver simpleFoam Steady-state solver for incompressible, turbulent flow of non-Newtonian fluidsSolver turbFoam Transient solver for incompressible turbulent flowSolver sonicTurbFoam Transient solver for trans-sonic/supersonic turbulent flow of a compressible gasSolver lesInterFoam Solver for 2 incompressible fluids capturing the interface, using a runtime-selectable incompressible LES modelSolver dnsFoam Direct numerical simulation solver for boxes of isotropic turbulenceSolver dieselEngineFoam Diesel engine spray and combustion codeSolver buoyantFoam Transient solver for buoyant, turbulent flow of compressible fluids for ventilation and heat transferSolver electroStatic Foam Solver for electrostaticsSolver stressedFoam Transient/steady-state solver of linear-elastic small-strain deformation of solid bodies in contactSolver financialFoam Solves the Black-Scholes equation to price commodities
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
Applications in OpenFOAM (continued)
Examples of precompiled utilities:Category Application DescriptionUtility mapFields Maps volume fields from one mesh to another, reading and interpolating all fields present in the time directory of both cases. Parallel and non-parallel cases are handled without the need to reconstruct them firstUtility blockMesh Mesh generatorUtility fluentMeshToFoam Converts a Fluent mesh to OpenFOAM formatUtility checkMesh Checks validity of a meshUtility renumberMesh Renumbers the cell list in order to reduce the bandwidth, reading and renumbering all the fields from all the time directoriesUtility foamToEnsight Translates OpenFOAM data to Ensight formatUtility Lambda2 Calculates and writes the second largest eigenvalue of the sum of the square of the symmetrical and anti-symmetrical parts of the velocity gradient tensor, at each time in a databaseUtility checkYPlus Calculates and reports ��� for all wall patches, for each time in a databaseUtility decomposePar Automatically decompose a mesh and fields for a case for parallel execution of OpenFOAM
Etc., etc. ...
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
OpenFOAM by an example (simpleFOAM, pitzDaily tutorial)Inlet: � � � � �� � � � � � � � � � �� � � � � of inlet height, Outlet: � � �� � ,
Walls: Wall functions, Total height: � � � � , �� �� � � Hex cells.
� :
� :
� :
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
OpenFOAM for water turbine applications, and a validation
Financed by SVC (www.svc.nu):Swedish Energy Agency, ELFORSK, Svenska Kraftnät, a
Chalmers, LTU, KTH, UUaCompanies involved: CarlBro, E.ON Vattenkraft Sverige, Fortum Generation, Jämtkraft, Jönköping Energi, Mälarenergi, Skellefteå Kraft, Sollefteåforsens,
Statoil Lubricants, Sweco VBB, Sweco Energuide, SweMin, Tekniska Verken i Linköping, Vattenfall Research and Development, Vattenfall Vattenkraft, Waplans,VG Power and Öresundskraft
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
Validation of engineering quantities, results
Quasi-steady draft tube computation
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
1 1.1
Ib II III IVa
OpenFOAM
PSfrag replacements �������
���
cfx-5
0 0.02 0.04 0.06 0.08
0.1 0.12 0.14 0.16 0.18
0.2
Ib II III IVa
OpenFOAMcfx-5
PSfrag replacements
cfx-5
���
OpenFOAM results
-0.20
0.00
0.20
0.40
0.60
0.80
1.00
1.20
0 0.5 1 1.5 2 2.5 3 3.5 4
Distance [m]
elbowOpenFOAM
cfx-5experiments
PSfrag replacements
cfx-5
OpenFOAM results
��
-0.20
0.00
0.20
0.40
0.60
0.80
1.00
1.20
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Distance [m]
elbow
corner
OpenFOAMcfx-5
experiments
PSfrag replacements
cfx-5
OpenFOAM results
��
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
Validation of velocity profiles at section Ia
Z
R
Above the blade
Section Ia
Section Ib
0 0.2 0.4 0.6 0.8 10
0.5
1
1.5
2
PSfrag replacements
Hub (0) to shroud (1)
���
0 0.2 0.4 0.6 0.8 10
0.5
1
1.5
2
PSfrag replacements
Hub (0) to shroud (1)
Hub (0) to shroud (1)
� �
0 0.2 0.4 0.6 0.8 1−0.5
0
0.5
1
1.5PSfrag replacements
Hub (0) to shroud (1)
Hub (0) to shroud (1)
Hub (0) to shroud (1)
���
Squares: measured axial velocity. Triangles: measured tangential velocity. In (a) the colorscorrespond to two different measurements. In (b) and (c): Blue curve: quasi-steady draft tube,Black curve: runner without hub clearance, Red curve: runner with hub clearance.
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
Vortex rope of the unsteady draft tube computation
Periodicity in time: � �� � (same as CFX-5)
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
People and projects at Chalmers using OpenFOAMRickard Benzow, Shipping and Marine Technology, Chalmers)LES of a turning submarineLES of a propeller in a rotating mesh
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
People and projects at Chalmers using OpenFOAMTobias Persson, Shipping and Marine Technology, ChalmersCavitation modelling and LES, cavInterFoam (developed by Niklas Wikström, FOI/Chalmers
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
People and projects at Chalmers using OpenFOAMAurelia Cure (LTH, Co-supervised by Håkan Nilsson, Chalmers)Lagrangian particle tracking at the NACA0015 profileRising bubbles using the VOF methodPurpose: Cavitation in water turbines
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
People and projects at Chalmers using OpenFOAMRasmus Hemph, Applied Mechanics, Fluid Dynamics, ChalmersFluidized beds using Lagrangian Particle TrackingColumn packing using Lagrangian Particle Tracking
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
People and projects at Chalmers using OpenFOAMFabian Peng Kärrholm, Applied Mechanics, Combustion, ChalmersCavitation in diesel nozzlescavitatingFoam (Now available in OpenFOAM 1.4)
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
Interest for an OpenFOAM course in fall 2007?
If you are interested in joining an OpenFOAM course this fall,please send an e-mail to: [email protected]
You will learn the basics of OpenFOAM and apply it to your own problems
Håkan Nilsson, Chalmers / Applied Mechanics / Fluid Dynamics
Thank you for your attention!
AcknowledgementsThe OpenFOAM developers (www.openfoam.org)Dr. Hrvoje Jasak, Wikki Ltd.
Håkan Nilsson is partly financed by SVC (www.svc.nu):Swedish Energy Agency, ELFORSK, Svenska Kraftnät, 1
Chalmers, LTU, KTH, UU
1Companies involved: CarlBro, E.ON Vattenkraft Sverige, Fortum Generation, Jämtkraft, Jönköping Energi, Mälarenergi, Skellefteå Kraft, Sollefteåforsens,Statoil Lubricants, Sweco VBB, Sweco Energuide, SweMin, Tekniska Verken i Linköping, Vattenfall Research and Development, Vattenfall Vattenkraft, Waplans,VG Power and Öresundskraft