Skip to content

adaptive-cfd/WABBIT

Repository files navigation

WABBIT v2.0beta5 (newBiorthogonal)

(W)avelet (A)daptive (B)lock-(B)ased solver for (I)nteractions with (T)urbulence

❗ New in 05/2021: please see this video for an introduction to the code's datastructures: https://www.youtube.com/watch?v=qBBIW2-ktgo

With WABBIT it is possible to solve partial differential equations (PDE) on block-based adaptive grids. Simulations in 2D and 3D are possible and performed fully parallel on CPU. The set of PDE is encapsulated from the code handling the adaptive grid, and thus existing monobloc solvers can be adapted easily for this solver. WABBIT can handle PDEs of the following type:

$\partial_t \phi = N\left(\phi\right)$

and $N\left(\phi\right)$ can be defined. This implementation is handled by the "physics-modules". Note the current version of the code does not handle elliptic PDE, such as the Poisson equation that typically arises in incompressible fluid dynamics. Instead, we use a quasi-hyperbolic approximation in that case, the "artificial compressibility method".

Installation of WABBIT

How to get a copy of WABBIT and compile the code:

git clone https://github.com/adaptive-cfd/WABBIT.git

Unpack the file and run the compilation and tests with make, make sure that all necessary dependencies are loaded:

make all
make test

⚠️ since 15 Aug 2023, the unit testing framework has evolved. It now stores full HDF5 files in the TESTING directory, which makes it easier to visualize the reference data and current results, should they be different. We now calculate the L2 error of the field, if the grid is identical. This new framework requires the WABBIT Python Tools repository for comparing two WABBIT HDF5 files.

Dependencies

WABBIT needs several packages installed in order to compile and run, the main dependencies are:

Further information on the installation and compilation of all pre-requesites can be found in the wiki under Install-WABBIT-with-requirements.

A list of all environment variables to be set can be find in the wiki under Loading-prerequesites. Ensure that the WABBIT-specific variables for HDF5 are set in order for the compilation to finish successfully.

Running WABBIT

Customize the template .ini-file and rename file to [your_filename.ini], run WABBIT and pass it the .ini-file as well as the total amount of memory used:

mpirun -n 1 ./wabbit [your_filename.ini] --memory=2.0GB

alternatively, you can specify the amount of memory per core that the code may use:

mpirun -n 1 ./wabbit [your_filename.ini] --mem-per-core=2.0GB

where the --memory options allows you to control how much memory is globally allocated, i.e., on all CPUs. Note that WABBIT does not free memory during runtime. This is because the code is intented to run on clusters/supercomputers, where the available memory is reserved for the execution of the code alone. This is quite typical for supercomputing.

Additional Information

In case you have problems with the preparation to use WABBIT, have a look if you can find anything in the wiki

More information can also be found in the documentation build with doxygen. Therefore it is necessary to have Doxygen installed. Create the documentation with

doxygen doc/doc_configuration

and display doc/output/html/index.html with your browser. You can also locally display all files with

python3 -m http.server --directory doc/output/html

and then open in a browser localhost:8000

Publications