3 #ifndef DUNE_GEOGRID_ENTITYPOINTER_HH
4 #define DUNE_GEOGRID_ENTITYPOINTER_HH
21 template<
int,
int,
class >
24 template<
class,
class >
33 template<
int codim,
class Gr
id >
36 template<
class Traits,
bool fake = Traits::fake >
44 template<
int codim,
class Gr
id >
48 template<
int codim,
class Gr
id >
54 template<
int codim,
class HostGr
id,
class CoordFunction,
class Allocator >
62 typedef typename HostGrid::ctype
ctype;
64 static const int dimension = HostGrid::dimension;
65 static const int codimension = codim;
70 typedef typename HostGrid::template Codim< codim >::Entity
HostEntity;
74 typedef typename HostGrid::template Codim< 0 >::Entity
HostElement;
83 template<
class Traits >
88 typedef typename Traits::Grid Grid;
94 static const int dimension = Traits::dimension;
95 static const int codimension = Traits::codimension;
97 typedef typename Traits::Entity
Entity;
99 static const bool fake = Traits::fake;
116 hostEntityIterator_( hostEntityIterator )
121 hostEntityIterator_( hostEntityIterator )
126 hostEntityIterator_( hostElement.template subEntity< codimension >( subEntity ) )
131 hostEntityIterator_( grid.hostGrid().entityPointer( grid.getRealImplementation(seed).hostEntitySeed() ) )
136 hostEntityIterator_( entity.hostEntity() )
140 : entity_( other.entityImpl() ),
141 hostEntityIterator_( other.hostEntityIterator_ )
146 : entity_( other.entityImpl() ),
147 hostEntityIterator_( other.hostEntityIterator_ )
160 entityImpl() = other.entityImpl();
161 hostEntityIterator_ = other.hostEntityIterator_;
168 return (hostIterator() == other.hostIterator());
174 entityImpl().initialize( *hostIterator() );
178 int level ()
const {
return hostIterator().level(); }
182 const Grid &
grid ()
const {
return entityImpl().grid(); }
187 return Grid::getRealImplementation( entity_ );
202 template<
class Traits >
207 typedef typename Traits::Grid Grid;
213 static const int dimension = Traits::dimension;
214 static const int codimension = Traits::codimension;
218 static const bool fake = Traits::fake;
235 hostElementIterator_( hostElementIterator )
240 hostElementIterator_( hostElementIterator )
245 hostElementIterator_( hostElement )
249 : entity_(
EntityImpl( grid, grid.getRealImplementation(seed).subEntity() ) ),
250 hostElementIterator_( grid.hostGrid().entityPointer( grid.getRealImplementation(seed).hostElementSeed() ) )
255 hostElementIterator_( entity.hostElement() )
259 : entity_( other.entityImpl() ),
260 hostElementIterator_( other.hostElementIterator_ )
265 : entity_( other.entityImpl() ),
266 hostElementIterator_( other.hostElementIterator_ )
279 entityImpl() = other.entityImpl();
280 hostElementIterator_ = other.hostElementIterator_;
287 const bool thisEnd = (subEntity() < 0);
288 const bool otherEnd = (other.subEntity() < 0);
289 if( thisEnd || otherEnd )
290 return thisEnd && otherEnd;
292 const int lvl = level();
293 if( lvl != other.level() )
296 const typename Traits::HostGrid::Traits::LevelIndexSet &indexSet
297 = grid().hostGrid().levelIndexSet( lvl );
299 const HostElement &thisElement = *hostElementIterator();
300 assert( indexSet.contains( thisElement ) );
301 const HostElement &otherElement = *(other.hostElementIterator());
302 assert( indexSet.contains( otherElement ) );
304 const int thisIndex = indexSet.subIndex( thisElement, subEntity(), codimension );
305 const int otherIndex = indexSet.subIndex( otherElement, other.subEntity(), codimension );
306 return (thisIndex == otherIndex);
312 entityImpl().initialize( *hostElementIterator() );
316 int level ()
const {
return hostElementIterator().level(); }
318 const Grid &
grid ()
const {
return entityImpl().grid(); }
319 int subEntity ()
const {
return entityImpl().subEntity(); }
324 return Grid::getRealImplementation( entity_ );
329 return hostElementIterator_;
343 #endif // #ifndef DUNE_GEOGRID_ENTITYPOINTER_HH
Base::GeometryImpl GeometryImpl
Definition: geometrygrid/entity.hh:620
CF CoordFunction
Definition: geometrygrid/gridfamily.hh:42
Traits::EntitySeed EntitySeed
Definition: geometrygrid/entitypointer.hh:108
EntityPointer(const Grid &grid, const EntitySeed &seed)
Definition: geometrygrid/entitypointer.hh:129
HostEntityIterator hostEntityIterator_
Definition: geometrygrid/entitypointer.hh:194
GeoGrid::Entity< codimension, dimension, const Grid > EntityImpl
Definition: geometrygrid/entitypointer.hh:110
Wrapper class for entities.
Definition: common/entity.hh:56
EntityPointer(const This &other)
Definition: geometrygrid/entitypointer.hh:139
EntityPointer(const GeometryImpl &geo, const HostEntityIterator &hostEntityIterator)
Definition: geometrygrid/entitypointer.hh:114
EntityPointer< BaseTraits, fake > EntityPointerImp
Definition: geometrygrid/entitypointer.hh:101
EntityPointer(const This &other)
Definition: geometrygrid/entitypointer.hh:258
HostGrid::template Codim< 0 >::EntityPointer HostElementIterator
Definition: geometrygrid/entitypointer.hh:75
Definition: geometrygrid/entitypointer.hh:84
EntityPointer(const EntityImpl &entity)
Definition: geometrygrid/entitypointer.hh:253
HostGrid::template Codim< codim >::EntityPointer HostEntityPointer
Definition: geometrygrid/entitypointer.hh:71
Dune::GeometryGrid< HostGrid, CoordFunction, Allocator > Grid
Definition: geometrygrid/entitypointer.hh:58
HostGrid::template Codim< codim >::Entity HostEntity
Definition: geometrygrid/entitypointer.hh:70
DUNE-conform implementation of the entityThis class merely changes the template parameters of the ent...
Definition: geometrygrid/entity.hh:49
EntityImpl::GeometryImpl GeometryImpl
Definition: geometrygrid/entitypointer.hh:111
Traits::HostElement HostElement
Definition: geometrygrid/entitypointer.hh:225
HostGrid::template Codim< 0 >::Entity HostElement
Definition: geometrygrid/entitypointer.hh:74
EntityPointer(const Grid &grid, const EntitySeed &seed)
Definition: geometrygrid/entitypointer.hh:248
Dune::EntitySeed< const Grid, GeoGrid::EntitySeed< codimension, const Grid > > EntitySeed
Definition: geometrygrid/entitypointer.hh:68
EntityPointer(const GeometryImpl &geo, const HostElementIterator &hostElementIterator, int subEntity)
Definition: geometrygrid/entitypointer.hh:233
Definition: geometrygrid/entitypointer.hh:37
Entity & dereference() const
Definition: geometrygrid/entitypointer.hh:171
EntityPointer(const Grid &grid, const HostElement &hostElement, int subEntity)
Definition: geometrygrid/entitypointer.hh:124
EntityPointer(const Grid &grid, const HostEntityIterator &hostEntityIterator)
Definition: geometrygrid/entitypointer.hh:119
EntityImpl & entityImpl() const
Definition: geometrygrid/entitypointer.hh:322
Traits::EntitySeed EntitySeed
Definition: geometrygrid/entitypointer.hh:227
HG HostGrid
Definition: geometrygrid/gridfamily.hh:41
Traits::Entity Entity
Definition: geometrygrid/entitypointer.hh:97
Traits::HostEntityIterator HostEntityIterator
Definition: geometrygrid/entitypointer.hh:105
Traits::HostEntityPointer HostEntityPointer
Definition: geometrygrid/entitypointer.hh:223
Grid abstract base classThis class is the base class for all grid implementations. Although no virtual functions are used we call it abstract since its methods do not contain an implementation but forward to the methods of the derived class via the Barton-Nackman trick.
Definition: common/grid.hh:386
int level() const
Definition: geometrygrid/entitypointer.hh:316
EntityPointer< BaseTraits, fake > EntityPointerImp
Definition: geometrygrid/entitypointer.hh:220
EntityPointer(const EntityImpl &entity)
Definition: geometrygrid/entitypointer.hh:134
Definition: geometrygrid/entitypointer.hh:34
Entity & dereference() const
Definition: geometrygrid/entitypointer.hh:309
HostElementIterator hostElementIterator_
Definition: geometrygrid/entitypointer.hh:336
EntityImpl & entityImpl() const
Definition: geometrygrid/entitypointer.hh:185
bool equals(const EntityPointer< T, fake > &other) const
Definition: geometrygrid/entitypointer.hh:285
bool equals(const EntityPointer< T, fake > &other) const
Definition: geometrygrid/entitypointer.hh:166
Store a reference to an entity with a minimal memory footprint.
Definition: common/entityseed.hh:23
EntityPointer(const EntityPointer< T, fake > &other)
Definition: geometrygrid/entitypointer.hh:145
EntityPointer(const EntityPointer< T, fake > &other)
Definition: geometrygrid/entitypointer.hh:264
int level() const
Definition: geometrygrid/entitypointer.hh:178
const HostEntityIterator & hostIterator() const
Definition: geometrygrid/entitypointer.hh:180
HostGrid::ctype ctype
Definition: geometrygrid/entitypointer.hh:62
GeoGrid::Entity< codimension, dimension, const Grid > EntityImpl
Definition: geometrygrid/entitypointer.hh:229
Definition: geometrygrid/capabilities.hh:91
Different resources needed by all grid implementations.
Definition: geometrygrid/entitypointer.hh:25
EntityPointer(const Grid &grid, const HostElement &hostElement, int subEntity)
Definition: geometrygrid/entitypointer.hh:243
HostEntityPointer HostEntityIterator
Definition: geometrygrid/entitypointer.hh:72
Traits::HostElement HostElement
Definition: geometrygrid/entitypointer.hh:106
const Grid & grid() const
Definition: geometrygrid/entitypointer.hh:318
Definition: geometrygrid/entitypointer.hh:203
EntityPointer(const Grid &grid, const HostElementIterator &hostElementIterator, int subEntity)
Definition: geometrygrid/entitypointer.hh:238
int subEntity() const
Definition: geometrygrid/entitypointer.hh:319
EntityImpl::GeometryImpl GeometryImpl
Definition: geometrygrid/entitypointer.hh:230
grid wrapper replacing the geometriesGeometryGrid wraps another DUNE grid and replaces its geometry b...
Definition: geometrygrid/declaration.hh:10
Dune::Entity< codimension, dimension, const Grid, GeoGrid::Entity > Entity
Definition: geometrygrid/entitypointer.hh:67
Traits::HostEntityPointer HostEntityPointer
Definition: geometrygrid/entitypointer.hh:104
const HostElementIterator & hostElementIterator() const
Definition: geometrygrid/entitypointer.hh:327
Traits::Entity Entity
Definition: geometrygrid/entitypointer.hh:216
Traits::HostElementIterator HostElementIterator
Definition: geometrygrid/entitypointer.hh:224
const Grid & grid() const
Definition: geometrygrid/entitypointer.hh:182