diff --git a/AMDiS/src/ProblemVec.cc b/AMDiS/src/ProblemVec.cc index 5622188204eca5581cce562ae7ee569e1eee103b..7c1ed6cc8729fd9db73863315f124e290dadcb8e 100644 --- a/AMDiS/src/ProblemVec.cc +++ b/AMDiS/src/ProblemVec.cc @@ -620,6 +620,7 @@ namespace AMDiS { { FUNCNAME("ProblemVec::buildAfterCoarsen()"); + // printOpenmpTraverseInfo(this, true); // buildAfterCoarsen_sebastianMode(adaptInfo, flag); clock_t first = clock(); @@ -1183,7 +1184,7 @@ namespace AMDiS { const BasisFunction *basisFcts = feSpace->getBasisFcts(); #ifdef _OPENMP - TraverseParallelStack stack; + TraverseParallelStack stack(0, 1); #else TraverseStack stack; #endif diff --git a/AMDiS/src/TraverseParallel.h b/AMDiS/src/TraverseParallel.h index 9784478979b251affe84b478f8f1ebbdb7aaca38..c155dfc1d7aa4714cddb594872de607f811b3361 100644 --- a/AMDiS/src/TraverseParallel.h +++ b/AMDiS/src/TraverseParallel.h @@ -47,8 +47,13 @@ namespace AMDiS { if (parallelMode == 0) { return stacks[omp_get_thread_num()]->traverseNext(elInfoOld); } else { - - } + ElInfo *elInfo = stacks[omp_get_thread_num()]->traverseNext(elInfoOld); + while (elInfo && + elInfo->getElement()->getIndex() % nThreads != omp_get_thread_num()) { + elInfo = stacks[omp_get_thread_num()]->traverseNext(elInfo); + } + return elInfo; + } } private: