From 1b9dfdd93e8697d1502e81a089f2c2b60ba1094f Mon Sep 17 00:00:00 2001 From: Norihiro Watanabe <norihiro.watanabe@ufz.de> Date: Thu, 4 Sep 2014 16:33:54 +0200 Subject: [PATCH] use Node::getElements() --- MeshLib/MeshSearcher.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/MeshLib/MeshSearcher.cpp b/MeshLib/MeshSearcher.cpp index 23923d626ab..ce848e49e32 100644 --- a/MeshLib/MeshSearcher.cpp +++ b/MeshLib/MeshSearcher.cpp @@ -13,20 +13,24 @@ #include "Node.h" #include "Elements/Element.h" +#include <algorithm> + namespace MeshLib { std::vector<std::size_t> getConnectedElements(MeshLib::Mesh const& msh, const std::vector<std::size_t> &nodes) { std::vector<std::size_t> connected_elements; - for (auto* e : msh.getElements()) { - for (std::size_t j=0; j<e->getNNodes(); j++) { - if (std::find(nodes.begin(), nodes.end(), e->getNodeIndex(j))!=nodes.end()) { + std::for_each(nodes.begin(), nodes.end(), + [&](std::size_t node_id) + { + for (auto* e : msh.getNode(node_id)->getElements()) { connected_elements.push_back(e->getID()); - break; } - } - } + }); + std::sort(connected_elements.begin(), connected_elements.end()); + auto it = std::unique(connected_elements.begin(), connected_elements.end()); + connected_elements.resize(std::distance(connected_elements.begin(),it)); return connected_elements; } -- GitLab