diff --git a/MeshLib/ElementStatus.cpp b/MeshLib/ElementStatus.cpp index 7e103977860e902950dac101abe5e6092e1ca0b9..57d243658131eac7dd026975c967408447708986 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 ecfb694331f82fcc64c23714124c8e30b9a1c0e1..5086ace18657f7d9c7bd76ae361ad530653f20c9 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]; }