MARBLES: Multi-scale Adaptively Refined Boltzmann LatticE Solver

README

MARBLES: Multi-scale Adaptively Refined Boltzmann LatticE Solver

CI Badge Documentation Badge License Badge AMReX Badge C++ Badge

MARBLES (Multi-scale Adaptively Refined Boltzmann LatticE Solver) is a computational fluid dynamics solver that leverages the lattice Boltzmann method (LBM) and block-structured adaptive mesh refinement (AMR) to simulate flows in complex media. MARBLES supports various parallel decomposition strategies, including the use of the Message Passing Interface (MPI) and OpenMP threading. All major GPU architectures (e.g., Intel, AMD, NVIDIA) are supported through the use of performance portability functionalities implemented in AMReX. The MARBLES software is released in NREL Software Record SWR-23-37 “MARBLES (Multi-scale Adaptively Refined Boltzmann LatticE Solver)”.

Getting Started

To compile and run MARBLES, one needs a C++ compiler that supports the C++17 standard, and then execute

$ git clone --recursive git@github.com:NREL/marbles.git
$ cd Build
$ make realclean && make -j
$ ./marbles3d.xxx.yyy.ex example.inp

Note

  1. In the exec line above, xxx.yyy is a tag identifying your compiler and various build options, and will vary across pltaform. (Note that GNU compilers must be at least version 7, and MPI should be at least of standard version 3).

  2. The example file can be any file from the Tests/test_files directories.

  3. In addition to informative output to the terminal, periodic plotfiles are written in the run folder. These may be viewed with AMReX’s Amrvis or VisIt:

    1. In VisIt, direct the File->Open dialogue to select the file named “Header” that is inside each plotfile folder.

    2. With Amrvis, $ amrvis3d plt00030, for example.

Alternatively, one can use cmake to build the code

$ cd Build
$ ./cmake.sh
$ ./marbles example.inp

Dependencies

MARBLES is built on the AMReX library.

Documentation

The full documentation for MARBLES exists in the Docs directory; at present this is maintained inline using Sphinx. To build the documentation

$ cd Docs && mkdir build && cd build && sphinx-build -M html ../sphinx .

Or, using cmake

$ cd Build && cmake -B build-docs ../Docs && cmake --build build-docs

Funding

This work was authored by the National Renewable Energy Laboratory (NREL) for the U.S. Department of Energy (DOE) under Contract No. DE-AC36-08GO28308. This work was supported by the Laboratory Directed Research and Development (LDRD) Program at NREL. The views expressed in the article do not necessarily represent the views of the DOE or the U.S. Government. The U.S. Government retains and the publisher, by accepting the article for publication, acknowledges that the U.S. Government retains a nonexclusive, paid-up, irrevocable, worldwide license to publish or reproduce the published form of this work, or allow others to do so, for U.S. Government purposes. A portion of the research was performed using computational resources sponsored by the Department of Energy’s Office of Energy Efficiency and Renewable Energy and located at the National Renewable Energy Laboratory.

Indices and tables