1 #ifndef DUNE_ALUGRIDOBJECTFACTORY_HH
2 #define DUNE_ALUGRIDOBJECTFACTORY_HH
6 #if defined USE_PTHREADS || defined _OPENMP
7 #define USE_SMP_PARALLEL
15 #include <dune/fem/misc/threadmanager.hh>
20 template <
class InterfaceType>
21 struct MakeableInterfaceObject ;
23 template <
class Gr
idImp>
26 template <
class OF,
int codim>
27 struct ALUGridEntityFactory;
34 template <
class Gr
idObjectFactory>
35 struct ALUGridEntityFactory<GridObjectFactory,0>
43 getNewEntity (
const GridObjectFactory& factory,
int level)
45 return factory.entityProvider_.getEntityObject( factory, level, (EntityImp *) 0);
50 factory.entityProvider_.freeObject( e );
54 template <
class Gr
idObjectFactory>
55 struct ALUGridEntityFactory<GridObjectFactory,1>
63 getNewEntity (
const GridObjectFactory& factory,
int level)
65 return factory.faceProvider_.getEntityObject( factory, level, (EntityImp *) 0);
70 factory.faceProvider_.freeObject( e );
74 template <
class Gr
idObjectFactory>
75 struct ALUGridEntityFactory<GridObjectFactory,2>
83 getNewEntity (
const GridObjectFactory& factory,
int level)
85 return factory.edgeProvider_.getEntityObject( factory, level, (EntityImp *) 0);
90 factory.edgeProvider_.freeObject( e );
94 template <
class Gr
idObjectFactory>
95 struct ALUGridEntityFactory<GridObjectFactory,3>
103 getNewEntity (
const GridObjectFactory& factory,
int level)
105 return factory.vertexProvider_.getEntityObject( factory, level, (EntityImp *) 0);
110 factory.vertexProvider_.freeObject( e );
114 enum { vxCodim = GridImp :: dimension };
152 #ifdef USE_SMP_PARALLEL
193 return omp_get_thread_num();
204 return omp_get_max_threads();