// ============================================================================ // == == // == AMDiS - Adaptive multidimensional simulations == // == == // ============================================================================ // == == // == crystal growth group == // == == // == Stiftung caesar == // == Ludwig-Erhard-Allee 2 == // == 53175 Bonn == // == germany == // == == // ============================================================================ // == == // == http://www.caesar.de/cg/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); ~TraverseParallelStack(); ElInfo* traverseFirst(Mesh *mesh, int level, Flag fill_flag); inline ElInfo* traverseNext(ElInfo* elinfo_old) { return stacks_[omp_get_thread_num()]->traverseNext(elinfo_old); } private: /** \brief * Number of threads using the stack in parallel. */ int nThreads_; std::vector stacks_; }; } #endif // _OPENMP #endif // AMDIS_TRAVERSEPARALLEL_H