1#ifndef DUNE_FEM_GRIDPART_COMMON_INDEXSET_HH
2#define DUNE_FEM_GRIDPART_COMMON_INDEXSET_HH
8#include <dune/geometry/type.hh>
20 template<
class Traits >
22 template<
class Traits >
23 class ConsecutiveIndexSet;
24 template<
class Traits >
25 class AdaptiveIndexSet;
28 namespace Capabilities
40 template<
class IndexSet >
43 template<
class Traits >
49 static const bool v =
decltype(
__isConsecutive( std::declval< IndexSet >() ) )::value;
62 template<
class IndexSet >
65 template<
class Traits >
68 static std::false_type __isAdaptive ( ... );
71 static const bool v =
decltype( __isAdaptive( std::declval< IndexSet >() ) )::value;
78 template<
class IndexSet >
83 template<
class IndexSet >
84 struct isAdaptiveIndexSet< const
IndexSet >
85 :
public isAdaptiveIndexSet< IndexSet >
102 template<
class Traits >
109 template<
int codim >
120 typedef typename Traits::Types
Types;
129 return impl().types( codim );
133 template<
class Entity >
136 return impl().contains( entity );
142 return impl().size( type );
148 return impl().size( codim );
152 template<
class Entity >
155 return index< Entity::codimension >( entity );
159 template<
int codim >
162 return impl().template index< codim >( entity );
166 template<
class Entity >
169 return subIndex< Entity::codimension >( entity, i, cd );
173 template<
int codim >
176 return impl().template subIndex< codim >( entity, i, cd );
185 const typename Traits::IndexSetType &
impl ()
const
187 return static_cast< const typename Traits::IndexSetType &
>( *this );
201 template<
class Traits >
226 impl().insertEntity( entity );
232 impl().removeEntity( entity );
245 impl().write( stream );
252 impl().read( stream );
258 typename Traits::IndexSetType &
impl ()
261 return const_cast< typename Traits::IndexSetType &
>(
impl );
275 template<
class Traits >
294 return impl().numberOfHoles( type );
300 return impl().oldIndex( hole, type );
306 return impl().newIndex( hole, type );
Definition: bindguard.hh:11
interface documentation for (grid part) index sets
Definition: common/indexset.hh:104
IndexType subIndex(const typename Codim< codim >::Entity &entity, int i, unsigned int cd) const
return index for given subentity
Definition: common/indexset.hh:174
IndexType index(const typename Codim< codim >::Entity &entity) const
return index for given entity
Definition: common/indexset.hh:160
Traits::Types Types
geometry type range type
Definition: common/indexset.hh:120
bool contains(const Entity &entity) const
return true if entity has index
Definition: common/indexset.hh:134
void requestCodimensions(const std::vector< int > &codimensions) const
receive request for codimension support in case index set is adaptive
Definition: common/indexset.hh:180
IndexType size(GeometryType type) const
return number of entities of given type
Definition: common/indexset.hh:140
IndexType subIndex(const Entity &entity, int i, unsigned int cd) const
return index for given subentity
Definition: common/indexset.hh:167
const Traits::IndexSetType & impl() const
Definition: common/indexset.hh:185
Types types(int codim) const
return range of geometry types
Definition: common/indexset.hh:127
IndexType size(int codim) const
return number of entities of given codimension
Definition: common/indexset.hh:146
IndexType index(const Entity &entity) const
return index for given entity
Definition: common/indexset.hh:153
static const int dimension
grid dimension
Definition: common/indexset.hh:107
Traits::IndexType IndexType
index type
Definition: common/indexset.hh:117
extended interface for consecutive index sets
Definition: common/indexset.hh:204
Traits::IndexSetType & impl()
Definition: common/indexset.hh:258
ConsecutiveIndexSet()=default
void write(OutStreamInterface< T > &stream) const
please doc me
Definition: common/indexset.hh:243
bool compress()
please doc me
Definition: common/indexset.hh:221
void backup() const
please doc me
Definition: common/indexset.hh:236
void resize()
please doc me
Definition: common/indexset.hh:218
void insertEntity(const typename BaseType::template Codim< 0 >::Entity &entity)
please doc me
Definition: common/indexset.hh:224
void removeEntity(const typename BaseType::template Codim< 0 >::Entity &entity)
please doc me
Definition: common/indexset.hh:230
void restore()
please doc me
Definition: common/indexset.hh:239
void read(InStreamInterface< T > &stream)
please doc me
Definition: common/indexset.hh:250
extended interface for adaptive, consecutive index sets
Definition: common/indexset.hh:278
Traits::IndexSetType & impl()
Definition: common/indexset.hh:258
int numberOfHoles(GeometryType type) const
return number of holes for given type
Definition: common/indexset.hh:292
int oldIndex(int hole, GeometryType type) const
return old index for given hole and type
Definition: common/indexset.hh:298
int newIndex(int hole, GeometryType type) const
return new index for given hole and type
Definition: common/indexset.hh:304
AdaptiveIndexSet()=default
specialize with true if index set implements the interface for consecutive index sets
Definition: common/indexset.hh:42
static std::false_type __isConsecutive(...)
static std::true_type __isConsecutive(const ConsecutiveIndexSet< Traits > &)
static const bool v
Definition: common/indexset.hh:49
specialize with true if index set implements the interface for adaptive index sets
Definition: common/indexset.hh:64
static const bool v
Definition: common/indexset.hh:71
Definition: common/indexset.hh:111
Traits::template Codim< codim >::Entity Entity
entity type
Definition: common/indexset.hh:113
abstract interface for an output stream
Definition: streams.hh:46
abstract interface for an input stream
Definition: streams.hh:179