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>
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
172 return ALUGridEntityFactory<FactoryType,codim>::getNewEntity( *
this, level);
178 ALUGridEntityFactory<FactoryType,codim>::freeEntity(*
this, en);
199 return omp_get_thread_num();
210 return omp_get_max_threads();
212 return Fem :: ThreadManager :: maxThreads() ;
static int threadNumber()
Definition: objectfactory.hh:196
MakeableInterfaceObject< typename GridType::Traits::template Codim< vxCodim >::Entity > VertexObject
Definition: objectfactory.hh:128
ALUMemoryProvider< EntityObject > EntityProvider
Definition: objectfactory.hh:140
EdgeProvider edgeProvider_
Definition: objectfactory.hh:147
const GridType & grid_
Definition: objectfactory.hh:156
static int thread
Definition: partitiondisplay.cc:44
Wrapper class for entities.
Definition: common/entity.hh:61
VertexProvider vertexProvider_
Definition: objectfactory.hh:148
ALUMemoryProvider< LeafIntersectionIteratorImp > LeafIntersectionIteratorProviderType
Definition: objectfactory.hh:150
Definition: objectfactory.hh:23
const GridType & grid() const
Definition: objectfactory.hh:164
MakeableInterfaceObject< typename GridType::Traits::template Codim< 0 >::Entity > EntityObject
Definition: objectfactory.hh:125
GridType::LevelIntersectionIteratorImp LevelIntersectionIteratorImp
Definition: objectfactory.hh:131
ObjectType * getObject(const FactoryType &factory, int level)
i.e. return pointer to Entity
LevelIntersectionIteratorImp & getIntersection(const int wLevel, const LevelIntersectionIteratorImp *) const
Definition: objectfactory.hh:186
ALUMemoryProvider< LevelIntersectionIteratorImp > LevelIntersectionIteratorProviderType
Definition: objectfactory.hh:151
ALUGridObjectFactory(const ALUGridObjectFactory &other)
Definition: objectfactory.hh:161
InterfaceType::Implementation ImplementationType
Definition: common/grid.hh:1468
ALUGridObjectFactory FactoryType
Definition: objectfactory.hh:123
LeafIntersectionIteratorImp & getIntersection(const int wLevel, const LeafIntersectionIteratorImp *) const
Definition: objectfactory.hh:181
ALUGridObjectFactory(const GridType &grid)
Definition: objectfactory.hh:166
void freeIntersection(LeafIntersectionIteratorImp &it) const
free intersection
Definition: objectfactory.hh:192
LevelIntersectionIteratorProviderType levelInterItProvider_
Definition: objectfactory.hh:154
MakeableInterfaceObject< typename GridType::Traits::template Codim< 2 >::Entity > EdgeObject
Definition: objectfactory.hh:127
void freeObject(ObjectType *obj)
free, move element to stack, returns NULL
Definition: memory.hh:143
ALUMemoryProvider< EdgeObject > EdgeProvider
Definition: objectfactory.hh:142
FaceProvider faceProvider_
Definition: objectfactory.hh:146
static int maxThreads()
Definition: objectfactory.hh:208
ALUMemoryProvider< FaceObject > FaceProvider
Definition: objectfactory.hh:141
void freeEntity(MakeableInterfaceObject< typename GridType::Traits::template Codim< codim >::Entity > *en) const
Definition: objectfactory.hh:176
GridType::LeafIntersectionIteratorImp LeafIntersectionIteratorImp
Definition: objectfactory.hh:130
MakeableInterfaceObject< typename GridType::Traits::template Codim< 1 >::Entity > FaceObject
Definition: objectfactory.hh:126
GridImp GridType
Definition: objectfactory.hh:122
ALUMemoryProvider< VertexObject > VertexProvider
Definition: objectfactory.hh:143
LeafIntersectionIteratorProviderType leafInterItProvider_
Definition: objectfactory.hh:153
MakeableInterfaceObject< typename GridType::Traits::template Codim< codim >::Entity > * getNewEntity(int level=-1) const
Definition: objectfactory.hh:170
Definition: objectfactory.hh:26
EntityProvider entityProvider_
Definition: objectfactory.hh:145
void freeIntersection(LevelIntersectionIteratorImp &it) const
Definition: objectfactory.hh:193