Gerris release notes/09-07-21

From Gerris

Jump to: navigation, search

The main change for this release is dynamic load-balancing for parallel simulations. See Gerris in parallel and the new parallel Von Karmann vortex street example. Gerris has also been recently benchmarked on up to 2048 processors on several supercomputers. For the problem considered (a 128^3 lid-driven cavity), Gerris scaled linearly up to 512 processors.

There is also a new moving cylinder test case.

There are several important improvements and bug fixes for parallel simulations including:

  • Overlapping communications and computations
  • Important bug fix for graph partitioning
  • gfs_domain_locate() uses a Cartesian array for fast indexing
The previous systematic traversal of all the GfsBoxes was very slow (when the number of boxes was large e.g. due to "splitting"). This was particularly noticeable for the VOF algorithm (which does many locate() calls to reconstruct local Cartesian stencils).
  • New option '--event' for gerris2D/3D
  • Entirely solid boxes can be used
They will be automatically removed from the simulation rather than making the simulation abort with an error message.
It used to fail for domains containing disconnected GfsBoxes (which can happen for some domain decompositions in parallel).
Amazingly the implementation of the match() method seems to have been wrong right from the initial implementation (then part of BoundaryMpi). Yet, despite being completely inconsistent, this implementation managed to "work" undetected for several years... The bug also affected parallel simulations through inheritance to BoundaryMpi.
  • GfsOutputSimulation can write "joined" parallel simulation files
  • New gfsjoin2D, gfsjoin3D tools
These are replacing the gfsjoin script. Note however that they can only be used to join parallel files created using this and later versions of Gerris. Older parallel simulation files should still use the gfsjoin script.