3 #ifndef DUNE_ALBERTAGRID_GRIDVIEW_HH 4 #define DUNE_ALBERTAGRID_GRIDVIEW_HH 8 #include <dune/common/typetraits.hh> 9 #include <dune/common/exceptions.hh> 19 template<
class Gr
idImp >
22 template<
class Gr
idImp >
26 template<
class Gr
idImp >
32 typedef typename std::remove_const<GridImp>::type
Grid;
35 typedef typename Grid::Traits::LevelIndexSet
IndexSet;
41 typedef typename Grid::Traits::LevelIntersectionIterator
59 template< PartitionIteratorType pit >
72 template<
class Gr
idImp >
109 indexSet_( &(grid.levelIndexSet( level )) ),
116 : grid_( other.grid_ ),
117 indexSet_( other.indexSet_ ),
118 level_( other.level_ )
122 ThisType &operator= (
const ThisType & other)
125 indexSet_ = other.indexSet_;
126 level_ = other.level_;
145 return grid().size( level_, codim );
151 return grid().size( level_, type );
158 return grid().template lbegin< cd, All_Partition >( level_ );
162 template<
int cd, PartitionIteratorType pit >
165 return grid().template lbegin< cd, pit >( level_ );
172 return grid().template lend< cd, All_Partition >( level_ );
176 template<
int cd, PartitionIteratorType pit >
179 return grid().template lend< cd, pit >( level_ );
186 if( grid().maxLevel() == 0)
189 return IntersectionIteratorImpl( Grid::getRealImplementation( entity ), begin );
193 DUNE_THROW( NotImplemented,
"method ibegin not implemented on LevelGridView for AlbertaGrid." );
195 return IntersectionIteratorImpl( Grid::getRealImplementation( entity ), end );
204 return IntersectionIteratorImpl( Grid::getRealImplementation( entity ), end );
208 const CollectiveCommunication &
comm ()
const 210 return grid().comm();
220 template<
class DataHandleImp,
class DataType >
228 const IndexSet *indexSet_;
233 template<
class Gr
idImp >
239 typedef typename std::remove_const<GridImp>::type
Grid;
242 typedef typename Grid::Traits::LeafIndexSet
IndexSet;
248 typedef typename Grid::Traits::LeafIntersectionIterator
267 template <PartitionIteratorType pit >
280 template<
class Gr
idImp >
317 indexSet_( &(grid.leafIndexSet()) )
323 : grid_( other.grid_ ),
324 indexSet_( other.indexSet_ )
328 ThisType &operator= (
const ThisType & other)
331 indexSet_ = other.indexSet_;
350 return grid().size( codim );
356 return grid().size( type );
363 return grid().template leafbegin< cd, All_Partition >();
367 template<
int cd, PartitionIteratorType pit >
370 return grid().template leafbegin< cd, pit >();
377 return grid().template leafend< cd, All_Partition >();
381 template<
int cd, PartitionIteratorType pit >
384 return grid().template leafend< cd, pit >();
391 const ElementInfo elementInfo = Grid::getRealImplementation( entity ).elementInfo();
392 assert( !!elementInfo );
397 if( elementInfo.
elInfo().opp_vertex[ i ] == 127 )
398 DUNE_THROW( NotImplemented,
"AlbertaGrid: Intersections on outside entities are not fully implemented, yet." );
400 #endif // #ifndef NDEBUG 403 return IntersectionIteratorImpl( Grid::getRealImplementation( entity ), begin );
410 assert( !!Grid::getRealImplementation( entity ).elementInfo() );
412 return IntersectionIteratorImpl( Grid::getRealImplementation( entity ), end );
416 const CollectiveCommunication &
comm ()
const 418 return grid().comm();
428 template<
class DataHandleImp,
class DataType >
436 const IndexSet *indexSet_;
441 #endif // #if HAVE_ALBERTA 442 #endif // #ifndef DUNE_ALBERTAGRID_GRIDVIEW_HH Codim< cd >::template Partition< pit >::Iterator begin() const
obtain begin iterator for this view
Definition: albertagrid/gridview.hh:368
Include standard header files.
Definition: agrid.hh:58
Traits::CollectiveCommunication CollectiveCommunication
type of the collective communication
Definition: albertagrid/gridview.hh:93
Codim< cd >::Iterator end() const
obtain end iterator for this view
Definition: albertagrid/gridview.hh:375
Grid::template Codim< cd >::LocalGeometry LocalGeometry
Definition: albertagrid/gridview.hh:264
const Grid & grid() const
obtain a const reference to the underlying hierarchic grid
Definition: albertagrid/gridview.hh:131
Traits::IndexSet IndexSet
type of the index set
Definition: albertagrid/gridview.hh:292
Grid::Traits::template Codim< cd >::template Partition< All_Partition >::LeafIterator Iterator
Definition: albertagrid/gridview.hh:258
Traits::IntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: albertagrid/gridview.hh:90
Traits::CollectiveCommunication CollectiveCommunication
type of the collective communication
Definition: albertagrid/gridview.hh:301
Grid::Traits::CollectiveCommunication CollectiveCommunication
type of the collective communication
Definition: albertagrid/gridview.hh:45
Definition: albertagrid/gridview.hh:234
Implementation of the IntersectionIterator for AlbertaGrid.
Definition: albertagrid/gridview.hh:48
int size(int codim) const
obtain number of entities in a given codimension
Definition: albertagrid/gridview.hh:348
void communicate(CommDataHandleIF< DataHandleImp, DataType > &data, InterfaceType iftype, CommunicationDirection dir) const
Definition: albertagrid/gridview.hh:221
int size(const GeometryType &type) const
obtain number of entities with a given geometry type
Definition: albertagrid/gridview.hh:354
Grid::Traits::LevelIntersection Intersection
type of the intersection
Definition: albertagrid/gridview.hh:38
const Grid & grid() const
obtain a const reference to the underlying hierarchic grid
Definition: albertagrid/gridview.hh:336
int ghostSize(int codim) const
Return size of the ghost region for a given codim on the grid view.
Definition: albertagrid/gridview.hh:217
Define types needed to iterate over entities of a given partition type.
Definition: albertagrid/gridview.hh:268
Grid::Traits::template Codim< cd >::Entity Entity
Definition: albertagrid/gridview.hh:52
Specialize with 'true' if implementation guarantees conforming level grids. (default=false) ...
Definition: common/capabilities.hh:103
int size(const GeometryType &type) const
obtain number of entities with a given geometry type
Definition: albertagrid/gridview.hh:149
Grid::template Codim< cd >::LocalGeometry LocalGeometry
Definition: albertagrid/gridview.hh:56
Codim Structure.
Definition: albertagrid/gridview.hh:97
IntersectionIterator iend(const typename Codim< 0 >::Entity &entity) const
obtain end intersection iterator with respect to this view
Definition: albertagrid/gridview.hh:201
Traits::IntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: albertagrid/gridview.hh:298
Codim< cd >::Iterator begin() const
obtain begin iterator for this view
Definition: albertagrid/gridview.hh:156
IntersectionIterator ibegin(const typename Codim< 0 >::Entity &entity) const
obtain begin intersection iterator with respect to this view
Definition: albertagrid/gridview.hh:184
Definition: albertagrid/gridview.hh:27
AlbertaLevelGridView(const Grid &grid, int level)
Definition: albertagrid/gridview.hh:107
CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
Definition: datahandleif.hh:75
Grid::template Codim< cd >::Geometry Geometry
Definition: albertagrid/gridview.hh:262
int size(int codim) const
obtain number of entities in a given codimension
Definition: albertagrid/gridview.hh:143
Definition: albertagrid/gridview.hh:255
Grid::template Codim< cd >::template Partition< pit >::LevelIterator Iterator
iterator over a given codim and partition type
Definition: albertagrid/gridview.hh:64
ALBERTA EL_INFO & elInfo() const
Definition: elementinfo.hh:742
Definition: albertagrid/intersectioniterator.hh:34
int ghostSize(int codim) const
Return size of the ghost region for a given codim on the grid view.
Definition: albertagrid/gridview.hh:425
Grid::Traits::template Codim< cd >::Entity Entity
Definition: albertagrid/gridview.hh:260
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:178
Specialize with 'true' if implementation guarantees a conforming leaf grid. (default=false) ...
Definition: common/capabilities.hh:112
AlbertaLevelGridView< GridImp > GridViewImp
Definition: albertagrid/gridview.hh:29
Definition: albertagrid/gridview.hh:23
Grid::Traits::LeafIntersection Intersection
type of the intersection
Definition: albertagrid/gridview.hh:245
const CollectiveCommunication & comm() const
obtain collective communication object
Definition: albertagrid/gridview.hh:208
AlbertaLeafGridView< GridImp > GridViewImp
Definition: albertagrid/gridview.hh:236
std::remove_const< GridImp >::type Grid
type of the grid
Definition: albertagrid/gridview.hh:32
const CollectiveCommunication & comm() const
obtain collective communication object
Definition: albertagrid/gridview.hh:416
Definition: albertagrid/intersectioniterator.hh:33
Codim< cd >::Iterator begin() const
obtain begin iterator for this view
Definition: albertagrid/gridview.hh:361
Grid::Traits::LeafIndexSet IndexSet
type of the index set
Definition: albertagrid/gridview.hh:242
Definition: albertagrid/entity.hh:30
Definition: albertagrid/gridview.hh:68
Codim< cd >::template Partition< pit >::Iterator end() const
obtain end iterator for this view
Definition: albertagrid/gridview.hh:382
int overlapSize(int codim) const
Return size of the overlap region for a given codim on the grid view.
Definition: albertagrid/gridview.hh:214
Codim< cd >::Iterator end() const
obtain end iterator for this view
Definition: albertagrid/gridview.hh:170
Traits::Grid Grid
type of the grid
Definition: albertagrid/gridview.hh:289
Definition: albertagrid/gridview.hh:20
const IndexSet & indexSet() const
obtain the index set
Definition: albertagrid/gridview.hh:137
AlbertaLeafGridView(const Grid &grid)
Definition: albertagrid/gridview.hh:315
A set of traits classes to store static information about grid implementation.
InterfaceType
Parameter to be used for the communication functions.
Definition: gridenums.hh:84
Grid::Traits::template Codim< cd >::template Partition< All_Partition >::LevelIterator Iterator
Definition: albertagrid/gridview.hh:50
AlbertaLevelGridViewTraits< GridImp > Traits
Definition: albertagrid/gridview.hh:78
AlbertaLeafGridViewTraits< GridImp > Traits
Definition: albertagrid/gridview.hh:286
IntersectionIterator iend(const typename Codim< 0 >::Entity &entity) const
obtain end intersection iterator with respect to this view
Definition: albertagrid/gridview.hh:408
int overlapSize(int codim) const
Return size of the overlap region for a given codim on the grid view.
Definition: albertagrid/gridview.hh:422
Grid::template Codim< cd >::template Partition< pit >::LeafIterator Iterator
iterator over a given codim and partition type
Definition: albertagrid/gridview.hh:272
CommunicationDirection
Define a type for communication direction parameter.
Definition: gridenums.hh:168
IntersectionIterator ibegin(const typename Codim< 0 >::Entity &entity) const
obtain begin intersection iterator with respect to this view
Definition: albertagrid/gridview.hh:389
void communicate(CommDataHandleIF< DataHandleImp, DataType > &data, InterfaceType iftype, CommunicationDirection dir) const
Definition: albertagrid/gridview.hh:429
const IndexSet & indexSet() const
obtain the index set
Definition: albertagrid/gridview.hh:342
Grid::Traits::LevelIntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: albertagrid/gridview.hh:42
Grid::Traits::LevelIndexSet IndexSet
type of the index set
Definition: albertagrid/gridview.hh:35
The dimension of the grid.
Definition: common/grid.hh:387
Define types needed to iterate over entities of a given partition type.
Definition: albertagrid/gridview.hh:60
std::remove_const< GridImp >::type Grid
type of the grid
Definition: albertagrid/gridview.hh:239
Grid::template Codim< cd >::Geometry Geometry
Definition: albertagrid/gridview.hh:54
Traits::Intersection Intersection
type of the intersection
Definition: albertagrid/gridview.hh:295
Grid::Traits::CollectiveCommunication CollectiveCommunication
type of the collective communication
Definition: albertagrid/gridview.hh:252
Output conforming data.
Definition: common.hh:70
Grid::Traits::LeafIntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: albertagrid/gridview.hh:249
Codim Structure.
Definition: albertagrid/gridview.hh:305
Definition: elementinfo.hh:40
Codim< cd >::template Partition< pit >::Iterator begin() const
obtain begin iterator for this view
Definition: albertagrid/gridview.hh:163
Traits::Grid Grid
type of the grid
Definition: albertagrid/gridview.hh:81
Traits::Intersection Intersection
type of the intersection
Definition: albertagrid/gridview.hh:87
Traits::IndexSet IndexSet
type of the index set
Definition: albertagrid/gridview.hh:84
Codim< cd >::template Partition< pit >::Iterator end() const
obtain end iterator for this view
Definition: albertagrid/gridview.hh:177