3 #ifndef DUNE_POLYHEDRALGRID_GRIDVIEW_HH
4 #define DUNE_POLYHEDRALGRID_GRIDVIEW_HH
7 #include <dune/common/typetraits.hh>
10 #include <dune/grid/common/capabilities.hh>
11 #include <dune/grid/common/gridview.hh>
14 #include <dune/grid/polyhedralgrid/indexset.hh>
15 #include <dune/grid/polyhedralgrid/intersection.hh>
16 #include <dune/grid/polyhedralgrid/intersectioniterator.hh>
17 #include <dune/grid/polyhedralgrid/iterator.hh>
25 template<
int dim,
int dimworld, PartitionIteratorType defaultpitype >
28 template<
int dim,
int dimworld, PartitionIteratorType ptype >
35 template<
int dim,
int dimworld, PartitionIteratorType defaultpitype >
43 typedef typename Traits::Grid
Grid;
44 typedef typename Traits::IndexSet
IndexSet;
45 typedef typename Traits::Intersection Intersection;
46 typedef typename Traits::IntersectionIterator IntersectionIterator;
47 typedef typename Traits::CollectiveCommunication CollectiveCommunication;
51 :
public Traits::template
Codim< codim >
54 static const bool conforming = Traits :: conforming;
55 static const PartitionIteratorType pitype = Traits :: pitype;
60 static_cast<const void>(level);
63 const Grid &grid ()
const
69 const IndexSet &indexSet ()
const
71 return grid().leafIndexSet();
74 int size (
int codim )
const
76 return grid().
size( codim );
79 int size (
const GeometryType &type )
const
81 return grid().
size( type );
85 typename Codim< codim >::Iterator begin ()
const
87 return begin< codim, defaultpitype >();
90 template<
int codim, PartitionIteratorType pit >
91 typename Codim< codim >::template Partition< pit >::Iterator begin ()
const
93 typedef typename Traits::template Codim< codim >::template Partition< pit >::IteratorImpl Impl;
94 return Impl( grid().extraData(),
true );
98 typename Codim< codim >::Iterator end ()
const
100 return end< codim, defaultpitype >();
103 template<
int codim, PartitionIteratorType pit >
104 typename Codim< codim >::template Partition< pit >::Iterator end ()
const
106 typedef typename Traits::template Codim< codim >::template Partition< pit >::IteratorImpl Impl;
107 return Impl( grid().extraData(),
false );
110 IntersectionIterator ibegin (
const typename Codim< 0 >::Entity &entity )
const
112 typedef typename Traits::IntersectionIteratorImpl IntersectionIteratorImpl;
113 return IntersectionIteratorImpl( grid().extraData(), entity.seed(),
true);
116 IntersectionIterator iend (
const typename Codim< 0 >::Entity &entity )
const
118 typedef typename Traits::IntersectionIteratorImpl IntersectionIteratorImpl;
119 return IntersectionIteratorImpl( grid().extraData(), entity.seed(),
false);
122 const CollectiveCommunication &comm ()
const
124 return grid().
comm();
127 int overlapSize (
int codim )
const
132 int ghostSize (
int codim )
const
137 template<
class DataHandle,
class Data >
138 void communicate ( CommDataHandleIF< DataHandle, Data > &dataHandle,
139 InterfaceType interface,
140 CommunicationDirection direction )
const
151 template<
int dim,
int dimworld, PartitionIteratorType ptype >
152 struct PolyhedralGridViewTraits
154 typedef PolyhedralGrid< dim, dimworld > Grid;
155 static const PartitionIteratorType pitype = ptype;
157 typedef PolyhedralGridView< dim, dimworld, pitype > GridViewImp;
158 typedef PolyhedralGridIndexSet< Grid::dimension, Grid::dimensionworld > IndexSet;
160 typedef PolyhedralGridIntersection< const Grid > IntersectionImpl;
161 typedef PolyhedralGridIntersectionIterator< const Grid > IntersectionIteratorImpl;
163 #if DUNE_VERSION_NEWER(DUNE_GRID,2,3)
164 typedef Dune::Intersection< const Grid, IntersectionImpl > Intersection;
165 typedef Dune::IntersectionIterator< const Grid, IntersectionIteratorImpl, IntersectionImpl > IntersectionIterator;
167 typedef Dune::Intersection< const Grid, PolyhedralGridIntersection > Intersection;
168 typedef Dune::IntersectionIterator< const Grid, PolyhedralGridIntersectionIterator, PolyhedralGridIntersection > IntersectionIterator;
173 template<
int codim >
176 typedef typename Grid::Traits::template Codim< codim >::Entity Entity;
177 typedef typename Grid::Traits::template Codim< codim >::EntityPointer EntityPointer;
179 typedef typename Grid::template Codim< codim >::Geometry Geometry;
180 typedef typename Grid::template Codim< codim >::LocalGeometry LocalGeometry;
182 template< PartitionIteratorType pit >
186 typedef Dune::EntityIterator< codim, const Grid, IteratorImpl > Iterator;
189 typedef typename Partition< pitype >::Iterator Iterator;
192 static const bool conforming =
false;
197 #endif // #ifndef DUNE_POLYHEDRALGRID_GRIDVIEW_HH
Definition: gridview.hh:26
Definition: gridview.hh:183
int overlapSize(int) const
obtain size of overlap region for the leaf grid
Definition: grid.hh:560
Definition: iterator.hh:19
const CollectiveCommunication & comm() const
obtain CollectiveCommunication object
Definition: grid.hh:644
int size(int, int codim) const
obtain number of entites on a level
Definition: grid.hh:372
Definition: gridview.hh:29
Definition: gridview.hh:50
identical grid wrapper
Definition: declaration.hh:10
Traits::CollectiveCommunication CollectiveCommunication
communicator with all other processes having some part of the grid
Definition: grid.hh:295
Definition: indexset.hh:22
int ghostSize(int codim) const
obtain size of ghost region for the leaf grid
Definition: grid.hh:569
Definition: gridview.hh:174