diff --git a/MeshLib/MeshSearcher.cpp b/MeshLib/MeshSearcher.cpp new file mode 100644 index 0000000000000000000000000000000000000000..23923d626abeccf82f50f553299ce4d74b058087 --- /dev/null +++ b/MeshLib/MeshSearcher.cpp @@ -0,0 +1,34 @@ +/** + * \copyright + * Copyright (c) 2013, OpenGeoSys Community (http://www.opengeosys.org) + * Distributed under a Modified BSD License. + * See accompanying file LICENSE.txt or + * http://www.opengeosys.org/project/license + * + */ + +#include "MeshSearcher.h" + +#include "Mesh.h" +#include "Node.h" +#include "Elements/Element.h" + +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()) { + connected_elements.push_back(e->getID()); + break; + } + } + } + return connected_elements; +} + +} // end namespace MeshLib + diff --git a/MeshLib/MeshSearcher.h b/MeshLib/MeshSearcher.h new file mode 100644 index 0000000000000000000000000000000000000000..cf3c26eeb99249f23d1cd44eeb7e96e45badbf11 --- /dev/null +++ b/MeshLib/MeshSearcher.h @@ -0,0 +1,31 @@ +/** + * \copyright + * Copyright (c) 2013, OpenGeoSys Community (http://www.opengeosys.org) + * Distributed under a Modified BSD License. + * See accompanying file LICENSE.txt or + * http://www.opengeosys.org/project/license + * + */ + +#ifndef MESHSEARCHER_H_ +#define MESHSEARCHER_H_ + +#include <vector> + + +namespace MeshLib +{ +// forward declarations +class Mesh; + +/** + * get a list of elements connected to given nodes + * @param msh a mesh object + * @param node_ids a vector of mesh node ids + * @return a vector of element ids which connect to the given nodes + */ +std::vector<std::size_t> getConnectedElementIDs(MeshLib::Mesh const& msh, const std::vector<std::size_t> &node_ids); + +} // end namespace MeshLib + +#endif //MESHSEARCHER_H_