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 >
72 int subIndex (
const EntityCodim0Type &e,
int i,
unsigned int codim )
const 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];
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
Id Set Interface.
Definition: common/grid.hh:362
GridType::Traits::template Codim< 0 >::Entity EntityCodim0Type
Definition: alugrid/2d/indexsets.hh:55
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:178
hierarchic index set of ALU2dGrid
Definition: alugrid/2d/grid.hh:66
const std::vector< GeometryType > & geomTypes(int codim) const
deliver all geometry types used in this grid
Definition: alugrid/2d/grid.hh:441
Wrapper class for entities.
Definition: common/entity.hh:61
const std::vector< GeometryType > & geomTypes(int codim) const
deliver all geometry types used in this grid
Definition: alugrid/2d/indexsets.hh:96
int IdType
export type of id
Definition: alugrid/2d/indexsets.hh:143
int hierSetSize(int cd) const
number of grid entities in the entire grid for given codim
int size(GeometryType type) const
Definition: alugrid/2d/indexsets.hh:79
hierarchic index set of ALU3dGrid
Definition: alugrid/2d/grid.hh:64
int index(const Entity &entity) const
return hierarchic index of given entity
Definition: alugrid/2d/indexsets.hh:66
bool contains(const EntityType &) const
return true because all entities are contained in this set
Definition: alugrid/2d/indexsets.hh:103
int size(int codim) const
return size of indexset, i.e. maxindex+1
Definition: alugrid/2d/indexsets.hh:89
int id(const EntityType &ep) const
return global id of given entity
Definition: alugrid/2d/indexsets.hh:151
int index(const typename GridType::Traits::template Codim< codim >::Entity &entity) const
return hierarchic index of given entity
Definition: alugrid/2d/indexsets.hh:59
int id(const typename GridType::template Codim< codim >::Entity &ep) const
return global id of given entity
Definition: alugrid/2d/indexsets.hh:160
Provides base classes for index and id sets.
friend class ALU2dGrid< dim, dimworld, eltype >
Definition: alugrid/2d/indexsets.hh:48
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
Include standard header files.
Definition: agrid.hh:59
int subId(const EntityCodim0Type &e, int i, unsigned int codim) const
return subId of given entity
Definition: alugrid/2d/indexsets.hh:168
Different resources needed by all grid implementations.
[ provides Dune::Grid ]
Definition: alugrid/2d/entity.hh:38