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

Fix copy from WeakSubItemValuePerItem

parent d6fc7ca7
No related branches found
No related tags found
1 merge request!84Add SubArray class
......@@ -41,6 +41,12 @@ class SubItemValuePerItem
// Allow const std:weak_ptr version to access our data
friend SubItemValuePerItem<std::add_const_t<DataType>, ItemOfItem, ConnectivityWeakPtr>;
// Allow const std:shared_ptr version to access our data
friend SubItemValuePerItem<std::remove_const_t<DataType>, ItemOfItem, ConnectivitySharedPtr>;
// Allow const std:weak_ptr version to access our data
friend SubItemValuePerItem<std::remove_const_t<DataType>, ItemOfItem, ConnectivityWeakPtr>;
public:
using ToShared = SubItemValuePerItem<DataType, ItemOfItem, ConnectivitySharedPtr>;
......@@ -96,8 +102,10 @@ class SubItemValuePerItem
friend PUGS_INLINE SubItemValuePerItem<std::remove_const_t<DataType>, ItemOfItem, ConnectivityPtr>
copy(SubItemValuePerItem<DataType, ItemOfItem, ConnectivityPtr>& source)
{
SubItemValuePerItem<std::remove_const_t<DataType>, ItemOfItem, ConnectivityPtr> image(*source.m_connectivity_ptr);
SubItemValuePerItem<std::remove_const_t<DataType>, ItemOfItem, ConnectivityPtr> image;
image.m_connectivity_ptr = source.m_connectivity_ptr;
image.m_host_row_map = source.m_host_row_map;
image.m_values = copy(source.m_values);
return image;
}
......
......@@ -611,6 +611,8 @@ TEST_CASE("SubItemValuePerItem", "[mesh]")
const Mesh<Connectivity<3>>& mesh_3d = MeshDataBaseForTests::get().cartesianMesh<3>();
const Connectivity<3>& connectivity = mesh_3d.connectivity();
SECTION("classic")
{
NodeValuePerCell<size_t> node_value_per_cell{connectivity};
{
......@@ -651,6 +653,49 @@ TEST_CASE("SubItemValuePerItem", "[mesh]")
}
}
SECTION("from weak")
{
WeakNodeValuePerCell<size_t> node_value_per_cell{connectivity};
{
size_t value = 0;
for (CellId cell_id = 0; cell_id < connectivity.numberOfCells(); ++cell_id) {
for (size_t i_node = 0; i_node < node_value_per_cell.numberOfSubValues(cell_id); ++i_node) {
node_value_per_cell.itemValues(cell_id)[i_node] = value++;
}
}
}
NodeValuePerCell<size_t> copy_node_value_per_cell = copy(node_value_per_cell);
{
bool is_same = true;
for (size_t i = 0; i < copy_node_value_per_cell.numberOfValues(); ++i) {
is_same &= (copy_node_value_per_cell[i] == node_value_per_cell[i]);
}
REQUIRE(is_same);
}
{
for (CellId cell_id = 0; cell_id < connectivity.numberOfCells(); ++cell_id) {
for (size_t i_node = 0; i_node < node_value_per_cell.numberOfSubValues(cell_id); ++i_node) {
node_value_per_cell.itemValues(cell_id)[i_node] = i_node;
}
}
}
{
bool is_same = true;
for (size_t i = 0; i < copy_node_value_per_cell.numberOfValues(); ++i) {
is_same &= (copy_node_value_per_cell[i] == node_value_per_cell[i]);
}
REQUIRE(not is_same);
}
}
}
SECTION("WeakSubItemValuePerItem")
{
const Mesh<Connectivity<2>>& mesh_2d = MeshDataBaseForTests::get().cartesianMesh<2>();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment