3 #ifndef DUNE_ALUGRIDOBJECTFACTORY_HH
4 #define DUNE_ALUGRIDOBJECTFACTORY_HH
8 #if defined USE_PTHREADS || defined _OPENMP
9 #define USE_SMP_PARALLEL
17 #include <dune/fem/misc/threads/threadmanager.hh>
22 template <
class InterfaceType>
23 struct MakeableInterfaceObject ;
25 template <
class Gr
idImp>
28 template <
class OF,
int codim>
29 class ALUGridEntityFactory;
36 template <
class Gr
idObjectFactory>
37 class ALUGridEntityFactory<GridObjectFactory,0>
46 getNewEntity (
const GridObjectFactory& factory,
int level)
48 return factory.entityProvider_.getEntityObject( factory, level, (EntityImp *) 0);
53 factory.entityProvider_.freeObject( e );
57 template <
class Gr
idObjectFactory>
58 class ALUGridEntityFactory<GridObjectFactory,1>
67 getNewEntity (
const GridObjectFactory& factory,
int level)
69 return factory.faceProvider_.getEntityObject( factory, level, (EntityImp *) 0);
74 factory.faceProvider_.freeObject( e );
78 template <
class Gr
idObjectFactory>
79 class ALUGridEntityFactory<GridObjectFactory,2>
88 getNewEntity (
const GridObjectFactory& factory,
int level)
90 return factory.edgeProvider_.getEntityObject( factory, level, (EntityImp *) 0);
95 factory.edgeProvider_.freeObject( e );
99 template <
class Gr
idObjectFactory>
100 class ALUGridEntityFactory<GridObjectFactory,3>
109 getNewEntity (
const GridObjectFactory& factory,
int level)
111 return factory.vertexProvider_.getEntityObject( factory, level, (EntityImp *) 0);
116 factory.vertexProvider_.freeObject( e );
120 enum { vxCodim = GridImp :: dimension };
158 #ifdef USE_SMP_PARALLEL
199 return omp_get_thread_num();
210 return omp_get_max_threads();