16 #include <deal.II/grid/cell_id.h> 17 #include <deal.II/grid/tria.h> 21 DEAL_II_NAMESPACE_OPEN
25 : coarse_cell_id(
numbers::invalid_unsigned_int)
26 , n_child_indices(
numbers::invalid_unsigned_int)
38 const std::vector<std::uint8_t> &
id)
39 : coarse_cell_id(coarse_cell_id)
50 const std::uint8_t *
id)
51 : coarse_cell_id(coarse_cell_id)
52 , n_child_indices(n_child_indices)
67 const unsigned int two_bit_mask = (1 << 2) - 1;
68 const unsigned int dim = binary_representation[1] & two_bit_mask;
74 const unsigned int children_per_value =
75 sizeof(binary_type::value_type) * 8 / dim;
76 const unsigned int child_mask = (1 << dim) - 1;
79 unsigned int child_level = 0;
80 unsigned int binary_entry = 2;
83 for (
unsigned int j = 0; j < children_per_value; ++j)
88 (binary_representation[binary_entry] >> (dim * j)) & child_mask;
104 binary_representation.fill(0);
114 binary_representation[1] |= dim;
117 const unsigned int children_per_value =
118 sizeof(binary_type::value_type) * 8 / dim;
119 unsigned int child_level = 0;
120 unsigned int binary_entry = 2;
127 for (
unsigned int j = 0; j < children_per_value; ++j)
129 const unsigned int child_index =
133 binary_representation[binary_entry] |= (child_index << (j * dim));
141 return binary_representation;
149 std::ostringstream ss;
156 template <
int dim,
int spacedim>
165 cell = cell->child(static_cast<unsigned int>(
child_indices[i]));
171 #include "cell_id.inst" 173 DEAL_II_NAMESPACE_CLOSE
std::array< unsigned int, 4 > binary_type
unsigned int coarse_cell_id
#define Assert(cond, exc)
std::string to_string() const
Triangulation< dim, spacedim >::cell_iterator to_cell(const Triangulation< dim, spacedim > &tria) const
binary_type to_binary() const
unsigned int n_child_indices
std::array< std::uint8_t, internal::p4est::functions< 2 >::max_level > child_indices
static::ExceptionBase & ExcInternalError()