include/pops/amr/hierarchy/amr_hierarchy.hpp File ReferenceΒΆ

adc_cpp: include/pops/amr/hierarchy/amr_hierarchy.hpp File Reference
adc_cpp 0.3.0
Model-free C++23 core for coupled hyperbolic-elliptic systems on adaptive (AMR) meshes, with MPI and GPU (Kokkos) backends
amr_hierarchy.hpp File Reference

AmrHierarchy: the stack of refinement levels (container of the AMR hierarchy). More...

#include <pops/amr/hierarchy/refinement_ratio.hpp>
#include <pops/mesh/index/box2d.hpp>
#include <pops/mesh/layout/box_array.hpp>
#include <pops/mesh/layout/distribution_mapping.hpp>
#include <pops/mesh/storage/multifab.hpp>
#include <pops/parallel/comm.hpp>
#include <cassert>
#include <utility>
#include <vector>
+ Include dependency graph for amr_hierarchy.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  pops::AmrHierarchy
 Stack of refined levels (domain + BoxArray + MultiFab per level), level 0 the coarsest. More...
 

Namespaces

namespace  pops
 

Detailed Description

AmrHierarchy: the stack of refinement levels (container of the AMR hierarchy).

Layer: include/pops/amr (AMR geometric primitives). Role: carries, per level, the domain in index space, the BoxArray and the MultiFab field. Level 0 = the coarsest; fixed integer refinement ratio (2 by default). Contract: pure container; POPULATING the fine levels (tagging + Berger-Rigoutsos clustering) is the job of regrid.hpp. Here we provide the explicit add/replace of a level, sufficient for static refinement.

Invariants:

  • domain(lev) == domain(lev-1).refine(ref_ratio): domains nested by the fixed ratio;
  • the three vectors (domain_, ba_, data_) always have the same size = num_levels();
  • replacing or clearing a level invalidates and removes all finer levels.