Skip to content
Snippets Groups Projects
Commit 9742f3f8 authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Change numbering of item type

Also add dimension(ItemType) utility according to the space dimension
parent 6633d329
No related branches found
No related tags found
1 merge request!131Improve Synchronizer handling
......@@ -59,8 +59,8 @@ struct ItemTypeId<1>
i = 0;
break;
}
case ItemType::edge:
case ItemType::face:
case ItemType::edge:
case ItemType::node: {
// in 1d, faces, edges and nodes are the same
i = 1;
......@@ -69,6 +69,13 @@ struct ItemTypeId<1>
}
return i;
}
PUGS_INLINE
static constexpr size_t
dimension(ItemType item_type)
{
return 1 - itemTId(item_type);
}
};
template <ItemType item_type>
......@@ -87,8 +94,8 @@ struct ItemTypeId<2>
i = 0;
break;
}
case ItemType::edge:
case ItemType::face: {
case ItemType::face:
case ItemType::edge: {
// in 2d, faces and edges are the same
i = 1;
break;
......@@ -100,6 +107,13 @@ struct ItemTypeId<2>
}
return i;
}
PUGS_INLINE
static constexpr size_t
dimension(ItemType item_type)
{
return 2 - itemTId(item_type);
}
};
template <ItemType item_type>
......@@ -118,11 +132,11 @@ struct ItemTypeId<3>
i = 0;
break;
}
case ItemType::edge: {
case ItemType::face: {
i = 1;
break;
}
case ItemType::face: {
case ItemType::edge: {
i = 2;
break;
}
......@@ -133,6 +147,13 @@ struct ItemTypeId<3>
}
return i;
}
PUGS_INLINE
static constexpr size_t
dimension(ItemType item_type)
{
return 3 - itemTId(item_type);
}
};
template <ItemType item_type>
......
......@@ -30,24 +30,39 @@ TEST_CASE("ItemType", "[connectivity]")
SECTION("checking for item ids in 1d")
{
REQUIRE(ItemTypeId<1>::itemTId(cell_type) == 0);
REQUIRE(ItemTypeId<1>::itemTId(edge_type) == 1);
REQUIRE(ItemTypeId<1>::itemTId(face_type) == 1);
REQUIRE(ItemTypeId<1>::itemTId(edge_type) == 1);
REQUIRE(ItemTypeId<1>::itemTId(node_type) == 1);
REQUIRE(ItemTypeId<1>::dimension(cell_type) == 1);
REQUIRE(ItemTypeId<1>::dimension(face_type) == 0);
REQUIRE(ItemTypeId<1>::dimension(edge_type) == 0);
REQUIRE(ItemTypeId<1>::dimension(node_type) == 0);
}
SECTION("checking for item ids in 2d")
{
REQUIRE(ItemTypeId<2>::itemTId(cell_type) == 0);
REQUIRE(ItemTypeId<2>::itemTId(edge_type) == 1);
REQUIRE(ItemTypeId<2>::itemTId(face_type) == 1);
REQUIRE(ItemTypeId<2>::itemTId(edge_type) == 1);
REQUIRE(ItemTypeId<2>::itemTId(node_type) == 2);
REQUIRE(ItemTypeId<2>::dimension(cell_type) == 2);
REQUIRE(ItemTypeId<2>::dimension(face_type) == 1);
REQUIRE(ItemTypeId<2>::dimension(edge_type) == 1);
REQUIRE(ItemTypeId<2>::dimension(node_type) == 0);
}
SECTION("checking for item ids in 3d")
{
REQUIRE(ItemTypeId<3>::itemTId(cell_type) == 0);
REQUIRE(ItemTypeId<3>::itemTId(edge_type) == 1);
REQUIRE(ItemTypeId<3>::itemTId(face_type) == 2);
REQUIRE(ItemTypeId<3>::itemTId(face_type) == 1);
REQUIRE(ItemTypeId<3>::itemTId(edge_type) == 2);
REQUIRE(ItemTypeId<3>::itemTId(node_type) == 3);
REQUIRE(ItemTypeId<3>::dimension(cell_type) == 3);
REQUIRE(ItemTypeId<3>::dimension(face_type) == 2);
REQUIRE(ItemTypeId<3>::dimension(edge_type) == 1);
REQUIRE(ItemTypeId<3>::dimension(node_type) == 0);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment