3 #ifndef DUNE_ALU2DGRIDINDEXSETS_HH
4 #define DUNE_ALU2DGRIDINDEXSETS_HH
10 #include <dune/common/stdstreams.hh>
11 #include <dune/common/bigunsignedint.hh>
26 template<
int dim,
int dimworld, ALU2DSPACE ElementType eltype >
29 template<
int cd,
int dim,
class Gr
idImp>
30 class ALU2dGridEntity;
38 template <
int dim,
int dimworld, ALU2DSPACE ElementType eltype>
40 public IndexSet< ALU2dGrid< dim, dimworld, eltype >,
41 ALU2dGridHierarchicIndexSet< dim, dimworld, eltype >, int >
46 enum { numCodim = dim+1 };
59 int index (
const typename GridType::Traits::template Codim< codim >::Entity &entity )
const
65 template<
class Entity >
81 const int codim = dim-type.dim();
82 assert( grid_.
geomTypes(codim).size() == 1 );
83 if( type != grid_.
geomTypes(codim)[0] )
return 0;
89 int size (
int codim )
const
96 const std::vector<GeometryType>&
geomTypes (
int codim)
const
102 template <
class EntityType>
103 bool contains (
const EntityType &)
const {
return true; }
107 const GridType & grid_;
117 template <
int dim,
int dimworld, ALU2DSPACE ElementType eltype>
119 public IdSet < ALU2dGrid< dim, dimworld, eltype >,
120 ALU2dGridLocalIdSet< dim, dimworld, eltype >, int >
128 enum { codimMultiplier = 300000000 };
129 typedef typename GridType::Traits::template Codim<0>::Entity EntityCodim0Type;
134 for(
int i=0; i<dim+1; i++)
135 codimStart_[i] = i*codimMultiplier;
139 void updateIdSet() {}
150 template <
class EntityType>
151 int id (
const EntityType & ep)
const
153 enum { cd = EntityType :: codimension };
154 assert( hset_.
size(cd) < codimMultiplier );
155 return codimStart_[cd] + hset_.
index(ep);
160 int id (
const typename GridType:: template Codim<codim> :: Entity & ep)
const
163 assert( hset_.
size(codim) < codimMultiplier );
164 return codimStart_[codim] + hset_.
index(ep);
168 int subId (
const EntityCodim0Type &e,
int i,
unsigned int codim )
const
170 assert( hset_.
size( codim ) < codimMultiplier );
171 return codimStart_[ codim ] + hset_.
subIndex( e, i, codim );
176 const HierarchicIndexSetType & hset_;
179 int codimStart_[dim+1];