static void addOneLayer(const std::vector<MElement*> &v, std::vector<MElement*> &d, std::vector<MElement*> &layer) { std::set<MVertex*> all; for (unsigned int i = 0; i < d.size(); i++){ MElement *e = d[i]; int n = e->getNumPrimaryVertices(); for (int j = 0; j < n; j++){ all.insert(e->getVertex(j)); } } layer.clear(); std::sort(d.begin(), d.end()); for (unsigned int i = 0; i < v.size(); i++){ MElement *e = v[i]; bool found = std::binary_search(d.begin(), d.end(), e); // element is not yet there if (!found){ int n = e->getNumPrimaryVertices(); for (int j = 0; j < n; j++){ MVertex *vert = e->getVertex(j); if (all.find(vert) != all.end()){ layer.push_back(e); j = n; } } } } }
static void calcVertex2Elements(int dim, GEntity *entity, vertElVecMap &vertex2elements) { for (size_t i = 0; i < entity->getNumMeshElements(); ++i) { MElement *element = entity->getMeshElement(i); if (element->getDim() == dim) for (int j = 0; j < element->getNumPrimaryVertices(); ++j) vertex2elements[element->getVertex(j)].push_back(element); } }