Skip to content

Common Issues

Elwardi edited this page May 3, 2026 · 3 revisions

Common/known current issues

General issues

  • The library is not thoroughly tested against all decomposition methods yet. So, if you encounter problems related to load-balancing, try a different decomposition method (scotch and hierarchical are preferred).
  • There are verified issues of the Load-balancer with some specific boundary conditions. These usually must be fixed on the BC side.

Post-processing related issues

Reconstruction fails

See Issue #7

Issues with surface sampling

See Issue #10

Pre-processing related issues

Support for refinement from snappyHexMesh and friends

blastAMR has thin support for refinement history produced by other tools. Due to the differences in the way these histories are generated, full support is difficult to achieve so:

  • Use hexRefiner when you process your base mesh with snappyHexMesh if you want the refinements to count.
  • Delete cellLevel and pointLevel files from the polyMesh folder for blastAMR to consider all initial cells to be at level 0.

See PR #22

Unrefinement floor: baseCellLevel / basePointLevel

To prevent the runtime AMR from undoing refinements that were baked into the base mesh (typically by snappyHexMesh), both refiners enforce an unrefinement floor per cell. A cell is protected from unrefinement when cellLevel[cell] <= baseCellLevel[cell]. The floor is read from constant/polyMesh/baseCellLevel (and basePointLevel) when present, and defaults to all zeros when absent.

The files are auto-written next to cellLevel / pointLevel, so once they exist they are honored on every subsequent run.

SHM workflow: if you want to protect SHM-produced refinement, write baseCellLevel and basePointLevel to constant/polyMesh once after meshing — for example by copying the current cellLevel / pointLevel:

cp constant/polyMesh/cellLevel  constant/polyMesh/baseCellLevel
cp constant/polyMesh/pointLevel constant/polyMesh/basePointLevel

After that, the runtime AMR is allowed to refine further but can never unrefine below the recorded SHM levels.

Pre-AMR refinement loop workflow: the typical Allrun pattern for blastAMR tutorials runs updateMesh several times before the parallel solver starts, to wrap the interface in fine cells. These cells must remain unrefinable so that AMR can release them once the interface moves away. Do not write baseCellLevel / basePointLevel for this workflow — the default zero floor is what you want. If a stale baseCellLevel / basePointLevel is sitting in constant/polyMesh from an earlier run, delete it before the pre-AMR loop, or Allclean will remove it via cleanCase0.

Historical note (≤ commit aabbcfe): earlier versions of the library auto-captured the current cell levels as the floor when no baseCellLevel file was found on disk. Combined with the pre-AMR loop, this silently locked every pre-refined cell, so AMR could never unrefine them once the interface moved. The default is now an all-zero floor; SHM users must write the file explicitly as shown above.

Some turbulence models are inherently incompatible with blastAMR for now

See for example Issue #5