9#include <kernel/geometry/index_set.hpp>
34 template<
typename IndexSetHolderType,
typename TargetSetHolderType,
typename ParentIndexSetHolderType>
35 static void fill_ish(IndexSetHolderType& ish,
const TargetSetHolderType& tsh,
const ParentIndexSetHolderType& parent_ish)
38 IndexSetFiller<dim-1>::fill_ish(ish, tsh, parent_ish);
41 auto& index_set(ish.template get_index_set<dim, 0>());
43 auto& index_set_parent(parent_ish.template get_index_set<dim, 0>());
45 auto& target_set_vertex(tsh.template get_target_set<0>());
46 auto& target_set_dim(tsh.template get_target_set<dim>());
49 std::vector<Index> inverse_target_map(index_set_parent.get_index_bound());
52 for(Index i(0); i < index_set_parent.get_index_bound(); ++i)
53 inverse_target_map[i] = target_set_vertex.get_num_entities() +
Index(1);
55 for(Index i(0); i < target_set_vertex.get_num_entities(); ++i)
56 inverse_target_map[target_set_vertex[i]] = i;
59 for(Index cell(0); cell < target_set_dim.get_num_entities(); ++cell)
63 for(
int i(0); i < index_set_parent.get_num_indices(); ++i)
64 index_set[cell][i] = inverse_target_map[index_set_parent[target_set_dim[cell]][i]];
73 struct IndexSetFiller<0>
75 template<
typename IndexSetHolderType,
typename TargetSetHolderType,
typename ParentIndexSetHolderType>
76 static void fill_ish(IndexSetHolderType& DOXY(ish),
const TargetSetHolderType& DOXY(tsh),
const ParentIndexSetHolderType& DOXY(parent_ish))
std::uint64_t Index
Index data type.