1 #include <dune/common/exceptions.hh>
8 template<
int cd,
int dim,
class Gr
idImp>
18 template<
int cd,
int dim,
class Gr
idImp>
26 template<
int cd,
int dim,
class Gr
idImp>
30 return (item_ == org.item_);
33 template<
int cd,
int dim,
class Gr
idImp>
39 template<
int cd,
int dim,
class Gr
idImp>
45 template<
int cd,
int dim,
class Gr
idImp>
49 return partitionType_;
52 template<
int cd,
int dim,
class Gr
idImp>
65 template<
int dim,
class Gr
idImp>
74 template<
int dim,
class Gr
idImp>
88 template<
int dim,
class Gr
idImp>
95 isLeaf_ = org.isLeaf_;
101 template<
int dim,
class Gr
idImp>
106 if( ! key.isGhost() )
112 template<
int dim,
class Gr
idImp>
117 item_ =
static_cast<IMPLElementType *
> (&element);
120 assert( ! item_->isGhost() );
122 level_ = (*item_).level();
123 isLeaf_ = ((*item_).down() == 0);
129 template<
int dim,
class Gr
idImp>
134 item_ =
static_cast<IMPLElementType *
> ( ghost.getGhost().first );
138 assert(item_->isGhost());
140 level_ = item_->level();
142 ghost_ =
static_cast<BNDFaceType *
> (&ghost);
145 BNDFaceType * dwn =
static_cast<BNDFaceType *
> (ghost.down());
146 if ( ! dwn ) isLeaf_ =
true;
149 assert( ghost.level() == level_ );
150 if(dwn->ghostLevel() == level_)
164 template<
int dim,
class Gr
idImp>
171 template<
int dim,
class Gr
idImp>
175 return (item_ == org.item_);
178 template<
int dim,
class Gr
idImp>
185 template<
int dim,
class Gr
idImp>
189 return (*item_).getIndex();
192 template<
int dim,
class Gr
idImp>
196 return grid().referenceElement().size(cc);
199 template<
int dim,
class Gr
idImp>
205 assert( (isGhost()) ? item_->isGhost() : true );
209 template<
int dim,
class Gr
idImp>
215 template<
int dim,
class Gr
idImp>
228 template<
int dim,
class Gr
idImp>
235 template<
int dim,
class Gr
idImp>
243 template<
int dim,
class Gr
idImp>
251 template<
int dim,
class Gr
idImp>
259 template<
int dim,
class Gr
idImp>
268 template<
int dim,
class Gr
idImp>
272 return item_->hasBeenRefined();
275 template<
int dim,
class Gr
idImp>
279 return ((*item_).requestrule() == coarse_element_t);
288 template<
int codim,
class Gr
idImp >
291 const HElementType &item)
299 template<
int codim,
class Gr
idImp >
302 const HBndSegType & ghostFace )
305 , entity_ ( factory_.template getNewEntity<codim> ( ghostFace.level() ))
312 template<
int codim,
class Gr
idImp >
324 template<
int codim,
class Gr
idImp >
329 , entity_ ( factory_.template getNewEntity<codim> ( level ) )
338 template<
int codim,
class Gr
idImp >
341 const HElementType &item,
346 , seed_( item, level, twist, duneFace )
351 template<
int codim,
class Gr
idImp >
354 : factory_(org.factory_)
357 , locked_( org.locked_ )
363 template<
int codim,
class Gr
idImp >
370 assert( entity_ == 0 );
371 entity_ = factory_.template getNewEntity<codim> ();
373 entityImp().setEntity( org.
entityImp() );
377 template<
int codim,
class Gr
idImp >
386 template<
int codim,
class Gr
idImp >
391 assert( &factory_ == &org.
factory_ );
396 HElementType* item = seed_.
item();
411 if( item->isGhost() )
415 entityImp().setEntity( org.
entityImp() );
421 entityImp().setElement( seed_ );
432 template<
int codim,
class Gr
idImp >
439 template<
int codim,
class Gr
idImp >
448 template<
int codim,
class Gr
idImp >
454 entityImp().removeElement();
455 factory_.template freeEntity<codim> ( (
EntityObject *) entity_ );
460 template<
int codim,
class Gr
idImp >
465 return (seed_.equals( i.
seed_ ));
468 template<
int codim,
class Gr
idImp >
473 assert( seed_.item() );
474 assert( (seed_.item()->isGhost()) ? locked_ :
true );
475 assert( (locked_) ? (entity_ != 0) :
true);
478 entity_ = factory_.template getNewEntity<codim> ();
479 entityImp().setElement( seed_ );
481 assert( seed_.item() == & entityImp().getItem() );
485 template<
int codim,
class Gr
idImp >
488 assert( seed_.item() );
489 return seed_.item()->level();
492 template<
int codim,
class Gr
idImp >
497 entityImp().setGhost( ghostFace );
500 seed_.set( ghostFace );
503 template<
int codim,
class Gr
idImp >
508 if( item && entity_ )
510 entityImp().setElement( seed_ );
520 template<
int codim,
class Gr
idImp >
531 template<
int codim,
class Gr
idImp >
538 template<
int codim,
class Gr
idImp >
548 template<
int codim,
class Gr
idImp >
556 assert( &factory_ == &org.
factory_ );
566 entityImp().setElement( seed_ );
573 template<
int codim,
class Gr
idImp >
578 assert( seed_.item() );
581 entity_ = factory_.template getNewEntity<codim> ();
582 entityImp().setElement( seed_ );
584 assert( seed_.item() == & entityImp().getItem() );
588 template<
int codim,
class Gr
idImp >
591 return seed_.level();
594 template<
int codim,
class Gr
idImp >
598 seed_.set( *item, level );
599 if( item && entity_ )
601 entityImp().setElement( seed_ );