3 #ifndef DUNE_IDENTITYGRIDENTITY_HH
4 #define DUNE_IDENTITYGRIDENTITY_HH
10 #include <dune/grid/common/grid.hh>
17 template<
int codim,
int dim,
class Gr
idImp>
20 template<
int codim,
class Gr
idImp>
23 template<
int codim, PartitionIteratorType pitype,
class Gr
idImp>
26 template<
class Gr
idImp>
29 template<
class Gr
idImp>
32 template<
class Gr
idImp>
37 template<
class Gr
id >
38 struct HostGridAccess;
42 template<
int codim,
int dim,
class Gr
idImp>
44 public GridImp::template Codim<codim>::Entity
49 enum {
CodimInHostGrid = GridImp::HostGridType::dimension - GridImp::dimension + codim};
52 typedef typename GridImp::HostGridType::Traits::template Codim<CodimInHostGrid>::EntityPointer
HostGridEntityPointer;
56 template<
class HostGr
idEntityPo
inter >
58 GridImp::template Codim<codim>::Entity (
IdentityGridEntity<codim, dim, const GridImp>(identityGrid,hostEntity)),
59 identityGrid_(identityGrid)
64 template<
class HostGr
idEntityPo
inter >
66 this->realEntity.setToTarget(hostEntity);
72 return this->realEntity.hostEntity_;
78 const GridImp* identityGrid_;
94 template<
int codim,
int dim,
class Gr
idImp>
96 public EntityDefaultImplementation <codim,dim,GridImp,IdentityGridEntity>
100 template <
class Gr
idImp_>
103 template <
class Gr
idImp_>
106 template <
class Gr
idImp_>
109 template <
class Gr
idImp_>
114 friend struct HostGridAccess< typename remove_const< GridImp >::type >;
119 typedef typename GridImp::ctype ctype;
122 enum {CodimInHostGrid = GridImp::HostGridType::dimension - GridImp::dimension + codim};
125 typedef typename GridImp::HostGridType::Traits::template Codim<CodimInHostGrid>::EntityPointer HostGridEntityPointer;
130 typedef typename GridImp::template Codim<codim>::Geometry
Geometry;
133 typedef typename GridImp::template Codim<codim>::EntitySeed
EntitySeed;
136 template<
class HostGr
idEntityPo
inter >
139 identityGrid_(identityGrid)
146 identityGrid_(original.identityGrid_)
153 if (
this != &original)
155 identityGrid_ = original.identityGrid_;
188 template<
int cc>
int count ()
const {
206 template<
class HostGr
idEntityPo
inter >
207 void setToTarget(
const HostGridEntityPointer& target)
213 const GridImp* identityGrid_;
233 template<
int dim,
class Gr
idImp>
235 public EntityDefaultImplementation<0,dim,GridImp, IdentityGridEntity>
237 friend struct HostGridAccess< typename remove_const< GridImp >::type >;
242 enum {CodimInHostGrid = GridImp::HostGridType::dimension - GridImp::dimension};
245 typedef typename GridImp::HostGridType::Traits::template Codim<CodimInHostGrid>::EntityPointer
HostGridEntityPointer;
247 typedef typename GridImp::template Codim<0>::Geometry
Geometry;
261 typedef typename GridImp::template Codim<0>::EntitySeed
EntitySeed;
264 template<
class HostGr
idEntityPo
inter >
266 identityGrid_(identityGrid),
273 identityGrid_(original.identityGrid_),
281 if (
this != &original)
283 identityGrid_ = original.identityGrid_;
333 typename GridImp::template Codim<cc>::EntityPointer
subEntity (
int i)
const {
412 bool wasRefined ()
const
414 if (identityGrid_->adaptationStep!=GridImp::adaptDone)
418 int index = identityGrid_->levelIndexSet(level).index(*
this);
419 return identityGrid_->refinementMark_[
level][index];
424 bool mightBeCoarsened ()
const
436 template<
class HostGr
idEntityPo
inter >
451 typedef typename GridImp::ctype ctype;