Research: Hrvoje Jasak

Over the years I have done quite a few things with FOAM and collaborated with a lot of interesting people. This page will hopefully evolve into a comprehensive list of thing I have done and my current research interests.

All of the research presented below has been done using OpenFOAM. As a result, over the last 12 years or so I have implemented big chunks of the code (around 50% on the latest count). The highlights include a-posteriori error estimation, FVM numerics, a Finite Element solver for polyhedral meshes, automatic mesh motion, topological mesh changes, parallelism (domain decomposition), solver technology, and matrix-free solvers.

A majority of my work in numerics has been related to the Finite Volume method. Things that occupy my mind at the moment can be divided into four groups. Papers on some of the subjects below are listed on the Publications page.


Physical modelling

Doing modelling and model implementation is always a lot of fun - for a few weeks you can forget about matrix forms and mess about with different terms and equation coupling. Some of the most impressive models I have done so far:

fluid-structure solver Fluid-structure interaction in a single software implementation

Using the fact that OpenFOAM capabilities cover both the fluids and structural analysis, it is natural and easy to assemble fluid-structure interaction solvers. For further convenience, OpenFOAM also contains complete volume and surface coupling tools in serial execution and on parallel computers, without involving external solvers. Moreover, the automatic mesh motion solver is used to compute the deformation of the fluid mesh based on the boundary motion obtained by interpolation form the structure side.
The solution shown here was assembled in collaboration with dr. Tukovic from University of Zagreb, Croatia.
A full-length animation shows the full dynamical behaviour of the system. In an extension of the work the fluid flow and structures model will be made run-time selectable, allowing arbitrary combinations, e.g. plastic solid deformation and Large Eddy Simulation on the fluids side.

Brick drying Heat and mass transfer in drying of cement-bonded castables

A collaborative project with Universita degli Studi di Trieste, a German industrial sponsor and Wikki Ltd. on modelling of cement castables. The equation set is similar to the biscuit baking model and includes mass conservation of liquid water, water vapour and air, energy equation and a set of chemical reactions following the release of chemically bonded liquid water.

Droplet splash Droplet-wall interaction

Some of the most recent work involves a set of free surface capturing simulations of normal and angled droplet impact into a wall. A parametric study is still under way, including cases with the presence of the wall film. A set of experimental data under consideration has been kindly provided by prof. Tropea's research group an the Technical University Darmstadt, together with some analytical solutions. Droplet sizes vary from 2 mm to 50 microns in diameter.

Ship tank sloshing Ship tank sloshing

Sloshing in tanks of Liquid Natural Gas (LNG) marine tankers is an interesting and important engineering problem. Challenges include capturing of free surface and forces on the tank shell, implementation of excitation bu the motion of the ship on high seas, effects of shifting centre of gravity of the ship due to sloshing etc. The model includes handling of the free surface in the RANS turbulence modelling through a modified version of the k-epsilon model.

2-D bubble DNS Free surface flows

I have been involved in free surface modelling work, both using surface capturing and surface tracking. This usually produces the nicest CFD animations! The two approaches are surface tracking, where the position of a free surface is tracked in a mesh covering both phases by solving an equation for a scalar ("volume-of-fluid"); and surface capturing, where the interface is meshed and then moved and deformed as a part of the solution. The real challenge in both approaches is the simultaneous handling of topological changes (interface break-up) and high surface tension.

2-D bubble DNS Finite volume stress analysis

The point of using the FVM in stress analysis is to attack complex non-linear systems and solid-fluid interaction using consistent numerics. So far, I have been involved only with relatively simple non-linear cases (contact, non-linear materials, but I'm hoping to extend this work in the future (large deformations, arbitrary crack propagation etc.

OpenFOAM provides surface detection algorithms (useful for lots of things) and implements a contact stress code. Looks like fun, it is pretty intuitive and makes for nice pictures. I would really like to extend its capabilities some time.

2-D bubble DNS Polar ice dynamics

The ice is forced by the wind and sea currents and several other things (Coriolis force, mean geostrophic surface angle etc.). Its thickness changes through melting and growth, governed by thermodynamics. As the ice sheet is only about 2-3 meters thick (on average), it can be treated as a 2-D continuum. Its strength is also relatively low, so it cracks, ridges and opens leads of open water. Currently, this kind of thing is modelled as a highly non-linear viscous-plastic continuum. The numerics implemented in OpenFOAM combines the Weller-Jasak FV stress analysis algorithm with the supersonic pressure-strength formulation and is pretty nice! Thanks, Jenny!

Backward-facing step Reynolds-averaged turbulence modelling

I have also done a lot of "standard turbulence model" implementation. OpenFOAM currently has at least a dozen RANS models and about as many LES models - this is just a proof of how easy it is to implement them and tell nothing about how good they actually are Smiley
              face..

Large-Eddy Simulation

The basics are well known and OpenFOAM has been widely used, with excellent results. It is very important to have good numerics and a very efficient code; a big computer also helps! Latest work of Eugene de Villiers et al seems to open the door for a wider use of LES in free surface flow modelling, which looks very interesting indeed.

Water vapour in a biscuit Biscuit baking model.

Implemented for a commercial client: describes the heat and mass transfer inside the dough, evaporation of water, transport of air and vapour through the dough, formation of a crust and rising of the biscuit.

This is a good example of what OpenFOAM can do: a completely new set of equations describing a phenomenon I know very little about and we can still put together a custom application for the purpose.


Numerics and the FVM Discretisation

Convection Convection discretisation

The game is quite simple to define but difficult to resolve: convect a prescribed profile through the domain given an arbitrary velocity field while causing no violation of bounds and minimum distortion of the profile.

It is easily seen that no standard (primitive) differencing scheme solves the problem, and that the solution requires non-linearity even though the problem is linear. A whole theory of TVD, NVD, reconstruction etc. has been developed, but, to my taste, the problem remains. My attempt is the Gamma differencing scheme, the simplest solution I could come up with that still preserves boundedness and behaves in a predictable manner.

Sliding interface Bounded discretisation of the Laplacian operator

An interesting issue in the FV discretisation is the problem with the boundedness of discretised Laplacian on bad meshes. Here, the non-orthogonal contribution violates the bounds; there are several fixes to the problem but no guarantees. It would be nice and should be possible to formulate an unconditionally bounded formulation which is more than first-order accurate irrespective of the mesh.

FVM stress analysis FVM versus FEM

A big interest for me here is the consequence of using FV-type discretisation on coupled and non-linear problems typically tackled by the FEM. The big benefit and possible algorithmic improvements may come from the use of segregation and "making it work" instead of going for block solution and direct solvers before all other avenues have been explored.

In order to move my FV meshes well, I had to write a FEM solver for arbitrarily unstructured meshes. It is second order, segregated and works quite well. Some FEM linear stress analysis results are also available. Recently, we have started using the solver in big transient runs for DNS of air-water bubbles. with and without surface tension.

Finite area Finite Area Method

The 2-D equivalent of the FVM, designed to allow the solution of transport equations on a curved surface in 3-D. Main applications of this method are surface-based transport problems, like wall films in internal combustion engines and transport of surfactant chemicals on the interface between the two fluids. The work is still ongoing, mainly done by Dr. Zeljko Tukovic, FSB Zagreb, Croatia.

The picture shows DNS of a 1 mm air bubble in water (bottom side). The surface of the bubble is coloured by the concentration of surfactant chemicals, which locally modify the surface tension coefficient for the system and are transported by the flow velocity on the interface.

FVM stress analysis A-posteriori error estimation for the FVM

The subject of my PhD. For the interested people, I recommend having a look at my list of publications. In short, the best error estimate I have made is the Residual Error Estimate. It works be creating the FV equivalent of a residual and has the same dimensionality as the field you are estimating the error on (e.g. m/s for velocity). It is simple and reliable and available in some commercial CFD codes, as well as OpenFOAM. There are several extensions (one providing error bounds and another, formulated on the faces). The error estimate has been extensively used to drive adaptive mesh refinement, with acceptable results.


Dynamic Mesh Handling, Automatic Mesh Generation, Motion and Topological Changes

in-cylinder In-cylinder flow simulation

Addition of topological mesh modifiers, layer addition/removal surfaces and sliding interfaces to OpenFOAM allows me to set up moving mesh problems with topological changes. The one of immediate interest is the simulation of the exhaust and intake stroke in internal combustion engines. The handling and easy setup of valve action should help the users who are keen on performing complete cycle combustion simulations in IC engines.

Moving mesh Automatic mesh motion

This is something I'm quite proud of and it's being used regularly in OpenFOAM. The issue we are trying to tackle are transient solutions in domains with moving boundaries, where the boundary motion may be known in advance or be solution-dependent. Therefore, the user should only be required to specify the motion of boundaries and the rest of the mesh should be adjusted automatically.

Zeljko and I do this routinely, using a second-order FEM solver on polyhedral cells, it's great fun and produces interesting pictures. The next question is how far we can take it.

Sliding interface Dynamic mesh changes

The dynamic mesh engine in OpenFOAM is described in detail in the Development section. Basically, it provides the functions to add/modify or remove a point, face or a cell. On top of this, one can create mesh modifiers, e.g. sliding interfaces, layer addition, removal, etc. and other complex operations, such as embedded refinement or load balancing. The principle works well and looks promising.

I am currently doing in-cylinder meshes with moving valves and hoping that an automatic mesher will make my job much easier in the future (see below).

Cut mesh Automatic polyhedral mesh generation

The story plays out in two levels. Firstly: "take a give mesh and start chewing it to do what you need". I call this the dynamic mesh approach, as from the numerics point of view I want to keep the mesh alive. When this fails (secondly): "make a new mesh, pretend it's the same old one you had before, move the results onto it and carry on with the simulation". A good code should have both, which implies a built-in automatic mesh generator.

Optimal cell shape for the FVM. The ongoing discussion on the relative quality of different cell shapes for the FV simulations. It can be shown that for convection-dominated problems, hexahedral cells create lower numerical errors than other shapes.

Adaptive mesh refinement Error-driven mesh adaptivity

Another part of my PhD work. I have implemented a 3-D adaptive mesh refinement algorithm which allows error-driven refinement and arbitrary coarsening in order to test the behaviour of error estimates and error-driven adaptivity in general. It is a bit limited (enforces 1-irregularity and does not generalise to polyhedral meshes, but it served the purpose. It's ripe for a re-write, probably using the dynamic mesh engine described above.


Linear equation solver technology

Segregated Iterative solvers: Conjugate Gradient and Algebraic Multigrid

Iterative solvers are the work-horse of FVM numerics; the choice of solver depends very much on your taste. My interest and experience lies mainly in the arena of CG and AMG solvers. An important concern here is parallelisation: if the solver does not work well on massively parallel computers in the domain decomposition mode, you're probably better off looking elsewhere.

For Algebraic Multigrid, I am interested in the differences in behaviour between the "agglomerated" and "graph reduction" techniques. A promising area of research would be to see if it is possible to create the correct off-diagonal scaling for the agglomerated solver, but currently there's no time...

Sliding interface Direct multi-frontal solvers, block solvers

So far, this is just something I need to look into, just to fill in the holes in my understanding. The real challenge is to develop a massively parallelisable direct solver or to show that there always exists an efficient segregated solution strategy.

My interest here is the relative performance of direct and iterative solvers over a range of mesh sizes, benefits to be gained from "fully converged" solutions in iterative algorithms (if any), architecture of the direct solver and possibility of parallelisation.

Segregated Segregation, matrix-free and block solution

For some problems, e.g. beam bending (but only for linear elastic materials and small deformations), the segregated FVM has proven to be very inefficient and the block solution is known to work. My interest here is to tackle the linear grad - grad transpose problem with a block solution strategy and to evaluate the relative performance of iterative and direct solvers.

In the past, I have done some work on matrix-free methods, but the results were disappointing. The solver I have tried was the matrix-free version of Conjugate Gradient with no preconditioning, and it behaved as expected: some sort of preconditioning is absolutely essential, which implies that at least a part of the matrix needs to be built.


Current work-in-progress is related to valve action for internal combustion engine simulations in OpenFOAM, including a combination of automatic mesh motion and topological changes. I am hoping to pack up the interface in a way that allows both easy setup and understanding of the details of valve action, with sufficient parameters to adjust the mesh quality (if necessary). At the same time, this is a severe test of topological modifiers in OpenFOAM.

My "next lot of work" in the FVM (I hope) will be all about block solvers, from the actual choice of solver, code organisation, discretisation (grad + grad transpose and p-U coupling) and the dreaded boundary conditions.


Home Foam CFD.
Last modified: Sun Jun 25 08:38:32 EDT 2006