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>
39 class ALU2dGridHierarchicIndexSet :
40 public IndexSet< ALU2dGrid< dim, dimworld, eltype >,
41 ALU2dGridHierarchicIndexSet< dim, dimworld, eltype >, int >
43 typedef ALU2dGridHierarchicIndexSet< dim, dimworld, eltype > This;
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>
118 class ALU2dGridLocalIdSet :
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];
int id(const EntityType &ep) const
return global id of given entity
Definition: alugrid/2d/indexsets.hh:151
int size(GeometryType type) const
Definition: alugrid/2d/indexsets.hh:79
Different resources needed by all grid implementations.
GridType::Traits::template Codim< 0 >::Entity EntityCodim0Type
Definition: alugrid/2d/indexsets.hh:55
hierarchic index set of ALU2dGrid
Definition: alugrid/2d/grid.hh:66
Wrapper class for entities.
Definition: common/entity.hh:61
int subId(const EntityCodim0Type &e, int i, unsigned int codim) const
return subId of given entity
Definition: alugrid/2d/indexsets.hh:168
const std::vector< GeometryType > & geomTypes(int codim) const
deliver all geometry types used in this grid
Definition: alugrid/2d/indexsets.hh:96
int subIndex(const EntityCodim0Type &e, int i, unsigned int codim) const
return subIndex of given entity for codim sub entity
Definition: alugrid/2d/indexsets.hh:72
int hierSetSize(int cd) const
number of grid entities in the entire grid for given codim
friend class ALU2dGrid< dim, dimworld, eltype >
Definition: alugrid/2d/indexsets.hh:125
friend class ALU2dGrid< dim, dimworld, eltype >
Definition: alugrid/2d/indexsets.hh:48
int index(const Entity &entity) const
return hierarchic index of given entity
Definition: alugrid/2d/indexsets.hh:66
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:178
int size(int codim) const
return size of indexset, i.e. maxindex+1
Definition: alugrid/2d/indexsets.hh:89
bool contains(const EntityType &) const
return true because all entities are contained in this set
Definition: alugrid/2d/indexsets.hh:103
const std::vector< GeometryType > & geomTypes(int codim) const
deliver all geometry types used in this grid
Definition: alugrid/2d/grid.hh:441
Provides base classes for index and id sets.
static std::conditional< std::is_reference< InterfaceType >::value, typename std::add_lvalue_reference< typename ReturnImplementationType< typename std::remove_reference< InterfaceType >::type >::ImplementationType >::type, typename std::remove_const< typename ReturnImplementationType< typename std::remove_reference< InterfaceType >::type >::ImplementationType >::type >::type getRealImplementation(InterfaceType &&i)
return real implementation of interface class
Definition: common/grid.hh:1305
hierarchic index set of ALU3dGrid
Definition: alugrid/2d/grid.hh:64
int id(const typename GridType::template Codim< codim >::Entity &ep) const
return global id of given entity
Definition: alugrid/2d/indexsets.hh:160
int IdType
export type of id
Definition: alugrid/2d/indexsets.hh:143
ALU2dGridHierarchicIndexSet< dim, dimworld, elementType > HierarchicIndexSet
Type of the hierarchic index set.
Definition: alugrid/2d/grid.hh:275
int index(const typename GridType::Traits::template Codim< codim >::Entity &entity) const
return hierarchic index of given entity
Definition: alugrid/2d/indexsets.hh:59
[ provides Dune::Grid ]
Definition: alugrid/2d/entity.hh:38
Id Set Interface.
Definition: common/grid.hh:362