Home - STFS-TUDa/blastAMR GitHub Wiki

blastAMR Docs

The blastAMR repository provides implementations of OpenFOAM libraries to run load-balanced adaptive mesh refinement on both hexahedral and polyhedral meshes.

This wiki page intends to provide the absolute minimum amount of information needed to get started with the library.

First, here are some principles this project was built on:

  • Unit/integration tests are the dev's documentation. By browsing tests, you get to see examples of usage for the most important classes (entry points and interfaces for the library). tests/Make also shows you how to compile and link against the library if you wish to do so.
  • Unit/integration tests also give a rough idea on what we promise to keep stable throughout the life of the project. If a class is not tested, it means there is a chance its interface will soon change.
  • We are all for keeping a lean Git history. This library is the result of a port of AMR/LB capabilities from blastFoam and all of the related history is retained.

[!Important] Always set AMRLB_PROJECT environment variable to the root directory of the blastAMR repo!

Supported OpenFOAM versions

  • The master branch is tested against OpenFOAM v2006 (same as v2012).
  • There is a branch v2212 supporting versions including and newer that v2212. If you are on one of these two branches, Allwmake will switch to the one suitable for your OpenFOAM version automatically. You can check the up-to-date CI build status for the version you're interested in.

The tutorials

A few variants of the dam-break and freely propagating flame cases are provided in the tutorial folder to showcase different features of the library; notably:

  • Support for refinement history produced by tools like snappyHexMesh. These are the one which use the hexRefiner engine as the polyRefiner one is incompatible and will likely segfault if used with such histories.
    • This "support" is limited to the hexRefiner, and even though the code will read existing cellLevel files (we need this for updateMesh to function properly), the initial cell levels are assumed to be null for the polyRefiner. Although, things may work out just fine on most meshes.
  • Usage of coded error indicators.