Modelling Multi-Phase
Flows in OpenFOAM
Hrvoje Jasak
[email protected]
Wikki Ltd. United Kingdom
15/Apr/2005
Modelling Multi-Phase Flows in OpenFOAM – p.1/28
Outline
Objective
• Present a novel way of handling software
implementation in numerical mechanics
Topics
• Representing physical models in software
• Object-oriented approach in Computational
Continuum Mechanics
• Multi-phase flow modelling in OpenFOAM
Modelling Multi-Phase Flows in OpenFOAM – p.2/28
Background
State of the Art
• Numerical modelling part of product design
◦ Improvements in computer performance
◦ Improved physical modelling and numerics
◦ Sufficient validation and experience
• Two-fold requirements
◦ Quick and reliable model implementation
◦ Complex geometry, high-performance
computing, automatic meshing etc.
Modelling Multi-Phase Flows in OpenFOAM – p.3/28
Numerics for CCM
How to handle complex models in software?
• Natural language of continuum mechanics:
partial differential equations
∂k
+ ∇•(uk) − ∇•[(ν + νt )∇k] =
∂t
2
1 T o
νt (∇u + ∇u ) − k
2 ko
Modelling Multi-Phase Flows in OpenFOAM – p.4/28
FOAM: CCM in C++
FOAM (Field Operation and Manipulation):
Represent equations in their natural language
solve
(
fvm::ddt(k)
+ fvm::div(phi, k)
- fvm::laplacian(nu() + nut, k)
== nut*magSqr(symm(fvc::grad(U)))
- fvm::Sp(epsilon/k, k)
);
Modelling Multi-Phase Flows in OpenFOAM – p.5/28
Object Orientation
Recognise main objects from the numerical
modelling viewpoint
• Computational domain
Object Software representation C++ Class
Time Time steps (database) time
Tensor (List of) numbers + algebra vector, tensor
Mesh primitives Point, face, cell Point, face, cell
Space Computational mesh polyMesh
Modelling Multi-Phase Flows in OpenFOAM – p.6/28
Object Orientation
• Field algebra
Object Software representation C++ Class
Field List of values Field
Boundary condition Values + condition patchField
Dimensions Dimension Set dimensionSet
Geometric field Field + boundary conditions geometricField
Field algebra + − ∗ / tr(), sin(), exp() . . . field operators
• Matrix and solvers
Object Software representation C++ Class
Linear equation matrix Matrix coefficients lduMatrix
Solvers Iterative solvers lduMatrix::solver
Modelling Multi-Phase Flows in OpenFOAM – p.7/28
Object Orientation
• Numerics
Object Software representation C++ Class
Interpolation Differencing schemes interpolation
Differentiation ddt, div, grad, curl fvc, fec
Discretisation ddt, d2dt2, div, laplacian fvm, fem, fam
Implemented Methods: Finite Volume, Finite
Element, Finite Area and Lagrangian tracking
• Top-level organisation
Object Software representation C++ Class
Model library Library turbulenceModel
Application main() –
Modelling Multi-Phase Flows in OpenFOAM – p.8/28
Model Interaction
Common interface for related models
class turbulenceModel
{
virtual volTensorField R() const = 0;
virtual fvVectorMatrix divR
(
volVectorField& U
) const = 0;
virtual void correct() = 0;
};
class SpalartAllmaras : public turbulenceModel{};
Modelling Multi-Phase Flows in OpenFOAM – p.9/28
Run-Time Selection
• Model-to-model interaction through common
interfaces (virtual base classes)
• New components do not disturb existing code
• Run-time selection tables: dynamic binding
• Used for every implementation: “user-coding”
◦ Convection differencing schemes
◦ Gradient calculation
◦ Boundary conditions
◦ Linear equation solvers
◦ Physical modelling, e.g. non-Newtonian viscosity laws, etc.
Modelling Multi-Phase Flows in OpenFOAM – p.10/28
Geometry Handling
Complex geometry, mesh motion and morphing
• Complex geometry is a rule, not exception
• Polyhedral cell support
◦ Cell is a polyhedron bounded by polygons
◦ Consistent handling of all cell types
◦ More freedom in mesh generation
• Integrated mesh motion and topo changes
• Automatic motion solver + morph engine
Modelling Multi-Phase Flows in OpenFOAM – p.11/28
Geometry Handling
-341 -244 -148 -51 45 142 238
Modelling Multi-Phase Flows in OpenFOAM – p.12/28
Layered Development
• Design encourages code re-use: shared tools
• Code developed and tested in isolation
◦ Vectors, tensors and field algebra
◦ Mesh handling, refinement, topo changes
◦ Discretisation, boundary conditions
◦ Matrices and solver technology
◦ Physics by segment
◦ Custom applications
• Ultimate user-coding capabilities!
Modelling Multi-Phase Flows in OpenFOAM – p.13/28
Multi-Phase Modelling
Examples of FOAM library in use
• Multi-phase Eulerian models
• Free surface flows
◦ Surface capturing method
◦ Surface tracking method
• Lagrangian particle model
Extensions and integration benefits:
poly mesh, motion/topo changes, multi-physics,
other CFD/CCM: LES, combustion, (nuclear?)
Modelling Multi-Phase Flows in OpenFOAM – p.14/28
Eulerian Multi-Phase
Bubbly flow in water
• Bubble column:
Gomes et al. 1998
• Air bubbles are
injected at bottom
plate
• Includes free surface:
γ = 0, γ = 1
Modelling Multi-Phase Flows in OpenFOAM – p.15/28
Surface Capturing
Droplet impact into a wall film, 1.3 million cells
Modelling Multi-Phase Flows in OpenFOAM – p.16/28
LES Surface Capturing
LES of a Diesel Injector
• d = 0.2mm, high velocity and surface tension
• Mean injection velocity: 460m/s
• Diesel fuel injected into air, 5.2MPa, 900K
• Turbulent and subsonic flow, no cavitation
◦ 1-equation LES model with no free surface
correction
◦ Fully developed pipe flow inlet
Modelling Multi-Phase Flows in OpenFOAM – p.17/28
LES Surface Capturing
• Mesh size: 1.2 to 8 million CVs, aggressive
local refinement, 50k time-steps
• 6µs initiation time, 20µs averaging time
Modelling Multi-Phase Flows in OpenFOAM – p.18/28
Surface Tracking
vb = −vF
Free surface tracking
• 2 phases = 2 meshes
• Mesh adjusted for
y0
vF
SB
aF
interface motion
SA o0 x0
Free • Surfactant transport
rF
surface
y Air-water system
o
x • 2-D: rb = 0.75 mm
• 3-D: rb = 1 mm
Modelling Multi-Phase Flows in OpenFOAM – p.19/28
Surface Tracking
Clean surface
Pollution by surfactant chemicals
Modelling Multi-Phase Flows in OpenFOAM – p.20/28
Surface Tracking
Complex coupling problem: FVM flow solver +
FEM mesh motion + FAM surfactant transport
Modelling Multi-Phase Flows in OpenFOAM – p.21/28
Lagrangian Particles
Hour-glass simulation
Modelling Multi-Phase Flows in OpenFOAM – p.22/28
Lagrangian Particles
Diesel Combustion in Scania D-12 Engine
• 1/8 sector with 75 % load and n-heptane fuel
• RANS, k − turbulence model, simplified
5-species chemistry and 1 reaction,
Chalmers PaSR combustion model
• Temperature on the cutting plane
• Spray droplets coloured with temperature
Modelling Multi-Phase Flows in OpenFOAM – p.23/28
Lagrangian Particles
Diesel Combustion in Scania D-12 Engine
Modelling Multi-Phase Flows in OpenFOAM – p.24/28
Fluid-Solid Coupling
Pipeline failure: crack propagation and leakage
Modelling Multi-Phase Flows in OpenFOAM – p.25/28
Fluid-Solid Coupling
Enlarged deformation of the pipe
Modelling Multi-Phase Flows in OpenFOAM – p.26/28
Summary
• Object-oriented approach facilitates model
implementation: layered design + re-use
• Equation mimicking opens new CCM grounds
• Extensive capabilities already implemented
• Open design for easy user customisation
Acknowledgements
• Henrik Rusche and Eugene de Villiers, Imperial College
• Željko Tuković, University of Zagreb; Niklas Nordin, Chalmers University
• Vlado Tropša (Imperial College), Alojz Ivankovi ć, UC Dublin
• OpenFOAM: http://openfoamcfd.sourceforge.net, http://www.openfoam.org
Modelling Multi-Phase Flows in OpenFOAM – p.27/28
FOAM: CCM in C++
Main characteristics
• Wide area of applications: all of CCM!
• Shared tools and code re-use
Versatility
• Unstructured meshes, automatic mesh
motion + topological changes
• Finite Volume, Finite Element, Lagrangian
tracking and Finite Area methods
• Efficiency through massive parallelism
Modelling Multi-Phase Flows in OpenFOAM – p.28/28