3 #include <dune/common/exceptions.hh>
10 template<
int cd,
int dim,
class Gr
idImp>
20 template<
int cd,
int dim,
class Gr
idImp>
28 template<
int cd,
int dim,
class Gr
idImp>
32 return (item_ == org.item_);
35 template<
int cd,
int dim,
class Gr
idImp>
41 template<
int cd,
int dim,
class Gr
idImp>
47 template<
int cd,
int dim,
class Gr
idImp>
51 return partitionType_;
54 template<
int cd,
int dim,
class Gr
idImp>
67 template<
int dim,
class Gr
idImp>
76 template<
int dim,
class Gr
idImp>
90 template<
int dim,
class Gr
idImp>
97 isLeaf_ = org.isLeaf_;
103 template<
int dim,
class Gr
idImp>
108 if( ! key.isGhost() )
114 template<
int dim,
class Gr
idImp>
119 item_ =
static_cast<IMPLElementType *
> (&element);
122 assert( ! item_->isGhost() );
124 level_ = (*item_).level();
125 isLeaf_ = ((*item_).down() == 0);
131 template<
int dim,
class Gr
idImp>
136 item_ =
static_cast<IMPLElementType *
> ( ghost.getGhost().first );
140 assert(item_->isGhost());
142 level_ = item_->level();
144 ghost_ =
static_cast<BNDFaceType *
> (&ghost);
147 BNDFaceType * dwn =
static_cast<BNDFaceType *
> (ghost.down());
148 if ( ! dwn ) isLeaf_ =
true;
151 assert( ghost.level() == level_ );
152 if(dwn->ghostLevel() == level_)
166 template<
int dim,
class Gr
idImp>
173 template<
int dim,
class Gr
idImp>
177 return (item_ == org.item_);
180 template<
int dim,
class Gr
idImp>
187 template<
int dim,
class Gr
idImp>
191 return (*item_).getIndex();
194 template<
int dim,
class Gr
idImp>
198 return grid().referenceElement().size(cc);
201 template<
int dim,
class Gr
idImp>
207 assert( (isGhost()) ? item_->isGhost() : true );
211 template<
int dim,
class Gr
idImp>
217 template<
int dim,
class Gr
idImp>
230 template<
int dim,
class Gr
idImp>
237 template<
int dim,
class Gr
idImp>
245 template<
int dim,
class Gr
idImp>
253 template<
int dim,
class Gr
idImp>
262 template<
int dim,
class Gr
idImp>
271 template<
int dim,
class Gr
idImp>
275 return item_->hasBeenRefined();
278 template<
int dim,
class Gr
idImp>
282 return ((*item_).requestrule() == coarse_element_t);
291 template<
int codim,
class Gr
idImp >
294 const HElementType &item)
300 template<
int codim,
class Gr
idImp >
303 const HBndSegType & ghostFace )
306 , entity_ ( factory_.template getNewEntity<codim> ( ghostFace.level() ))
312 template<
int codim,
class Gr
idImp >
322 template<
int codim,
class Gr
idImp >
327 , entity_ ( factory_.template getNewEntity<codim> ( level ) )
335 template<
int codim,
class Gr
idImp >
338 const HElementType &item,
343 , seed_( item, level, twist, duneFace )
347 template<
int codim,
class Gr
idImp >
350 : factory_(org.factory_)
358 template<
int codim,
class Gr
idImp >
365 assert( entity_ == 0 );
366 entity_ = factory_.template getNewEntity<codim> ();
368 entityImp().setEntity( org.
entityImp() );
372 template<
int codim,
class Gr
idImp >
381 template<
int codim,
class Gr
idImp >
386 assert( &factory_ == &org.
factory_ );
391 HElementType* item = seed_.
item();
404 if( item->isGhost() )
408 entityImp().setEntity( org.
entityImp() );
413 entityImp().setElement( seed_ );
424 template<
int codim,
class Gr
idImp >
431 template<
int codim,
class Gr
idImp >
439 template<
int codim,
class Gr
idImp >
445 entityImp().removeElement();
446 factory_.template freeEntity<codim> ( (
EntityObject *) entity_ );
451 template<
int codim,
class Gr
idImp >
456 return (seed_.equals( i.
seed_ ));
459 template<
int codim,
class Gr
idImp >
464 assert( seed_.item() );
467 entity_ = factory_.template getNewEntity<codim> ();
468 entityImp().setElement( seed_ );
470 assert( seed_.item() == & entityImp().getItem() );
474 template<
int codim,
class Gr
idImp >
477 assert( seed_.item() );
478 return seed_.item()->level();
481 template<
int codim,
class Gr
idImp >
486 entityImp().setGhost( ghostFace );
489 seed_.set( ghostFace );
492 template<
int codim,
class Gr
idImp >
497 if( item && entity_ )
499 entityImp().setElement( seed_ );
509 template<
int codim,
class Gr
idImp >
519 template<
int codim,
class Gr
idImp >
525 template<
int codim,
class Gr
idImp >
535 template<
int codim,
class Gr
idImp >
543 assert( &factory_ == &org.
factory_ );
551 entityImp().setElement( seed_ );
558 template<
int codim,
class Gr
idImp >
563 assert( seed_.item() );
566 entity_ = factory_.template getNewEntity<codim> ();
567 entityImp().setElement( seed_ );
569 assert( seed_.item() == & entityImp().getItem() );
573 template<
int codim,
class Gr
idImp >
576 return seed_.level();
579 template<
int codim,
class Gr
idImp >
583 seed_.set( *item, level );
584 if( item && entity_ )
586 entityImp().setElement( seed_ );