void processCoordinates() { const Index nCoord = m_coord->getNumCoords(); m_vertexMap.resize(nCoord); auto vertexMap = m_vertexMap.data(); #pragma omp parallel for for (ssize_t i=0; i<nCoord; ++i) { const Vector p(x[i], y[i], z[i]); vertexMap[i] = m_decider(i) > 0 ? 1 : 0; } if (haveCornerList) { Index numIn = 0; for (Index i=0; i<nCoord; ++i) { if (vertexMap[i]) { numIn += vertexMap[i]; vertexMap[i] = numIn; } } m_outCoords->setSize(numIn); out_x = m_outCoords->x().data(); out_y = m_outCoords->y().data(); out_z = m_outCoords->z().data(); #pragma omp parallel for schedule(dynamic) for (ssize_t i=0; i<nCoord; ++i) { Index idx = vertexMap[i]; vassert(idx >= 0); if (idx > 0) { --idx; vassert(idx < numIn); out_x[idx] = x[i]; out_y[idx] = y[i]; out_z[idx] = z[i]; } } } }