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

Refactor connectivity tests utilities

parent b6444483
No related branches found
No related tags found
1 merge request!199Integrate checkpointing
#ifndef CHECKPOINTING_CONNECTIVITY_UTILITIES_HPP
#define CHECKPOINTING_CONNECTIVITY_UTILITIES_HPP
#include <mesh/Connectivity.hpp>
#include <mesh/ConnectivityDescriptor.hpp>
#include <utils/Messenger.hpp>
#include <utils/PugsMacros.hpp>
namespace test_only
{
PUGS_INLINE
std::shared_ptr<const IConnectivity>
duplicateConnectivity(const IConnectivity& i_connectivity)
{
auto setRefItemLists = [](const auto& connectivity, ConnectivityDescriptor& descriptor) {
for (size_t i = 0; i < connectivity.template numberOfRefItemList<ItemType::cell>(); ++i) {
descriptor.addRefItemList(connectivity.template refItemList<ItemType::cell>(i));
}
for (size_t i = 0; i < connectivity.template numberOfRefItemList<ItemType::face>(); ++i) {
descriptor.addRefItemList(connectivity.template refItemList<ItemType::face>(i));
}
for (size_t i = 0; i < connectivity.template numberOfRefItemList<ItemType::edge>(); ++i) {
descriptor.addRefItemList(connectivity.template refItemList<ItemType::edge>(i));
}
for (size_t i = 0; i < connectivity.template numberOfRefItemList<ItemType::node>(); ++i) {
descriptor.addRefItemList(connectivity.template refItemList<ItemType::node>(i));
}
};
ConnectivityDescriptor descriptor;
switch (i_connectivity.dimension()) {
case 1: {
using ConnectivityType = Connectivity<1>;
const ConnectivityType& connectivity = dynamic_cast<const ConnectivityType&>(i_connectivity);
descriptor.setCellNumberVector(connectivity.cellNumber().arrayView());
descriptor.setNodeNumberVector(connectivity.nodeNumber().arrayView());
descriptor.setCellTypeVector(connectivity.cellType().arrayView());
descriptor.setCellOwnerVector(connectivity.cellOwner().arrayView());
descriptor.setNodeOwnerVector(connectivity.nodeOwner().arrayView());
descriptor.setCellToNodeMatrix(connectivity.getMatrix(ItemType::cell, ItemType::node));
setRefItemLists(connectivity, descriptor);
return ConnectivityType::build(descriptor);
}
case 2: {
using ConnectivityType = Connectivity<2>;
const ConnectivityType& connectivity = dynamic_cast<const ConnectivityType&>(i_connectivity);
descriptor.setCellNumberVector(connectivity.cellNumber().arrayView());
descriptor.setFaceNumberVector(connectivity.faceNumber().arrayView());
descriptor.setNodeNumberVector(connectivity.nodeNumber().arrayView());
descriptor.setCellTypeVector(connectivity.cellType().arrayView());
descriptor.setCellFaceIsReversed(connectivity.cellFaceIsReversed().arrayView());
descriptor.setCellOwnerVector(connectivity.cellOwner().arrayView());
descriptor.setFaceOwnerVector(connectivity.faceOwner().arrayView());
descriptor.setNodeOwnerVector(connectivity.nodeOwner().arrayView());
descriptor.setCellToFaceMatrix(connectivity.getMatrix(ItemType::cell, ItemType::face));
descriptor.setCellToNodeMatrix(connectivity.getMatrix(ItemType::cell, ItemType::node));
descriptor.setFaceToNodeMatrix(connectivity.getMatrix(ItemType::face, ItemType::node));
setRefItemLists(connectivity, descriptor);
return ConnectivityType::build(descriptor);
}
case 3: {
using ConnectivityType = Connectivity<3>;
const ConnectivityType& connectivity = dynamic_cast<const ConnectivityType&>(i_connectivity);
descriptor.setCellNumberVector(connectivity.cellNumber().arrayView());
descriptor.setFaceNumberVector(connectivity.faceNumber().arrayView());
descriptor.setEdgeNumberVector(connectivity.edgeNumber().arrayView());
descriptor.setNodeNumberVector(connectivity.nodeNumber().arrayView());
descriptor.setCellTypeVector(connectivity.cellType().arrayView());
descriptor.setCellFaceIsReversed(connectivity.cellFaceIsReversed().arrayView());
descriptor.setFaceEdgeIsReversed(connectivity.faceEdgeIsReversed().arrayView());
descriptor.setCellOwnerVector(connectivity.cellOwner().arrayView());
descriptor.setFaceOwnerVector(connectivity.faceOwner().arrayView());
descriptor.setEdgeOwnerVector(connectivity.edgeOwner().arrayView());
descriptor.setNodeOwnerVector(connectivity.nodeOwner().arrayView());
descriptor.setCellToFaceMatrix(connectivity.getMatrix(ItemType::cell, ItemType::face));
descriptor.setCellToEdgeMatrix(connectivity.getMatrix(ItemType::cell, ItemType::edge));
descriptor.setCellToNodeMatrix(connectivity.getMatrix(ItemType::cell, ItemType::node));
descriptor.setFaceToEdgeMatrix(connectivity.getMatrix(ItemType::face, ItemType::edge));
descriptor.setFaceToNodeMatrix(connectivity.getMatrix(ItemType::face, ItemType::node));
descriptor.setEdgeToNodeMatrix(connectivity.getMatrix(ItemType::edge, ItemType::node));
setRefItemLists(connectivity, descriptor);
return ConnectivityType::build(descriptor);
}
default: {
throw UnexpectedError("invalid connectivity");
}
}
}
template <size_t Dimension>
PUGS_INLINE bool
isSameConnectivity(const Connectivity<Dimension>& connectivity, const Connectivity<Dimension>& read_connectivity)
{
using ConnectivityType = std::decay_t<decltype(connectivity)>;
auto same_value = [](const auto& a, const auto& b) -> bool {
bool same = true;
for (size_t i = 0; i < a.size(); ++i) {
same &= (a[i] == b[i]);
}
return parallel::allReduceAnd(same);
};
auto same_ref_item_list = [&same_value](const auto& a, const auto& b) -> bool {
REQUIRE(a.type() == b.type());
REQUIRE(a.refId() == b.refId());
return same_value(a.list(), b.list());
};
bool same = true;
same &= same_value(connectivity.cellNumber().arrayView(), read_connectivity.cellNumber().arrayView());
same &= same_value(connectivity.nodeNumber().arrayView(), read_connectivity.nodeNumber().arrayView());
same &= same_value(connectivity.cellType().arrayView(), read_connectivity.cellType().arrayView());
same &= same_value(connectivity.cellOwner().arrayView(), read_connectivity.cellOwner().arrayView());
same &= same_value(connectivity.nodeOwner().arrayView(), read_connectivity.nodeOwner().arrayView());
same &= same_value(connectivity.cellToNodeMatrix().values(), read_connectivity.cellToNodeMatrix().values());
if constexpr (ConnectivityType::Dimension >= 2) {
same &= same_value(connectivity.faceNumber().arrayView(), read_connectivity.faceNumber().arrayView());
same &= same_value(connectivity.faceOwner().arrayView(), read_connectivity.faceOwner().arrayView());
same &=
same_value(connectivity.cellFaceIsReversed().arrayView(), read_connectivity.cellFaceIsReversed().arrayView());
same &= same_value(connectivity.cellToFaceMatrix().values(), read_connectivity.cellToFaceMatrix().values());
same &= same_value(connectivity.faceToNodeMatrix().values(), read_connectivity.faceToNodeMatrix().values());
}
if constexpr (ConnectivityType::Dimension == 3) {
same &= same_value(connectivity.edgeNumber().arrayView(), read_connectivity.edgeNumber().arrayView());
same &= same_value(connectivity.edgeOwner().arrayView(), read_connectivity.edgeOwner().arrayView());
same &=
same_value(connectivity.faceEdgeIsReversed().arrayView(), read_connectivity.faceEdgeIsReversed().arrayView());
same &= same_value(connectivity.cellToEdgeMatrix().values(), read_connectivity.cellToEdgeMatrix().values());
same &= same_value(connectivity.faceToEdgeMatrix().values(), read_connectivity.faceToEdgeMatrix().values());
same &= same_value(connectivity.edgeToNodeMatrix().values(), read_connectivity.edgeToNodeMatrix().values());
}
REQUIRE(connectivity.template numberOfRefItemList<ItemType::cell>() ==
read_connectivity.template numberOfRefItemList<ItemType::cell>());
for (size_t i = 0; i < connectivity.template numberOfRefItemList<ItemType::cell>(); ++i) {
same &= same_ref_item_list(connectivity.template refItemList<ItemType::cell>(i),
read_connectivity.template refItemList<ItemType::cell>(i));
}
REQUIRE(connectivity.template numberOfRefItemList<ItemType::face>() ==
read_connectivity.template numberOfRefItemList<ItemType::face>());
for (size_t i = 0; i < connectivity.template numberOfRefItemList<ItemType::face>(); ++i) {
same &= same_ref_item_list(connectivity.template refItemList<ItemType::face>(i),
read_connectivity.template refItemList<ItemType::face>(i));
}
REQUIRE(connectivity.template numberOfRefItemList<ItemType::edge>() ==
read_connectivity.template numberOfRefItemList<ItemType::edge>());
for (size_t i = 0; i < connectivity.template numberOfRefItemList<ItemType::edge>(); ++i) {
same &= same_ref_item_list(connectivity.template refItemList<ItemType::edge>(i),
read_connectivity.template refItemList<ItemType::edge>(i));
}
REQUIRE(connectivity.template numberOfRefItemList<ItemType::node>() ==
read_connectivity.template numberOfRefItemList<ItemType::node>());
for (size_t i = 0; i < connectivity.template numberOfRefItemList<ItemType::node>(); ++i) {
same &= same_ref_item_list(connectivity.template refItemList<ItemType::node>(i),
read_connectivity.template refItemList<ItemType::node>(i));
}
return same;
}
} // namespace test_only
#endif // CHECKPOINTING_CONNECTIVITY_UTILITIES_HPP
...@@ -5,8 +5,6 @@ ...@@ -5,8 +5,6 @@
#include <language/utils/DataHandler.hpp> #include <language/utils/DataHandler.hpp>
#include <language/utils/EmbeddedData.hpp> #include <language/utils/EmbeddedData.hpp>
#include <mesh/ConnectivityDescriptor.hpp>
#include <mesh/ConnectivityMatrix.hpp>
#include <mesh/Mesh.hpp> #include <mesh/Mesh.hpp>
#include <mesh/MeshVariant.hpp> #include <mesh/MeshVariant.hpp>
#include <utils/GlobalVariableManager.hpp> #include <utils/GlobalVariableManager.hpp>
...@@ -14,6 +12,7 @@ ...@@ -14,6 +12,7 @@
#include <utils/checkpointing/WriteConnectivity.hpp> #include <utils/checkpointing/WriteConnectivity.hpp>
#include <MeshDataBaseForTests.hpp> #include <MeshDataBaseForTests.hpp>
#include <checkpointing_Connectivity_utilities.hpp>
#include <filesystem> #include <filesystem>
...@@ -50,109 +49,13 @@ TEST_CASE("checkpointing_Connectivity", "[utils/checkpointing]") ...@@ -50,109 +49,13 @@ TEST_CASE("checkpointing_Connectivity", "[utils/checkpointing]")
HighFive::Group checkpoint_group_1 = file.createGroup("checkpoint_1"); HighFive::Group checkpoint_group_1 = file.createGroup("checkpoint_1");
HighFive::Group useless_group; HighFive::Group useless_group;
auto duplicate_connectivity = [](const IConnectivity& i_connectivity) -> std::shared_ptr<const IConnectivity> {
auto setRefItemLists = [](const auto& connectivity, ConnectivityDescriptor& descriptor) {
for (size_t i = 0; i < connectivity.template numberOfRefItemList<ItemType::cell>(); ++i) {
descriptor.addRefItemList(connectivity.template refItemList<ItemType::cell>(i));
}
for (size_t i = 0; i < connectivity.template numberOfRefItemList<ItemType::face>(); ++i) {
descriptor.addRefItemList(connectivity.template refItemList<ItemType::face>(i));
}
for (size_t i = 0; i < connectivity.template numberOfRefItemList<ItemType::edge>(); ++i) {
descriptor.addRefItemList(connectivity.template refItemList<ItemType::edge>(i));
}
for (size_t i = 0; i < connectivity.template numberOfRefItemList<ItemType::node>(); ++i) {
descriptor.addRefItemList(connectivity.template refItemList<ItemType::node>(i));
}
};
ConnectivityDescriptor descriptor;
switch (i_connectivity.dimension()) {
case 1: {
using ConnectivityType = Connectivity<1>;
const ConnectivityType& connectivity = dynamic_cast<const ConnectivityType&>(i_connectivity);
descriptor.setCellNumberVector(connectivity.cellNumber().arrayView());
descriptor.setNodeNumberVector(connectivity.nodeNumber().arrayView());
descriptor.setCellTypeVector(connectivity.cellType().arrayView());
descriptor.setCellOwnerVector(connectivity.cellOwner().arrayView());
descriptor.setNodeOwnerVector(connectivity.nodeOwner().arrayView());
descriptor.setCellToNodeMatrix(connectivity.getMatrix(ItemType::cell, ItemType::node));
setRefItemLists(connectivity, descriptor);
return ConnectivityType::build(descriptor);
}
case 2: {
using ConnectivityType = Connectivity<2>;
const ConnectivityType& connectivity = dynamic_cast<const ConnectivityType&>(i_connectivity);
descriptor.setCellNumberVector(connectivity.cellNumber().arrayView());
descriptor.setFaceNumberVector(connectivity.faceNumber().arrayView());
descriptor.setNodeNumberVector(connectivity.nodeNumber().arrayView());
descriptor.setCellTypeVector(connectivity.cellType().arrayView());
descriptor.setCellFaceIsReversed(connectivity.cellFaceIsReversed().arrayView());
descriptor.setCellOwnerVector(connectivity.cellOwner().arrayView());
descriptor.setFaceOwnerVector(connectivity.faceOwner().arrayView());
descriptor.setNodeOwnerVector(connectivity.nodeOwner().arrayView());
descriptor.setCellToFaceMatrix(connectivity.getMatrix(ItemType::cell, ItemType::face));
descriptor.setCellToNodeMatrix(connectivity.getMatrix(ItemType::cell, ItemType::node));
descriptor.setFaceToNodeMatrix(connectivity.getMatrix(ItemType::face, ItemType::node));
setRefItemLists(connectivity, descriptor);
return ConnectivityType::build(descriptor);
}
case 3: {
using ConnectivityType = Connectivity<3>;
const ConnectivityType& connectivity = dynamic_cast<const ConnectivityType&>(i_connectivity);
descriptor.setCellNumberVector(connectivity.cellNumber().arrayView());
descriptor.setFaceNumberVector(connectivity.faceNumber().arrayView());
descriptor.setEdgeNumberVector(connectivity.edgeNumber().arrayView());
descriptor.setNodeNumberVector(connectivity.nodeNumber().arrayView());
descriptor.setCellTypeVector(connectivity.cellType().arrayView());
descriptor.setCellFaceIsReversed(connectivity.cellFaceIsReversed().arrayView());
descriptor.setFaceEdgeIsReversed(connectivity.faceEdgeIsReversed().arrayView());
descriptor.setCellOwnerVector(connectivity.cellOwner().arrayView());
descriptor.setFaceOwnerVector(connectivity.faceOwner().arrayView());
descriptor.setEdgeOwnerVector(connectivity.edgeOwner().arrayView());
descriptor.setNodeOwnerVector(connectivity.nodeOwner().arrayView());
descriptor.setCellToFaceMatrix(connectivity.getMatrix(ItemType::cell, ItemType::face));
descriptor.setCellToEdgeMatrix(connectivity.getMatrix(ItemType::cell, ItemType::edge));
descriptor.setCellToNodeMatrix(connectivity.getMatrix(ItemType::cell, ItemType::node));
descriptor.setFaceToEdgeMatrix(connectivity.getMatrix(ItemType::face, ItemType::edge));
descriptor.setFaceToNodeMatrix(connectivity.getMatrix(ItemType::face, ItemType::node));
descriptor.setEdgeToNodeMatrix(connectivity.getMatrix(ItemType::edge, ItemType::node));
setRefItemLists(connectivity, descriptor);
return ConnectivityType::build(descriptor);
}
default: {
throw UnexpectedError("invalid connectivity");
}
}
};
{ // Write { // Write
auto mesh_1d = MeshDataBaseForTests::get().unordered1DMesh()->get<Mesh<1>>(); auto mesh_1d = MeshDataBaseForTests::get().unordered1DMesh()->get<Mesh<1>>();
// creates artificially holes in numbering // creates artificially holes in numbering
duplicate_connectivity(mesh_1d->connectivity()); test_only::duplicateConnectivity(mesh_1d->connectivity());
auto new_connectivity_1d = duplicate_connectivity(mesh_1d->connectivity()); auto new_connectivity_1d = test_only::duplicateConnectivity(mesh_1d->connectivity());
checkpointing::writeConnectivity(*new_connectivity_1d, file, checkpoint_group_0); checkpointing::writeConnectivity(*new_connectivity_1d, file, checkpoint_group_0);
checkpointing::writeConnectivity(*new_connectivity_1d, file, checkpoint_group_1); checkpointing::writeConnectivity(*new_connectivity_1d, file, checkpoint_group_1);
connectivity_id_map[mesh_1d->id()] = new_connectivity_1d->id(); connectivity_id_map[mesh_1d->id()] = new_connectivity_1d->id();
...@@ -160,10 +63,10 @@ TEST_CASE("checkpointing_Connectivity", "[utils/checkpointing]") ...@@ -160,10 +63,10 @@ TEST_CASE("checkpointing_Connectivity", "[utils/checkpointing]")
auto mesh_2d = MeshDataBaseForTests::get().hybrid2DMesh()->get<Mesh<2>>(); auto mesh_2d = MeshDataBaseForTests::get().hybrid2DMesh()->get<Mesh<2>>();
// creates artificially holes in numbering // creates artificially holes in numbering
duplicate_connectivity(mesh_2d->connectivity()); test_only::duplicateConnectivity(mesh_2d->connectivity());
duplicate_connectivity(mesh_2d->connectivity()); test_only::duplicateConnectivity(mesh_2d->connectivity());
auto new_connectivity_2d = duplicate_connectivity(mesh_2d->connectivity()); auto new_connectivity_2d = test_only::duplicateConnectivity(mesh_2d->connectivity());
checkpointing::writeConnectivity(*new_connectivity_2d, file, checkpoint_group_0); checkpointing::writeConnectivity(*new_connectivity_2d, file, checkpoint_group_0);
checkpointing::writeConnectivity(*new_connectivity_2d, file, checkpoint_group_1); checkpointing::writeConnectivity(*new_connectivity_2d, file, checkpoint_group_1);
...@@ -177,21 +80,21 @@ TEST_CASE("checkpointing_Connectivity", "[utils/checkpointing]") ...@@ -177,21 +80,21 @@ TEST_CASE("checkpointing_Connectivity", "[utils/checkpointing]")
auto mesh_3d = MeshDataBaseForTests::get().hybrid3DMesh()->get<Mesh<3>>(); auto mesh_3d = MeshDataBaseForTests::get().hybrid3DMesh()->get<Mesh<3>>();
// creates artificially holes in numbering // creates artificially holes in numbering
duplicate_connectivity(mesh_3d->connectivity()); test_only::duplicateConnectivity(mesh_3d->connectivity());
auto new_connectivity_3d = duplicate_connectivity(mesh_3d->connectivity()); auto new_connectivity_3d = test_only::duplicateConnectivity(mesh_3d->connectivity());
checkpointing::writeConnectivity(*new_connectivity_3d, file, checkpoint_group_1); checkpointing::writeConnectivity(*new_connectivity_3d, file, checkpoint_group_1);
connectivity_id_map[mesh_3d->id()] = new_connectivity_3d->id(); connectivity_id_map[mesh_3d->id()] = new_connectivity_3d->id();
// creates artificially holes in numbering
test_only::duplicateConnectivity(mesh_3d->connectivity());
test_only::duplicateConnectivity(mesh_3d->connectivity());
test_only::duplicateConnectivity(mesh_3d->connectivity());
HighFive::Group global_variables_group_1 = checkpoint_group_1.createGroup("singleton/global_variables"); HighFive::Group global_variables_group_1 = checkpoint_group_1.createGroup("singleton/global_variables");
global_variables_group_1.createAttribute("connectivity_id", global_variables_group_1.createAttribute("connectivity_id",
GlobalVariableManager::instance().getConnectivityId()); GlobalVariableManager::instance().getConnectivityId());
global_variables_group_1.createAttribute("mesh_id", GlobalVariableManager::instance().getMeshId()); global_variables_group_1.createAttribute("mesh_id", GlobalVariableManager::instance().getMeshId());
// creates artificially holes in numbering
duplicate_connectivity(mesh_3d->connectivity());
duplicate_connectivity(mesh_3d->connectivity());
duplicate_connectivity(mesh_3d->connectivity());
} }
// reset to reuse after resuming // reset to reuse after resuming
...@@ -204,82 +107,6 @@ TEST_CASE("checkpointing_Connectivity", "[utils/checkpointing]") ...@@ -204,82 +107,6 @@ TEST_CASE("checkpointing_Connectivity", "[utils/checkpointing]")
GlobalVariableManager::instance().setConnectivityId(initial_connectivity_id); GlobalVariableManager::instance().setConnectivityId(initial_connectivity_id);
{ // Read { // Read
auto is_same = [](const auto& connectivity, const auto& read_connectivity) -> bool {
static_assert(std::is_same_v<decltype(connectivity), decltype(read_connectivity)>);
using ConnectivityType = std::decay_t<decltype(connectivity)>;
auto same_value = [](const auto& a, const auto& b) -> bool {
bool same = true;
for (size_t i = 0; i < a.size(); ++i) {
same &= (a[i] == b[i]);
}
return parallel::allReduceAnd(same);
};
auto same_ref_item_list = [&same_value](const auto& a, const auto& b) -> bool {
REQUIRE(a.type() == b.type());
REQUIRE(a.refId() == b.refId());
return same_value(a.list(), b.list());
};
bool same = true;
same &= same_value(connectivity.cellNumber().arrayView(), read_connectivity.cellNumber().arrayView());
same &= same_value(connectivity.nodeNumber().arrayView(), read_connectivity.nodeNumber().arrayView());
same &= same_value(connectivity.cellType().arrayView(), read_connectivity.cellType().arrayView());
same &= same_value(connectivity.cellOwner().arrayView(), read_connectivity.cellOwner().arrayView());
same &= same_value(connectivity.nodeOwner().arrayView(), read_connectivity.nodeOwner().arrayView());
same &= same_value(connectivity.cellToNodeMatrix().values(), read_connectivity.cellToNodeMatrix().values());
if constexpr (ConnectivityType::Dimension >= 2) {
same &= same_value(connectivity.faceNumber().arrayView(), read_connectivity.faceNumber().arrayView());
same &= same_value(connectivity.faceOwner().arrayView(), read_connectivity.faceOwner().arrayView());
same &= same_value(connectivity.cellFaceIsReversed().arrayView(),
read_connectivity.cellFaceIsReversed().arrayView());
same &= same_value(connectivity.cellToFaceMatrix().values(), read_connectivity.cellToFaceMatrix().values());
same &= same_value(connectivity.faceToNodeMatrix().values(), read_connectivity.faceToNodeMatrix().values());
}
if constexpr (ConnectivityType::Dimension == 3) {
same &= same_value(connectivity.edgeNumber().arrayView(), read_connectivity.edgeNumber().arrayView());
same &= same_value(connectivity.edgeOwner().arrayView(), read_connectivity.edgeOwner().arrayView());
same &= same_value(connectivity.faceEdgeIsReversed().arrayView(),
read_connectivity.faceEdgeIsReversed().arrayView());
same &= same_value(connectivity.cellToEdgeMatrix().values(), read_connectivity.cellToEdgeMatrix().values());
same &= same_value(connectivity.faceToEdgeMatrix().values(), read_connectivity.faceToEdgeMatrix().values());
same &= same_value(connectivity.edgeToNodeMatrix().values(), read_connectivity.edgeToNodeMatrix().values());
}
REQUIRE(connectivity.template numberOfRefItemList<ItemType::cell>() ==
read_connectivity.template numberOfRefItemList<ItemType::cell>());
for (size_t i = 0; i < connectivity.template numberOfRefItemList<ItemType::cell>(); ++i) {
same &= same_ref_item_list(connectivity.template refItemList<ItemType::cell>(i),
read_connectivity.template refItemList<ItemType::cell>(i));
}
REQUIRE(connectivity.template numberOfRefItemList<ItemType::face>() ==
read_connectivity.template numberOfRefItemList<ItemType::face>());
for (size_t i = 0; i < connectivity.template numberOfRefItemList<ItemType::face>(); ++i) {
same &= same_ref_item_list(connectivity.template refItemList<ItemType::face>(i),
read_connectivity.template refItemList<ItemType::face>(i));
}
REQUIRE(connectivity.template numberOfRefItemList<ItemType::edge>() ==
read_connectivity.template numberOfRefItemList<ItemType::edge>());
for (size_t i = 0; i < connectivity.template numberOfRefItemList<ItemType::edge>(); ++i) {
same &= same_ref_item_list(connectivity.template refItemList<ItemType::edge>(i),
read_connectivity.template refItemList<ItemType::edge>(i));
}
REQUIRE(connectivity.template numberOfRefItemList<ItemType::node>() ==
read_connectivity.template numberOfRefItemList<ItemType::node>());
for (size_t i = 0; i < connectivity.template numberOfRefItemList<ItemType::node>(); ++i) {
same &= same_ref_item_list(connectivity.template refItemList<ItemType::node>(i),
read_connectivity.template refItemList<ItemType::node>(i));
}
return same;
};
auto mesh_1d = MeshDataBaseForTests::get().unordered1DMesh()->get<Mesh<1>>(); auto mesh_1d = MeshDataBaseForTests::get().unordered1DMesh()->get<Mesh<1>>();
...@@ -290,7 +117,7 @@ TEST_CASE("checkpointing_Connectivity", "[utils/checkpointing]") ...@@ -290,7 +117,7 @@ TEST_CASE("checkpointing_Connectivity", "[utils/checkpointing]")
const Connectivity<1>& read_connectivity_1d = dynamic_cast<const Connectivity<1>&>(*p_new_connectivity_1d); const Connectivity<1>& read_connectivity_1d = dynamic_cast<const Connectivity<1>&>(*p_new_connectivity_1d);
REQUIRE(is_same(connectivity_1d, read_connectivity_1d)); REQUIRE(test_only::isSameConnectivity(connectivity_1d, read_connectivity_1d));
auto mesh_2d = MeshDataBaseForTests::get().hybrid2DMesh()->get<Mesh<2>>(); auto mesh_2d = MeshDataBaseForTests::get().hybrid2DMesh()->get<Mesh<2>>();
...@@ -301,7 +128,7 @@ TEST_CASE("checkpointing_Connectivity", "[utils/checkpointing]") ...@@ -301,7 +128,7 @@ TEST_CASE("checkpointing_Connectivity", "[utils/checkpointing]")
const Connectivity<2>& read_connectivity_2d = dynamic_cast<const Connectivity<2>&>(*p_new_connectivity_2d); const Connectivity<2>& read_connectivity_2d = dynamic_cast<const Connectivity<2>&>(*p_new_connectivity_2d);
REQUIRE(is_same(connectivity_2d, read_connectivity_2d)); REQUIRE(test_only::isSameConnectivity(connectivity_2d, read_connectivity_2d));
auto mesh_3d = MeshDataBaseForTests::get().hybrid3DMesh()->get<Mesh<3>>(); auto mesh_3d = MeshDataBaseForTests::get().hybrid3DMesh()->get<Mesh<3>>();
...@@ -312,7 +139,7 @@ TEST_CASE("checkpointing_Connectivity", "[utils/checkpointing]") ...@@ -312,7 +139,7 @@ TEST_CASE("checkpointing_Connectivity", "[utils/checkpointing]")
const Connectivity<3>& read_connectivity_3d = dynamic_cast<const Connectivity<3>&>(*p_new_connectivity_3d); const Connectivity<3>& read_connectivity_3d = dynamic_cast<const Connectivity<3>&>(*p_new_connectivity_3d);
REQUIRE(is_same(connectivity_3d, read_connectivity_3d)); REQUIRE(test_only::isSameConnectivity(connectivity_3d, read_connectivity_3d));
} }
checkpointing::ResumingData::destroy(); checkpointing::ResumingData::destroy();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment