What is GeLB?
#
Quick descriptionGeLB
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.
- the reference compiler (
#
About this manualThis 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.
GeLB
?#
Why We created GeLB
to "scratch our own itch".
As researchers interested in LBM, we want to:
- have the ability to test and use (as conveniently as possible) the newer (and older) algorithms appearing in the LBM literature,
- easily share our work with others, and
- 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.
GeLB
?#
What can you simulate using 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
GeLB
does 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.