Skip to main content

What is GeLB?

Quick description#

GeLB is a domain-specific programming language (DSL), which allows you to quickly create numerical simulations based on the lattice Boltzmann method (LB/LBM), by writing a high-level description of your simulation.

The GeLB framework consists of:

  • the specification of the DSL, and
  • support tools for the DSL:
    • the reference compiler (gelbc),
    • editor/IDE plugins, etc.

About this manual#

This manual focuses on what you need to know if you want to use GeLB. Among other things, you will learn how to:

  • install the reference GeLB compiler (gelbc) on your machine,
  • write your simulations (as .gelb files),
  • compile the .gelb files into executable programs, and
  • run your simulations on your target machines.

Why GeLB?#

We created GeLB to "scratch our own itch". As researchers interested in LBM, we want to:

  1. have the ability to test and use (as conveniently as possible) the newer (and older) algorithms appearing in the LBM literature,
  2. easily share our work with others, and
  3. to be productive while we work on / with LBM; among other things, we want simulations which:
    • are easy to debug,
    • take advantage of whatever hardware we have,
    • support high-performance I/O,
    • which we can pause and resume, and
    • which give us estimates on the {memory, compute-time, storage} required.

As the saying goes, we want to have our cake and eat it too. In our opinion, the approaches prevailing in the community (in-house development of simulation code or aggregation around a few LBM-focused libraries) are lacking. In case you need more convincing, here is an in-depth explanation. Also, if you have specific questions, you might find an answer here.

What can you simulate using GeLB?#

Unlike some computational fluid dynamics (CFD) software packages where the solver is fixed and where you can customize only some parts of the simulation (geometry, boundary conditions, initial conditions and forcing), GeLB is designed to encourage you to change the core of the solver. As such, the main limit to what problems can be modeled is only your imagination.

In principle, if the problem can be solved using a conventional LBM algorithm, you can use GeLB.

Our definition of "conventional LBM" is:

  • finite-difference (FD) grids/lattices (no support for finite-{volumes,elements} formulations of LBM)
  • uniform, isotropic & rectangular grids/lattices (for example, currently GeLBdoes not support stretched grids or mesh-refinement)

Even with these (potentially significant) pitfalls, there are many problems which can be modeled. Here are a few examples:

  • TODO (list items and {previews + links} to gallery entries)
  • TODO (list items and {previews + links} to gallery entries)
  • TODO (list items and {previews + links} to gallery entries)

GeLB supports {1,2,3}-D lattices. Also, more than one lattice may be used within one simulation (if they are "overlapping" in space).

What can you expect in the future?#

  • Short-term: mostly performance improvements and other incremental improvements.
  • Long-term: (maybe) mesh-refinement

You can view the roadmap here.