diff --git a/MeshLib/ElementStatus.cpp b/MeshLib/ElementStatus.cpp index 683cea2fe2c6ed1bc0b075ab35399b57d24ea25c..25dde6b1d165df5af204d5587414aa8f0419ff95 100644 --- a/MeshLib/ElementStatus.cpp +++ b/MeshLib/ElementStatus.cpp @@ -29,9 +29,9 @@ ElementStatus::ElementStatus(Mesh const*const mesh) } -std::vector<unsigned> ElementStatus::getActiveElements() const +std::vector<std::size_t> ElementStatus::getActiveElements() const { - std::vector<unsigned> active_elements; + std::vector<std::size_t> active_elements; active_elements.reserve(this->getNActiveElements()); const std::size_t nElems (_mesh->getNElements()); for (std::size_t i=0; i<nElems; ++i) @@ -40,9 +40,9 @@ std::vector<unsigned> ElementStatus::getActiveElements() const return active_elements; } -std::vector<unsigned> ElementStatus::getActiveNodes() const +std::vector<std::size_t> ElementStatus::getActiveNodes() const { - std::vector<unsigned> active_nodes; + std::vector<std::size_t> active_nodes; active_nodes.reserve(this->getNActiveNodes()); const std::size_t nNodes (_mesh->getNNodes()); for (std::size_t i=0; i<nNodes; ++i) @@ -51,11 +51,11 @@ std::vector<unsigned> ElementStatus::getActiveNodes() const return active_nodes; } -std::vector<unsigned> ElementStatus::getActiveElementsAtNode(unsigned node_id) const +std::vector<std::size_t> ElementStatus::getActiveElementsAtNode(unsigned node_id) const { const unsigned nActiveElements (_active_nodes[node_id]); const std::vector<Element*> &elements (_mesh->getNode(node_id)->getElements()); - std::vector<unsigned> active_elements; + std::vector<std::size_t> active_elements; active_elements.reserve(nActiveElements); for (auto elem = elements.begin(); elem != elements.end(); ++elem) { @@ -68,12 +68,12 @@ std::vector<unsigned> ElementStatus::getActiveElementsAtNode(unsigned node_id) c return active_elements; } -unsigned ElementStatus::getNActiveNodes() const +std::size_t ElementStatus::getNActiveNodes() const { return _active_nodes.size() - std::count(_active_nodes.begin(), _active_nodes.end(), 0); } -unsigned ElementStatus::getNActiveElements() const +std::size_t ElementStatus::getNActiveElements() const { return static_cast<unsigned>(std::count(_element_status.begin(), _element_status.end(), true)); } @@ -93,7 +93,7 @@ void ElementStatus::setAll(bool status) std::fill(_active_nodes.begin(), _active_nodes.end(), 0); } -void ElementStatus::setElementStatus(unsigned i, bool status) +void ElementStatus::setElementStatus(std::size_t i, bool status) { if (_element_status[i] != status) { diff --git a/MeshLib/ElementStatus.h b/MeshLib/ElementStatus.h index 90b61e47cf299d2b9fdf02912cbb04a2b5da6dd6..367bcda8f549ce5595fe7324ac4ebcd620f2fba1 100644 --- a/MeshLib/ElementStatus.h +++ b/MeshLib/ElementStatus.h @@ -29,34 +29,31 @@ class ElementStatus public: /// Constructor - ElementStatus(MeshLib::Mesh const*const mesh); + explicit ElementStatus(MeshLib::Mesh const*const mesh); /// Returns a vector of active element IDs - std::vector<unsigned> getActiveElements() const; + std::vector<std::size_t> getActiveElements() const; /// Returns a vector of active node IDs - std::vector<unsigned> getActiveNodes() const; + std::vector<std::size_t> getActiveNodes() const; /// Returns the status of element i - bool getElementStatus(unsigned i) const { return _element_status[i]; } + bool getElementStatus(std::size_t i) const { return _element_status[i]; } /// Returns a vector of active elements connected to a node - std::vector<unsigned> getActiveElementsAtNode(unsigned node_id) const; + std::vector<std::size_t> getActiveElementsAtNode(unsigned node_id) const; /// Returns the total number of active nodes - unsigned getNActiveNodes() const; + std::size_t getNActiveNodes() const; /// Returns the total number of active elements - unsigned getNActiveElements() const; - - /// Returns the status of element - bool isActive(unsigned i) const { return _element_status[i]; } + std::size_t getNActiveElements() const; /// Activates/Deactives all mesh elements void setAll(bool status); /// Sets the status of element i - void setElementStatus(unsigned i, bool status); + void setElementStatus(std::size_t i, bool status); /// Sets the status of material group i void setMaterialStatus(unsigned material_id, bool status); diff --git a/MeshLib/Elements/Element.h b/MeshLib/Elements/Element.h index bb235a409304ecccfd380e81b2c48c79791ae188..c9ad7ae71bf1a8b59ffa9d7d68aff22a6e99036d 100644 --- a/MeshLib/Elements/Element.h +++ b/MeshLib/Elements/Element.h @@ -78,7 +78,7 @@ public: virtual const Element* getFace(unsigned i) const = 0; /// Returns the ID of the element. - virtual unsigned getID() const { return this->_id; } + virtual std::size_t getID() const { return this->_id; } /// Get the number of edges for this element. virtual unsigned getNEdges() const = 0; diff --git a/Tests/MeshLib/TestElementStatus.cpp b/Tests/MeshLib/TestElementStatus.cpp index 449a6c033c3ae22135b9adb64d214fe56cda29cf..f194fc12115156f8081f0b788c139ba9d9e4e255 100644 --- a/Tests/MeshLib/TestElementStatus.cpp +++ b/Tests/MeshLib/TestElementStatus.cpp @@ -52,16 +52,16 @@ const unsigned width (100); ASSERT_EQ (status.getNActiveElements(), elements.size()-(2*elements_per_side)); // active elements - std::vector<unsigned> active_elements (status.getActiveElements()); + std::vector<std::size_t> active_elements (status.getActiveElements()); ASSERT_EQ (active_elements.size(), status.getNActiveElements()); // active nodes - std::vector<unsigned> active_nodes (status.getActiveNodes()); + std::vector<std::size_t> active_nodes (status.getActiveNodes()); ASSERT_EQ (active_nodes.size(), status.getNActiveNodes()); // set element 1 to false (yet again) status.setElementStatus(1, false); - status.isActive(1); + status.getElementStatus(1); ASSERT_EQ (status.getNActiveElements(), elements.size()-(2*elements_per_side)); ASSERT_EQ (status.getNActiveNodes(), mesh->getNNodes()-(2*(elements_per_side+1))); @@ -69,12 +69,14 @@ const unsigned width (100); status.setElementStatus(1, true); ASSERT_EQ (status.getNActiveElements(), elements.size()-(2*elements_per_side)+1); ASSERT_EQ (status.getNActiveNodes(), mesh->getNNodes()-(2*(elements_per_side+1))+4); - ASSERT_EQ(status.isActive(1), true); + ASSERT_EQ(status.getElementStatus(1), true); - std::vector<unsigned> active_elements_at_node (status.getActiveElementsAtNode(2)); + std::vector<std::size_t> active_elements_at_node (status.getActiveElementsAtNode(2)); ASSERT_EQ(active_elements_at_node.size(), 1); active_elements_at_node = status.getActiveElementsAtNode(22); ASSERT_EQ(active_elements_at_node.size(), 1); + active_elements_at_node = status.getActiveElementsAtNode(44); + ASSERT_EQ(active_elements_at_node.size(), 2); active_elements_at_node = status.getActiveElementsAtNode(102); ASSERT_EQ(active_elements_at_node.size(), 4);