1 #ifndef DUNE_IDENTITYGRIDENTITY_HH
2 #define DUNE_IDENTITYGRIDENTITY_HH
8 #include <dune/grid/common/grid.hh>
15 template<
int codim,
int dim,
class Gr
idImp>
18 template<
int codim,
class Gr
idImp>
21 template<
int codim, PartitionIteratorType pitype,
class Gr
idImp>
24 template<
class Gr
idImp>
27 template<
class Gr
idImp>
30 template<
class Gr
idImp>
35 template<
class Gr
id >
36 struct HostGridAccess;
40 template<
int codim,
int dim,
class Gr
idImp>
42 public GridImp::template Codim<codim>::Entity
47 enum {
CodimInHostGrid = GridImp::HostGridType::dimension - GridImp::dimension + codim};
50 typedef typename GridImp::HostGridType::Traits::template Codim<CodimInHostGrid>::EntityPointer
HostGridEntityPointer;
54 template<
class HostGr
idEntityPo
inter >
56 GridImp::template Codim<codim>::Entity (
IdentityGridEntity<codim, dim, const GridImp>(identityGrid,hostEntity)),
57 identityGrid_(identityGrid)
62 template<
class HostGr
idEntityPo
inter >
64 this->realEntity.setToTarget(hostEntity);
70 return this->realEntity.hostEntity_;
76 const GridImp* identityGrid_;
92 template<
int codim,
int dim,
class Gr
idImp>
94 public EntityDefaultImplementation <codim,dim,GridImp,IdentityGridEntity>
98 template <
class Gr
idImp_>
101 template <
class Gr
idImp_>
104 template <
class Gr
idImp_>
107 template <
class Gr
idImp_>
112 friend struct HostGridAccess< typename remove_const< GridImp >::type >;
117 typedef typename GridImp::ctype ctype;
120 enum {CodimInHostGrid = GridImp::HostGridType::dimension - GridImp::dimension + codim};
123 typedef typename GridImp::HostGridType::Traits::template Codim<CodimInHostGrid>::EntityPointer HostGridEntityPointer;
128 typedef typename GridImp::template Codim<codim>::Geometry
Geometry;
131 typedef typename GridImp::template Codim<codim>::EntitySeed
EntitySeed;
134 template<
class HostGr
idEntityPo
inter >
137 identityGrid_(identityGrid)
144 identityGrid_(original.identityGrid_)
151 if (
this != &original)
153 identityGrid_ = original.identityGrid_;
186 template<
int cc>
int count ()
const{
204 template<
class HostGr
idEntityPo
inter >
205 void setToTarget(
const HostGridEntityPointer& target)
211 const GridImp* identityGrid_;
231 template<
int dim,
class Gr
idImp>
233 public EntityDefaultImplementation<0,dim,GridImp, IdentityGridEntity>
235 friend struct HostGridAccess< typename remove_const< GridImp >::type >;
240 enum {CodimInHostGrid = GridImp::HostGridType::dimension - GridImp::dimension};
243 typedef typename GridImp::HostGridType::Traits::template Codim<CodimInHostGrid>::EntityPointer
HostGridEntityPointer;
245 typedef typename GridImp::template Codim<0>::Geometry
Geometry;
259 typedef typename GridImp::template Codim<0>::EntitySeed
EntitySeed;
262 template<
class HostGr
idEntityPo
inter >
264 identityGrid_(identityGrid),
271 identityGrid_(original.identityGrid_),
279 if (
this != &original)
281 identityGrid_ = original.identityGrid_;
331 typename GridImp::template Codim<cc>::EntityPointer
subEntity (
int i)
const{
410 bool wasRefined ()
const
412 if (identityGrid_->adaptationStep!=GridImp::adaptDone)
416 int index = identityGrid_->levelIndexSet(level).index(*
this);
417 return identityGrid_->refinementMark_[
level][index];
422 bool mightBeCoarsened ()
const
434 template<
class HostGr
idEntityPo
inter >
449 typedef typename GridImp::ctype ctype;