8#include <kernel/adjacency/graph.hpp>
9#include <kernel/geometry/conformal_mesh.hpp>
10#include <kernel/geometry/intern/standard_refinement_traits.hpp>
20 template<
typename Shape_>
21 struct Parti2LvlHelper
23 static constexpr Index factor = StandardRefinementTraits<Shape_, Shape_::dimension>::count;
28 struct Parti2LvlHelper<Shape::Hypercube<dim_>>
37 template<
typename Mesh_>
67 template<
typename Shape_,
int num_coords_,
typename Coord_>
97 _num_elems(mesh.get_num_elements()),
98 _num_ranks(num_ranks),
105 const Index factor = Intern::Parti2LvlHelper<Shape_>::factor;
106 const Index lvlinc = Intern::Parti2LvlHelper<Shape_>::lvlinc;
107 Index count(_num_elems);
110 while(count < _num_ranks)
116 if(count != _num_ranks)
125 _ref_lvl = (power + lvlinc -
Index(1)) / lvlinc;
128 const Index ref_fac(Intern::StandardRefinementTraits<Shape_, Shape_::dimension>::count);
129 _ref_elems = _num_elems;
130 for(
Index i(0); i < _ref_lvl; ++i)
131 _ref_elems *= ref_fac;
166 const Index elems_per_rank = _ref_elems / _num_ranks;
167 for(
Index i(0); i <= _num_ranks; ++i)
168 ptr[i] = elems_per_rank * i;
171 for(
Index i(0); i < _ref_elems; ++i)
#define XASSERT(expr)
Assertion macro definition.
Adjacency Graph implementation.
Index * get_domain_ptr()
Returns the domain pointer array.
Index * get_image_idx()
Returns the image node index array.
2-Level-Partitioner class template declaration
std::uint64_t Index
Index data type.