3 #ifndef DUNE_IDENTITYGRID_INDEXSETS_HH
4 #define DUNE_IDENTITYGRID_INDEXSETS_HH
10 #include <dune/grid/common/indexidset.hh>
17 template<
class Gr
idImp>
19 public IndexSet<GridImp,IdentityGridLevelIndexSet<GridImp> >
23 typedef typename remove_const<GridImp>::type::HostGridType
HostGrid;
25 enum {
dim = GridImp::dimension};
29 int index (
const typename GridImp::Traits::template Codim<codim>::Entity& e)
const
31 return grid_->hostgrid_->levelIndexSet(
level_).template index<codim>(*
grid_->template getHostEntityPointer<codim>(e));
37 int subIndex (
const typename GridImp::Traits::template Codim<cc>::Entity& e,
int i,
int codim)
const
39 return grid_->hostgrid_->levelIndexSet(
level_).subIndex(*
grid_->template getHostEntityPointer<cc>(e), i, codim);
44 int size (
int codim)
const {
45 return grid_->hostgrid_->levelIndexSet(
level_).size(codim);
50 int size (GeometryType type)
const
52 return grid_->hostgrid_->levelIndexSet(
level_).size(type);
57 const std::vector<GeometryType>&
geomTypes (
int codim)
const
59 return grid_->hostgrid_->levelIndexSet(
level_).geomTypes(codim);
63 template<
class EntityType>
66 return grid_->hostgrid_->levelIndexSet(
level_).contains(*
grid_->template getHostEntityPointer<EntityType::codimension>(e));
70 void update(
const GridImp& grid,
int level)
83 template<
class Gr
idImp>
85 public IndexSet<GridImp,IdentityGridLeafIndexSet<GridImp> >
87 typedef typename remove_const<GridImp>::type::HostGridType HostGrid;
96 enum {
dim = remove_const<GridImp>::type::dimension};
111 int index (
const typename remove_const<GridImp>::type::template Codim<codim>::Entity& e)
const
113 return grid_->hostgrid_->leafIndexSet().template index<codim>(*
grid_->template getHostEntityPointer<codim>(e));
123 int subIndex (
const typename remove_const<GridImp>::type::Traits::template Codim<cc>::Entity& e,
int i,
int codim)
const
125 return grid_->hostgrid_->leafIndexSet().subIndex(*
grid_->template getHostEntityPointer<cc>(e),i, codim);
130 int size (GeometryType type)
const
132 return grid_->hostgrid_->leafIndexSet().size(type);
139 return grid_->hostgrid_->leafIndexSet().size(codim);
144 const std::vector<GeometryType>&
geomTypes (
int codim)
const
146 return grid_->hostgrid_->leafIndexSet().geomTypes(codim);
150 template<
class EntityType>
153 return grid_->hostgrid_->leafIndexSet().contains(*
grid_->template getHostEntityPointer<EntityType::codimension>(e));
171 template <
class Gr
idImp>
173 public IdSet<GridImp,IdentityGridGlobalIdSet<GridImp>,
174 typename remove_const<GridImp>::type::HostGridType::Traits::GlobalIdSet::IdType>
177 typedef typename remove_const<GridImp>::type::HostGridType HostGrid;
185 typedef typename HostGrid::Traits::GlobalIdSet::IdType
IdType;
194 IdType id (
const typename remove_const<GridImp>::type::Traits::template Codim<cd>::Entity& e)
const
197 return grid_->hostgrid_->globalIdSet().id(*
grid_->getRealImplementation(e).hostEntity_);
206 IdType subId (
const typename remove_const<GridImp>::type::Traits::template Codim<0>::Entity& e,
int i,
int codim)
const
209 return grid_->hostgrid_->globalIdSet().subId(*
grid_->getRealImplementation(e).hostEntity_,i, codim);
223 template<
class Gr
idImp>
225 public IdSet<GridImp,IdentityGridLocalIdSet<GridImp>,
226 typename remove_const<GridImp>::type::HostGridType::Traits::LocalIdSet::IdType>
230 typedef typename remove_const<GridImp>::type::HostGridType HostGrid;
235 typedef typename HostGrid::Traits::LocalIdSet::IdType
IdType;
248 IdType id (
const typename remove_const<GridImp>::type::Traits::template Codim<cd>::Entity& e)
const
251 return grid_->hostgrid_->localIdSet().id(*
grid_->getRealImplementation(e).hostEntity_);
260 IdType subId (
const typename remove_const<GridImp>::type::template Codim<0>::Entity& e,
int i,
int codim)
const
263 return grid_->hostgrid_->localIdSet().subId(*
grid_->getRealImplementation(e).hostEntity_,i,codim);