diff --git a/src/mesh/Connectivity.hpp b/src/mesh/Connectivity.hpp index 4411e728da1b376a6414d1b9f03637477e17f0ff..dc2e0e890646b6e2a57a2d0e8d27eb1bbb4e1f4a 100644 --- a/src/mesh/Connectivity.hpp +++ b/src/mesh/Connectivity.hpp @@ -80,9 +80,9 @@ class Connectivity final : public IConnectivity WeakFaceValuePerCell<const bool> m_cell_face_is_reversed; WeakEdgeValuePerFace<const bool> m_face_edge_is_reversed; - WeakNodeValuePerCell<const unsigned short> m_cell_local_numbers_in_their_nodes; WeakFaceValuePerCell<const unsigned short> m_cell_local_numbers_in_their_faces; WeakEdgeValuePerCell<const unsigned short> m_cell_local_numbers_in_their_edges; + WeakNodeValuePerCell<const unsigned short> m_cell_local_numbers_in_their_nodes; WeakCellValuePerFace<const unsigned short> m_face_local_numbers_in_their_cells; WeakEdgeValuePerFace<const unsigned short> m_face_local_numbers_in_their_edges; diff --git a/src/mesh/ConnectivityComputer.cpp b/src/mesh/ConnectivityComputer.cpp index e08a638d750bb70a3e41709a4c70c3539199e048..3c4d1714fb5e7e091acb7c612c21ff025c930edf 100644 --- a/src/mesh/ConnectivityComputer.cpp +++ b/src/mesh/ConnectivityComputer.cpp @@ -45,7 +45,7 @@ ConnectivityMatrix ConnectivityComputer::_computeInverse(const ConnectivityMatrix& item_to_child_matrix) const { std::map<unsigned int, std::vector<unsigned int>> child_to_item_vector_map; - const size_t& number_of_items = item_to_child_matrix.numRows(); + const size_t& number_of_items = item_to_child_matrix.numberOfRows(); for (unsigned int j = 0; j < number_of_items; ++j) { const auto& item_to_child = item_to_child_matrix[j]; diff --git a/src/mesh/ConnectivityMatrix.hpp b/src/mesh/ConnectivityMatrix.hpp index 11df5978bbeb3eced43fa57fed878bdf60327916..e51ba189221faeef80fb7966310d9e5c82527d15 100644 --- a/src/mesh/ConnectivityMatrix.hpp +++ b/src/mesh/ConnectivityMatrix.hpp @@ -6,9 +6,10 @@ class ConnectivityMatrix { - private: + public: using IndexType = uint32_t; + private: Array<const IndexType> m_row_map; Array<const IndexType> m_column_indices; @@ -22,7 +23,7 @@ class ConnectivityMatrix } const Array<const IndexType>& - entries() const + values() const { return m_column_indices; } @@ -35,14 +36,14 @@ class ConnectivityMatrix PUGS_INLINE size_t - numEntries() const + numberOfValues() const { return m_column_indices.size(); } PUGS_INLINE size_t - numRows() const + numberOfRows() const { return m_row_map.size() - 1; } diff --git a/src/mesh/ItemId.hpp b/src/mesh/ItemId.hpp index e62fe7bae6b75f37285257d4211e7ad70d8b6a26..4d7d6714342c62d4c0d3fc35dbb5ae769aafdb8f 100644 --- a/src/mesh/ItemId.hpp +++ b/src/mesh/ItemId.hpp @@ -9,7 +9,7 @@ template <ItemType item_type> class ItemIdT { public: - using base_type = unsigned int; + using base_type = uint32_t; private: base_type m_id; diff --git a/src/mesh/ItemToItemMatrix.hpp b/src/mesh/ItemToItemMatrix.hpp index acee8ecd8e85f081ca0e640e2f408a541ac9157a..8ee4e9d74757e904cc5b5581c9421145b4eeaac3 100644 --- a/src/mesh/ItemToItemMatrix.hpp +++ b/src/mesh/ItemToItemMatrix.hpp @@ -15,12 +15,13 @@ class ItemToItemMatrix using SourceItemId = ItemIdT<SourceItemType>; using TargetItemId = ItemIdT<TargetItemType>; - class SubItemList + class UnsafeSubItemArray { private: - const ConnectivityMatrix& m_connectivity_matrix; - SourceItemId m_source_item_id; - size_t m_size; + using IndexType = typename ConnectivityMatrix::IndexType; + + const IndexType* const m_values; + const size_t m_size; public: PUGS_INLINE @@ -34,31 +35,23 @@ class ItemToItemMatrix operator[](size_t j) const { Assert(j < m_size); - return m_connectivity_matrix.entries()[m_connectivity_matrix.rowsMap()[m_source_item_id] + j]; + return m_values[j]; } PUGS_INLINE - SubItemList(const ConnectivityMatrix& connectivity_matrix, SourceItemId source_item_id) - : m_connectivity_matrix{connectivity_matrix}, - m_source_item_id(source_item_id), - m_size(m_connectivity_matrix.rowsMap()[m_source_item_id + 1] - - m_connectivity_matrix.rowsMap()[m_source_item_id]) + UnsafeSubItemArray(const ConnectivityMatrix& connectivity_matrix, SourceItemId source_item_id) + : m_values{&(connectivity_matrix.values()[connectivity_matrix.rowsMap()[source_item_id]])}, + m_size(connectivity_matrix.rowsMap()[source_item_id + 1] - connectivity_matrix.rowsMap()[source_item_id]) {} PUGS_INLINE - SubItemList& operator=(const SubItemList&) = default; - - PUGS_INLINE - SubItemList& operator=(SubItemList&&) = default; - - PUGS_INLINE - SubItemList(const SubItemList&) = default; + UnsafeSubItemArray& operator=(const UnsafeSubItemArray&) = delete; PUGS_INLINE - SubItemList(SubItemList&&) = default; + UnsafeSubItemArray(const UnsafeSubItemArray&) = delete; PUGS_INLINE - ~SubItemList() = default; + ~UnsafeSubItemArray() = default; }; private: @@ -66,17 +59,17 @@ class ItemToItemMatrix public: auto - entries() const + values() const { - return m_connectivity_matrix.entries(); + return m_connectivity_matrix.values(); } PUGS_INLINE auto operator[](const SourceItemId& source_id) const { - Assert(source_id < m_connectivity_matrix.numRows()); - return SubItemList(m_connectivity_matrix, source_id); + Assert(source_id < m_connectivity_matrix.numberOfRows()); + return UnsafeSubItemArray(m_connectivity_matrix, source_id); } template <typename IndexType> diff --git a/src/mesh/SubItemArrayPerItem.hpp b/src/mesh/SubItemArrayPerItem.hpp index cb88e85d76f758262316b547140e85e000b669ca..96a8edb56a1a2890e76128ab652ab7d0100b9201 100644 --- a/src/mesh/SubItemArrayPerItem.hpp +++ b/src/mesh/SubItemArrayPerItem.hpp @@ -200,7 +200,7 @@ class SubItemArrayPerItem ConnectivityMatrix connectivity_matrix = connectivity._getMatrix(item_type, sub_item_type); m_row_map = connectivity_matrix.rowsMap(); - m_values = Table<std::remove_const_t<DataType>>(connectivity_matrix.numEntries(), size_of_arrays); + m_values = Table<std::remove_const_t<DataType>>(connectivity_matrix.numberOfValues(), size_of_arrays); } ~SubItemArrayPerItem() = default; diff --git a/src/mesh/SubItemValuePerItem.hpp b/src/mesh/SubItemValuePerItem.hpp index 2b6ad94604551cabf495e70e758b7eadf00833c6..8201176563de657a8e5af8245c38c0d5572a7531 100644 --- a/src/mesh/SubItemValuePerItem.hpp +++ b/src/mesh/SubItemValuePerItem.hpp @@ -195,7 +195,7 @@ class SubItemValuePerItem ConnectivityMatrix connectivity_matrix = connectivity._getMatrix(item_type, sub_item_type); m_row_map = connectivity_matrix.rowsMap(); - m_values = Array<std::remove_const_t<DataType>>(connectivity_matrix.numEntries()); + m_values = Array<std::remove_const_t<DataType>>(connectivity_matrix.numberOfValues()); } ~SubItemValuePerItem() = default; diff --git a/src/output/VTKWriter.cpp b/src/output/VTKWriter.cpp index 5e8b84f956d31e76635f51fa78dcd9df7ecef233..98173a1402b588ceb9c9584bf5dbe84c136fc8e3 100644 --- a/src/output/VTKWriter.cpp +++ b/src/output/VTKWriter.cpp @@ -456,7 +456,7 @@ VTKWriter::_write(const std::shared_ptr<const MeshType>& mesh, { const auto& cell_to_node_matrix = mesh->connectivity().cellToNodeMatrix(); - _write_array(fout, "connectivity", cell_to_node_matrix.entries(), serialize_data_list); + _write_array(fout, "connectivity", cell_to_node_matrix.values(), serialize_data_list); } {