From 5b1878889b2e9d35b7ce396346c8c12c9664d782 Mon Sep 17 00:00:00 2001 From: Karsten Rink <karsten.rink@ufz.de> Date: Thu, 13 Mar 2014 16:31:39 +0100 Subject: [PATCH] returning active nodes and elements vector --- MeshLib/ElementStatus.cpp | 23 +++++++++++++++++++++++ MeshLib/ElementStatus.h | 4 ++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/MeshLib/ElementStatus.cpp b/MeshLib/ElementStatus.cpp index 7e103977860..57d24365813 100644 --- a/MeshLib/ElementStatus.cpp +++ b/MeshLib/ElementStatus.cpp @@ -28,6 +28,29 @@ ElementStatus::ElementStatus(Mesh const*const mesh) _active_nodes.push_back((*node)->getNElements()); } + +std::vector<unsigned> ElementStatus::getActiveElements() const +{ + std::vector<unsigned> active_elements; + active_elements.reserve(this->getNActiveElements()); + const std::size_t nElems (_mesh->getNElements()); + for (std::size_t i=0; i<nElems; ++i) + if (_element_status[i]) + active_elements.push_back(i); + return active_elements; +} + +std::vector<unsigned> ElementStatus::getActiveNodes() const +{ + std::vector<unsigned> active_nodes; + active_nodes.reserve(this->getNActiveNodes()); + const std::size_t nNodes (_mesh->getNNodes()); + for (std::size_t i=0; i<nNodes; ++i) + if (_active_nodes[i]>0) + active_nodes.push_back(i); + return active_nodes; +} + unsigned ElementStatus::getNActiveNodes() const { return _active_nodes.size() - std::count(_active_nodes.begin(), _active_nodes.end(), 0); diff --git a/MeshLib/ElementStatus.h b/MeshLib/ElementStatus.h index ecfb694331f..5086ace1865 100644 --- a/MeshLib/ElementStatus.h +++ b/MeshLib/ElementStatus.h @@ -32,10 +32,10 @@ public: ElementStatus(MeshLib::Mesh const*const mesh); /// Returns a vector of active element IDs - std::vector<unsigned> getActiveElements() const {}; + std::vector<unsigned> getActiveElements() const; /// Returns a vector of active node IDs - std::vector<unsigned> getActiveNodes() const {}; + std::vector<unsigned> getActiveNodes() const; /// Returns the status of element i bool getElementStatus(unsigned i) const { return _element_status[i]; } -- GitLab