5 #ifndef DUNE_ALBERTAGRID_GRIDVIEW_HH 6 #define DUNE_ALBERTAGRID_GRIDVIEW_HH 10 #include <dune/common/typetraits.hh> 11 #include <dune/common/exceptions.hh> 21 template<
class Gr
idImp >
24 template<
class Gr
idImp >
28 template<
class Gr
idImp >
34 typedef typename std::remove_const<GridImp>::type
Grid;
37 typedef typename Grid::Traits::LevelIndexSet
IndexSet;
43 typedef typename Grid::Traits::LevelIntersectionIterator
61 template< PartitionIteratorType pit >
74 template<
class Gr
idImp >
111 indexSet_( &(
grid.levelIndexSet( level )) ),
118 : grid_( other.grid_ ),
119 indexSet_( other.indexSet_ ),
120 level_( other.level_ )
124 ThisType &operator= (
const ThisType & other)
127 indexSet_ = other.indexSet_;
128 level_ = other.level_;
150 return grid().size( level_, codim );
156 return grid().size( level_, type );
163 return grid().template lbegin< cd, All_Partition >( level_ );
167 template<
int cd, PartitionIteratorType pit >
170 return grid().template lbegin< cd, pit >( level_ );
177 return grid().template lend< cd, All_Partition >( level_ );
181 template<
int cd, PartitionIteratorType pit >
184 return grid().template lend< cd, pit >( level_ );
191 if(
grid().maxLevel() == 0)
198 DUNE_THROW( NotImplemented,
"method ibegin not implemented on LevelGridView for AlbertaGrid." );
215 return grid().comm();
219 int overlapSize ( [[maybe_unused]]
int codim )
const {
return 0; }
222 int ghostSize ( [[maybe_unused]]
int codim )
const {
return 0; }
225 template<
class DataHandleImp,
class DataType >
238 template<
class Gr
idImp >
244 typedef typename std::remove_const<GridImp>::type
Grid;
247 typedef typename Grid::Traits::LeafIndexSet
IndexSet;
253 typedef typename Grid::Traits::LeafIntersectionIterator
272 template <PartitionIteratorType pit >
285 template<
class Gr
idImp >
322 indexSet_( &(
grid.leafIndexSet()) )
328 : grid_( other.grid_ ),
329 indexSet_( other.indexSet_ )
333 ThisType &operator= (
const ThisType & other)
336 indexSet_ = other.indexSet_;
358 return grid().size( codim );
364 return grid().size( type );
371 return grid().template leafbegin< cd, All_Partition >();
375 template<
int cd, PartitionIteratorType pit >
378 return grid().template leafbegin< cd, pit >();
385 return grid().template leafend< cd, All_Partition >();
389 template<
int cd, PartitionIteratorType pit >
392 return grid().template leafend< cd, pit >();
399 const ElementInfo elementInfo = entity.impl().elementInfo();
400 assert( !!elementInfo );
405 if( elementInfo.
elInfo().opp_vertex[ i ] == 127 )
406 DUNE_THROW( NotImplemented,
"AlbertaGrid: Intersections on outside entities are not fully implemented, yet." );
408 #endif // #ifndef NDEBUG 418 assert( !!entity.impl().elementInfo() );
426 return grid().comm();
430 int overlapSize ( [[maybe_unused]]
int codim )
const {
return 0; }
433 int ghostSize ( [[maybe_unused]]
int codim )
const {
return 0; }
436 template<
class DataHandleImp,
class DataType >
449 #endif // #if HAVE_ALBERTA 450 #endif // #ifndef DUNE_ALBERTAGRID_GRIDVIEW_HH Grid::Traits::LeafIntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: albertagrid/gridview.hh:254
IntersectionIterator ibegin(const typename Codim< 0 >::Entity &entity) const
obtain begin intersection iterator with respect to this view
Definition: albertagrid/gridview.hh:397
const IndexSet & indexSet() const
obtain the index set
Definition: albertagrid/gridview.hh:347
Definition: elementinfo.hh:42
Codim Structure.
Definition: albertagrid/gridview.hh:310
Codim< cd >::Iterator end() const
obtain end iterator for this view
Definition: albertagrid/gridview.hh:383
Definition: albertagrid/gridview.hh:239
Codim< cd >::Iterator begin() const
obtain begin iterator for this view
Definition: albertagrid/gridview.hh:161
Traits::IntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: albertagrid/gridview.hh:92
Index Set Interface base class.
Definition: common/grid.hh:348
Definition: albertagrid/gridview.hh:50
std::remove_const< GridImp >::type Grid
type of the grid
Definition: albertagrid/gridview.hh:244
Traits::Intersection Intersection
type of the intersection
Definition: albertagrid/gridview.hh:89
ALBERTA EL_INFO & elInfo() const
Definition: elementinfo.hh:744
bool isConforming() const
return true if current state of grid view represents a conforming grid
Definition: albertagrid/gridview.hh:353
static constexpr bool conforming
Definition: albertagrid/gridview.hh:312
Codim< cd >::Iterator end() const
obtain end iterator for this view
Definition: albertagrid/gridview.hh:175
IntersectionIterator iend(const typename Codim< 0 >::Entity &entity) const
obtain end intersection iterator with respect to this view
Definition: albertagrid/gridview.hh:416
Define types needed to iterate over entities of a given partition type.
Definition: albertagrid/gridview.hh:273
Grid abstract base classThis class is the base class for all grid implementations. Although no virtual functions are used we call it abstract since its methods do not contain an implementation but forward to the methods of the derived class via the Barton-Nackman trick.
Definition: common/grid.hh:375
static constexpr bool conforming
Definition: albertagrid/gridview.hh:281
int size(const GeometryType &type) const
obtain number of entities with a given geometry type
Definition: albertagrid/gridview.hh:154
Traits::IndexSet IndexSet
type of the index set
Definition: albertagrid/gridview.hh:297
static constexpr bool conforming
Definition: albertagrid/gridview.hh:70
int ghostSize([[maybe_unused]] int codim) const
Return size of the ghost region for a given codim on the grid view.
Definition: albertagrid/gridview.hh:433
Codim< cd >::template Partition< pit >::Iterator end() const
obtain end iterator for this view
Definition: albertagrid/gridview.hh:182
AlbertaLeafGridView< GridImp > GridViewImp
Definition: albertagrid/gridview.hh:241
bool isConforming() const
return true if current state of grid view represents a conforming grid
Definition: albertagrid/gridview.hh:145
Grid::Traits::LevelIntersection Intersection
type of the intersection
Definition: albertagrid/gridview.hh:40
int size(int codim) const
obtain number of entities in a given codimension
Definition: albertagrid/gridview.hh:356
const Grid & grid() const
obtain a const reference to the underlying hierarchic grid
Definition: albertagrid/gridview.hh:133
Grid::template Codim< cd >::template Partition< pit >::LeafIterator Iterator
iterator over a given codim and partition type
Definition: albertagrid/gridview.hh:277
int size(const GeometryType &type) const
obtain number of entities with a given geometry type
Definition: albertagrid/gridview.hh:362
Specialize with 'true' if implementation guarantees a conforming leaf grid. (default=false) ...
Definition: common/capabilities.hh:114
int overlapSize([[maybe_unused]] int codim) const
Return size of the overlap region for a given codim on the grid view.
Definition: albertagrid/gridview.hh:219
Codim< cd >::Iterator begin() const
obtain begin iterator for this view
Definition: albertagrid/gridview.hh:369
int size(int codim) const
obtain number of entities in a given codimension
Definition: albertagrid/gridview.hh:148
Traits::Communication Communication
type of the communication
Definition: albertagrid/gridview.hh:306
const IndexSet & indexSet() const
obtain the index set
Definition: albertagrid/gridview.hh:139
Grid::Traits::LevelIndexSet IndexSet
type of the index set
Definition: albertagrid/gridview.hh:37
Definition: albertagrid/intersectioniterator.hh:35
Grid::Traits::LeafIndexSet IndexSet
type of the index set
Definition: albertagrid/gridview.hh:247
CommunicationDirection
Define a type for communication direction parameter.
Definition: gridenums.hh:170
const Communication & comm() const
obtain communication object
Definition: albertagrid/gridview.hh:424
Grid::Traits::LeafIntersection Intersection
type of the intersection
Definition: albertagrid/gridview.hh:250
AlbertaLevelGridViewTraits< GridImp > Traits
Definition: albertagrid/gridview.hh:80
Grid::Traits::template Codim< cd >::Entity Entity
Definition: albertagrid/gridview.hh:54
void communicate([[maybe_unused]] CommDataHandleIF< DataHandleImp, DataType > &data, [[maybe_unused]] InterfaceType iftype, [[maybe_unused]] CommunicationDirection dir) const
Definition: albertagrid/gridview.hh:437
const Grid & grid() const
obtain a const reference to the underlying hierarchic grid
Definition: albertagrid/gridview.hh:341
int ghostSize([[maybe_unused]] int codim) const
Return size of the ghost region for a given codim on the grid view.
Definition: albertagrid/gridview.hh:222
IntersectionIterator ibegin(const typename Codim< 0 >::Entity &entity) const
obtain begin intersection iterator with respect to this view
Definition: albertagrid/gridview.hh:189
AlbertaLeafGridView(const Grid &grid)
Definition: albertagrid/gridview.hh:320
Grid::Traits::LevelIntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: albertagrid/gridview.hh:44
Definition: albertagrid/gridview.hh:22
Traits::Intersection Intersection
type of the intersection
Definition: albertagrid/gridview.hh:300
Traits::Grid Grid
type of the grid
Definition: albertagrid/gridview.hh:294
Grid::template Codim< cd >::LocalGeometry LocalGeometry
Definition: albertagrid/gridview.hh:58
Include standard header files.
Definition: agrid.hh:59
AlbertaLeafGridViewTraits< GridImp > Traits
Definition: albertagrid/gridview.hh:291
Definition: albertagrid/entity.hh:32
Codim Structure.
Definition: albertagrid/gridview.hh:99
IntersectionIterator iend(const typename Codim< 0 >::Entity &entity) const
obtain end intersection iterator with respect to this view
Definition: albertagrid/gridview.hh:206
CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
Definition: datahandleif.hh:77
InterfaceType
Parameter to be used for the communication functions.
Definition: gridenums.hh:86
Specialize with 'true' if implementation guarantees conforming level grids. (default=false) ...
Definition: common/capabilities.hh:105
Mesh entities of codimension 0 ("elements") allow to visit all intersections with "neighboring" eleme...
Definition: common/grid.hh:347
Grid::Traits::Communication Communication
type of the communication
Definition: albertagrid/gridview.hh:257
std::remove_const< GridImp >::type Grid
type of the grid
Definition: albertagrid/gridview.hh:34
Implementation of the IntersectionIterator for AlbertaGrid.
static constexpr int dimension
The dimension of the grid.
Definition: common/grid.hh:387
Grid::Traits::template Codim< cd >::Entity Entity
Definition: albertagrid/gridview.hh:265
static constexpr bool conforming
Definition: albertagrid/gridview.hh:101
void communicate([[maybe_unused]] CommDataHandleIF< DataHandleImp, DataType > &data, [[maybe_unused]] InterfaceType iftype, [[maybe_unused]] CommunicationDirection dir) const
Definition: albertagrid/gridview.hh:226
Grid::Traits::template Codim< cd >::template Partition< All_Partition >::LevelIterator Iterator
Definition: albertagrid/gridview.hh:52
Traits::Grid Grid
type of the grid
Definition: albertagrid/gridview.hh:83
Grid::template Codim< cd >::Geometry Geometry
Definition: albertagrid/gridview.hh:56
AlbertaLevelGridView< GridImp > GridViewImp
Definition: albertagrid/gridview.hh:31
Definition: albertagrid/gridview.hh:29
AlbertaLevelGridView(const Grid &grid, int level)
Definition: albertagrid/gridview.hh:109
Codim< cd >::template Partition< pit >::Iterator begin() const
obtain begin iterator for this view
Definition: albertagrid/gridview.hh:168
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:132
Traits::Communication Communication
type of the communication
Definition: albertagrid/gridview.hh:95
Grid::Traits::template Codim< cd >::template Partition< All_Partition >::LeafIterator Iterator
Definition: albertagrid/gridview.hh:263
int overlapSize([[maybe_unused]] int codim) const
Return size of the overlap region for a given codim on the grid view.
Definition: albertagrid/gridview.hh:430
Definition: albertagrid/intersectioniterator.hh:36
Traits::IndexSet IndexSet
type of the index set
Definition: albertagrid/gridview.hh:86
Grid::template Codim< cd >::Geometry Geometry
Definition: albertagrid/gridview.hh:267
A set of traits classes to store static information about grid implementation.
Codim< cd >::template Partition< pit >::Iterator begin() const
obtain begin iterator for this view
Definition: albertagrid/gridview.hh:376
Traits::IntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: albertagrid/gridview.hh:303
Grid::template Codim< cd >::LocalGeometry LocalGeometry
Definition: albertagrid/gridview.hh:269
Definition: albertagrid/gridview.hh:260
const Communication & comm() const
obtain communication object
Definition: albertagrid/gridview.hh:213
Define types needed to iterate over entities of a given partition type.
Definition: albertagrid/gridview.hh:62
Grid::Traits::Communication Communication
type of the communication
Definition: albertagrid/gridview.hh:47
Codim< cd >::template Partition< pit >::Iterator end() const
obtain end iterator for this view
Definition: albertagrid/gridview.hh:390
Definition: albertagrid/gridview.hh:25
Grid::template Codim< cd >::template Partition< pit >::LevelIterator Iterator
iterator over a given codim and partition type
Definition: albertagrid/gridview.hh:66