// ============================================================================ // == == // == AMDiS - Adaptive multidimensional simulations == // == == // ============================================================================ // == == // == TU Dresden == // == == // == Institut für Wissenschaftliches Rechnen == // == Zellescher Weg 12-14 == // == 01069 Dresden == // == germany == // == == // ============================================================================ // == == // == https://gforge.zih.tu-dresden.de/projects/amdis/ == // == == // ============================================================================ /** \file TraverseParallel.h */ #ifndef AMDIS_TRAVERSEPARALLEL_H #define AMDIS_TRAVERSEPARALLEL_H #ifdef _OPENMP #include "OpenMP.h" #include "Traverse.h" #include namespace AMDiS { /** \ingroup Traverse * \brief */ class TraverseParallelStack { public: TraverseParallelStack(int nThreads = 0, int mode = 0); ~TraverseParallelStack(); ElInfo* traverseFirst(Mesh *mesh, int level, Flag fill_flag); inline ElInfo* traverseNext(ElInfo* elInfoOld) { if (parallelMode == 0) { return stacks[omp_get_thread_num()]->traverseNext(elInfoOld); } else { } } private: /// Number of threads using the stack in parallel. int nThreads; int parallelMode; std::vector stacks; }; } #endif // _OPENMP #endif // AMDIS_TRAVERSEPARALLEL_H