03/04/2006: Release 0.9.2
The most significant improvements in this release are:
- Important bug fixes and improvements for the multilevel Poisson
solver can reduce the overall computational cost by a factor of five
or more depending on the problem.
- Variable mesh resolution along solid boundaries is now allowed and
has been well tested (note however that time-adaptive variable
resolution is not allowed on solid boundaries yet).
- The robustness of the solution procedure has been much improved in
the case of very complex solid boundaries.
Other improvements include:
- Debian package snapshots.
- Adaptive refinement of VOF-advected tracers.
- Preliminary implementation of CSF surface tension using Renardy et
al. "proper discretisation".
- Solid boundaries can be refined according to the local curvature.
- Implicit Coriolis terms work with the Navier-Stokes solver.
- Support for "thin" 3D domains.
- Several bug fixes for special cases of solid boundaries.
- Bug fixes for "GfsAdapt" events.
17/10/2005: Release 0.8.0
Quite a lot of important new features and bug fixes in this release. I
will just give a summary below, the ChangeLog has all the details.
- Variable density Navier-Stokes is back (but still needs more
testing). Have a look at the new Rayleigh-Taylor example.
- Solid fractions of embedded boundaries are computed using a new
algorithm. This algorithm does not attempt to compute exact volume
fractions (as was done before using the boolean operations of GTS) but
is at least second-order accurate (which is enough). Consequently it
is much faster (approx. 20 times) and also much more robust. It can
tolerate some degeneracy in surfaces, as well as non-closed surfaces
(with cracks etc...).
- Embedded boundaries can now have a variable resolution, but this
needs more testing. They cannot be adaptively refined yet, however.
- The linearised shallow-water 2D ocean model has been tested for
prediction of tides around New Zealand (see the paper by Rym Msadek
in the bibliography section).
- Volume-of-fluid Continuum-Surface-Stresses (CSS) formulation and
associated tests (spurious currents, capillary waves...). Only 2D for now.
- GfsFunction can use model variables (have a look at the Boussinesq
example). Complex source terms can be defined directly in the
- The dynamic allocation of variables has been restructured. There is
no "pre-allocated" or static variables anymore. Everything is
dynamic. Temporary variables are also dynamically allocated and
freed. This eliminates implicit dependencies between different
routines relying on the same temporary variables. Not surprisingly,
several bugs were uncovered when this was implemented (i.e. "routines
stepping on each others toes").
- After a full review, the Poisson solver has been improved
slightly. Some pathological now converge (see the thin-wall test
- Support for variable viscosity in the diffusion solver can be used
to solve for non-Newtonian fluids (including LES turbulence viscosity
models). This works even for very stiff material laws (e.g. Bingham
- The diffusion solver can be tuned from semi-implicit to fully
implicit. This is useful for Stokes flows and/or non-Newtonian fluids.
- Switched to darcs for version control (after a short period of
trying to use arch). Darcs is very nice.
- An automated test suite is ran automatically every night (if the
- Examples and associated Latex and HTML documentation can be
generated easily. Several examples are included on the web
site. Contributed examples from users should be easy (see the last
section of the examples page for details).
- A FAQ has been added. Feel free to send corrections and additions.
- Snapshots are generated only if the test suite passes.
Minor changes and improvements:
- OutputSimulation uses binary format by default.
- GfsFunction can use C statements (instead of full functions).
- New objects to compute online histograms (OutputScalarHistogram) and
perform harmonic analysis (EventHarmonic).
- Several MacOSX specific fixes.
20/10/2004: Release 0.6.0
First the good news:
Diffusion equations with complex boundary conditions can now be solved
Now the bad news:
Variable density support is broken in this version (use 0.3.0 if you
need it). The reason is that this part of the code needs to be
reviewed/generalised to make sure it does the right thing.
The main changes/improvements in this version are:
- Support for diffusion equations in 3D complex geometries
- Flexible boundary conditions on embedded solid surfaces for
diffusion equation in parameter files (see the tutorial)
- Updated tutorial and reference manual
- An initial implementation of a shallow-water 2D and 3D hydrostatic
ocean model with semi-implicit Coriolis source terms and barotropic
equation (multigrid for Helmoltz equation)
- Support for different types of simulations (ocean and incompressible
Euler/NS for the moment)
- Support for multiple tracers
- Much improved interpolation of variables
- New consistent pressure correction formulation (which works with
momentum source terms near boundaries)
- MPI configuration reworked (uses mpicc): tested with mpich and
- Bounding boxes for PPM output: allows to select a limited area for
- Optional binary file format (4 to 5 times faster file read)
Minor bug corrections and improvements:
- pkgconfig support
- MacOSX support
- Bug fix for 64 bits machines
- Relaxed constraints on refinement (still needs work)
- External library links in GfsFunction
- Short keyword support
- Lambda2 criterion of Jeong and Hussain (for vortex detection)
20/05/2004: Release 0.3.0
Quite a lot has happened since 0.2.0. The main changes/improvements are:
- On systems supporting dynamic linking, functions of space and time
can be used instead of constants for most objects which require a
numerical argument. This is particularly useful for initialisation
(each field can be set using functions of space and time) where almost
any mathematical description of the initial conditions can be written
directly in the parameter file (no need to create a custom module
etc...). The same mechanism can also be used to define the initial
refinement of the grid (i.e. specify the mesh density as a
mathematical function directly in the parameter file) or variable
- The boundary condition subsystem has been entirely revamped. It is
now possible to define complex boundary conditions by combining
independent boundary conditions (Dirichlet, Neumann etc...) for each
variable. Dynamic functions can be used within this framework which
allows for variable in space (e.g. profiles) and in time boundary
- The code now includes a multigrid semi-implicit diffusion solver. It
can work together with embedded solid boundaries in 2D but not yet in
3D. It is possible to accurately specify the boundary conditions
(Dirichlet or Neumann) for the diffused variable on the solid
boundaries. All this allows for the solution of advection-diffusion
equations such as incompressible Navier-Stokes. Due to the stability
of the semi-implicit scheme it is also possible to solve pure Stokes
flows with no restriction on the time step.
- The adaptive engine has been rewritten. It is now possible to
control the maximum size of the simulation. When this maximum size is
reached, the algorithm will optimally distribute this maximum number
of cells so that the adaptive criterion is minimized.
- Note that the parameter file arguments of several objects have
changed (GfsAdapt in particular), so that full parameter file
compatibility with 0.2.0 is not guaranteed.
- Volume of Fluid or standard Godunov advection schemes can now be
selected in parameter files.
- New object outputs the pressure and viscous forces exerted on the
embedded solid boundary.
- The pressure is now properly scaled.
- Plus a large number of bug fixes, small improvements etc...
Have a look at the ChangeLog for details.
08/01/2003: Release 0.2.0
This new release of Gerris includes a number of new features as well
as some major code restructuring.
The GTS library version 0.7.1 is required. It includes major
improvements for boolean operations between surfaces which greatly
improve the robustness of the treatment of solid boundaries within
The major changes are listed below. For a detailed summary see the
- Support for the variable density incompressible Euler equations.
- Support for user-defined source terms for any variable. Gaussian
tracer source terms and constant source terms (e.g. acceleration of
gravity in momentum equation) are provided.
- Base domain does not have to be cubic anymore. Independent length
scales can be provided for each dimension.
- Module for OpenDX allowing direct import of Gerris simulation files.
- Updated documentation and tutorial: section about user-defined
extension modules for initial conditions.
- Support for dynamic allocation of additional cell variables
i.e. extension modules can dynamically add additional variables if
- Automatic compilation and installation of 2D and 3D versions.
- Preliminary implementation of a second-order Volume Of Fluid (VOF)
- A new GfsAdaptNotBox class can be used to specify parts of the
domain which do not need to be refined. This is particularly useful
for implementing absorbing outflow conditions.
Improvements and restructuring:
- Improved adaptive refinement algorithm.
- Restructuring of the test suite.
19/06/2002: Release 0.1.0
I am glad to announce the first "official" release of Gerris.
It needs the latest version of GTS (0.6.0) to compile.
A major change since last month is the addition of "dynamic adaptive
mesh refinement" i.e. the distribution of cells changes according to
what is happening to the solution. Have a look at the gallery on the
web site for a graphical illustration.
and here (at the bottom of the page):
I also wrote a short tutorial which should help you get started with
the code (available online and in the distribution in doc/tutorial).
Any feedback is of course welcome,
11/12/2001: Inital CVS checkin
01/08/2001: Initial setup