27 template<
size_t I,
class T,
size_t DIM,
size_t DOM>
40 static constexpr
size_t find() {
42 using E =
typename std::tuple_element<I - 1, T>
::type;
48 return D1::value == DOM && T1::dimension == DIM
60 template<
class T,
size_t DIM,
size_t DOM>
71 static constexpr
size_t find() {
85 template<
class MESH_TYPE,
size_t DIM,
size_t DOM>
88 using entity_types =
typename MESH_TYPE::entity_types;
90 using pair_ =
typename std::tuple_element<
104 template<
size_t INDEX,
class TUPLE,
class ENTITY>
121 static constexpr
size_t find() {
123 using TUPLE_ELEMENT =
typename std::tuple_element<INDEX - 1, TUPLE>
::type;
129 return std::is_same<ELEMENT_ENTITY, ENTITY>::value
141 template<
class TUPLE,
class ENTITY>
151 static constexpr
size_t find() {
152 assert(
false &&
"failed to find index space");
161 template<
size_t INDEX,
typename TUPLE,
size_t DIM,
size_t DOM>
172 static constexpr
size_t find() {
174 using TUPLE_ELEMENT =
typename std::tuple_element<INDEX - 1, TUPLE>
::type;
180 return (DIM == ELEMENT_ENTITY::dimension && DOM == ENTITY_DOMAIN::value)
192 template<
typename TUPLE,
size_t DIM,
size_t DOM>
199 static constexpr
size_t find() {
208 template<
size_t INDEX,
typename TUPLE,
size_t ID>
219 static constexpr
size_t find() {
221 using TUPLE_ELEMENT =
typename std::tuple_element<INDEX - 1, TUPLE>
::type;
225 return ID == INDEX_SPACE::value
236 template<
typename TUPLE,
size_t ID>
243 static constexpr
size_t find() {
244 assert(
false &&
"failed to find index space");
254 template<
size_t INDEX,
typename TUPLE,
size_t ID>
265 static constexpr
size_t find() {
267 using TUPLE_ELEMENT =
typename std::tuple_element<INDEX - 1, TUPLE>
::type;
271 return ID == INDEX_SUBSPACE::value
282 template<
typename TUPLE,
size_t ID>
289 static constexpr
size_t find() {
310 std::enable_if_t<(I == MESH_TYPE::num_dimensions)> * =
nullptr>
312 find_all_index_spaces_in_domain(Array && index_spaces) {
314 std::tuple_size<typename MESH_TYPE::entity_types>::value,
315 typename MESH_TYPE::entity_types,
324 typename = std::enable_if_t<(
325 I<MESH_TYPE::num_dimensions && MESH_TYPE::num_dimensions> 0)>>
327 find_all_index_spaces_in_domain(Array && index_spaces) {
329 std::tuple_size<typename MESH_TYPE::entity_types>::value,
330 typename MESH_TYPE::entity_types,
333 find_all_index_spaces_in_domain<I + 1, MESH_TYPE, DOM>(index_spaces);
339 template<
typename MESH_TYPE,
size_t DOM>
341 find_all_index_spaces_in_domain() {
342 std::array<size_t, MESH_TYPE::num_dimensions + 1> index_spaces;
343 detail::find_all_index_spaces_in_domain<0, MESH_TYPE, DOM>(index_spaces);
357 template<
size_t FIND_DOM,
size_t I,
class TS>
368 static constexpr
size_t size = std::tuple_size<TS>::value;
370 using T =
typename std::tuple_element<size - I, TS>
::type;
375 if(D1::value == FIND_DOM) {
391 template<
size_t FIND_DOM,
class TS>
415 template<
size_t FIND_DOM,
size_t I,
class TS>
427 static constexpr
size_t size = std::tuple_size<TS>::value;
430 using T =
typename std::tuple_element<size - I, TS>
::type;
438 if(M1::value == FIND_DOM) {
455 template<
size_t FIND_DOM,
class TS>
476 std::vector<int_t> offset;
477 std::vector<int_t>
index;
478 std::vector<int_t> partition;
483 template<
typename MESH_TYPE,
bool HAS_SUBSPACES>
485 using type =
typename MESH_TYPE::index_subspaces;
488 template<
typename MESH_TYPE>
490 using type = std::tuple<>;
493 template<
typename MESH_TYPE>
496 has_member_index_subspaces<MESH_TYPE>::value>
::type;
499 template<
typename MESH_TYPE>
501 using type =
typename get_index_subspaces<MESH_TYPE>::type;
503 static constexpr
size_t value = std::tuple_size<type>::value;
compute_connectivity provides static recursion to process connectivity computation of mesh entity typ...
Definition: utils.hh:358
static int compute(DOM &mesh)
Definition: utils.hh:426
static constexpr size_t find()
Search last tuple element.
Definition: utils.hh:289
static constexpr size_t find()
Definition: utils.hh:265
static constexpr size_t find()
Definition: utils.hh:151
static constexpr size_t find()
Definition: utils.hh:121
static constexpr size_t find()
Definition: utils.hh:172
find_entity_ provides static search capabilities.
Definition: utils.hh:86
static int compute(DOM &)
Definition: utils.hh:464
static constexpr size_t find()
Definition: utils.hh:71
std::string type()
Definition: demangle.hh:44
static constexpr size_t find()
Search last tuple element.
Definition: utils.hh:199
compute_bindings provides static recursion to process binding computation of mesh entity types...
Definition: utils.hh:416
static int compute(DOM &mesh)
Definition: utils.hh:367
static int compute(DOM &)
Definition: utils.hh:400
static constexpr size_t find()
Definition: utils.hh:219
find_entity provides a specialization for the root recursion.
Definition: utils.hh:28
typename std::tuple_element< 2, pair_ >::type type
Definition: utils.hh:101
#define FLECSI_MEMBER_CHECKER(X)
Macro to check if the object has a member _*.
Definition: static_verify.hh:27
static constexpr size_t find()
Search last tuple element.
Definition: utils.hh:243
static constexpr size_t find()
Definition: utils.hh:40
Definition: control.hh:31