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