dune-grid  2.5-git
defaultgridview.hh
Go to the documentation of this file.
1 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi: set et ts=4 sw=2 sts=2:
3 #ifndef DUNE_GRID_COMMON_DEFAULTGRIDVIEW_HH
4 #define DUNE_GRID_COMMON_DEFAULTGRIDVIEW_HH
5 
6 #include <dune/common/typetraits.hh>
7 #include <dune/common/exceptions.hh>
8 
11 
12 namespace Dune
13 {
14 
15  template< class GridImp >
17 
18  template< class GridImp >
20 
21 
22  template< class GridImp >
24  {
26 
28  typedef typename std::remove_const<GridImp>::type Grid;
29 
31  typedef typename Grid :: Traits :: LevelIndexSet IndexSet;
32 
34  typedef typename Grid :: Traits :: LevelIntersection Intersection;
35 
37  typedef typename Grid :: Traits :: LevelIntersectionIterator
39 
41  typedef typename Grid :: Traits :: CollectiveCommunication CollectiveCommunication;
42 
43  template< int cd >
44  struct Codim
45  {
46  typedef typename Grid :: Traits
47  :: template Codim< cd > :: template Partition< All_Partition > :: LevelIterator
49 
50  typedef typename Grid :: Traits :: template Codim< cd > :: Entity Entity;
51 
52  typedef typename Grid :: template Codim< cd > :: Geometry Geometry;
53  typedef typename Grid :: template Codim< cd > :: LocalGeometry
55 
57  template< PartitionIteratorType pit >
58  struct Partition
59  {
61  typedef typename Grid :: template Codim< cd >
62  :: template Partition< pit > :: LevelIterator
64  };
65  };
66 
67  enum { conforming = Capabilities :: isLevelwiseConforming< Grid > :: v };
68  };
69 
70 
71  template< class GridImp >
73  {
74  typedef DefaultLevelGridView< GridImp > ThisType;
75 
76  public:
78 
80  typedef typename Traits::Grid Grid;
81 
83  typedef typename Traits :: IndexSet IndexSet;
84 
86  typedef typename Traits :: Intersection Intersection;
87 
89  typedef typename Traits :: IntersectionIterator IntersectionIterator;
90 
92  typedef typename Traits :: CollectiveCommunication CollectiveCommunication;
93 
95  template< int cd >
96  struct Codim : public Traits :: template Codim<cd> {};
97 
99 
100  DefaultLevelGridView ( const Grid &grid, int level )
101  : grid_( &grid ),
102  level_( level )
103  {}
104 
106  const Grid &grid () const
107  {
108  assert( grid_ );
109  return *grid_;
110  }
111 
113  const IndexSet &indexSet () const
114  {
115  return grid().levelIndexSet( level_ );
116  }
117 
119  int size ( int codim ) const
120  {
121  return grid().size( level_, codim );
122  }
123 
125  int size ( const GeometryType &type ) const
126  {
127  return grid().size( level_, type );
128  }
129 
131  template< int cd >
132  typename Codim< cd > :: Iterator begin () const
133  {
134  return grid().template lbegin< cd, All_Partition >( level_ );
135  }
136 
138  template< int cd, PartitionIteratorType pit >
139  typename Codim< cd > :: template Partition< pit > :: Iterator begin () const
140  {
141  return grid().template lbegin< cd, pit >( level_ );
142  }
143 
145  template< int cd >
146  typename Codim< cd > :: Iterator end () const
147  {
148  return grid().template lend< cd, All_Partition >( level_ );
149  }
150 
152  template< int cd, PartitionIteratorType pit >
153  typename Codim< cd > :: template Partition< pit > :: Iterator end () const
154  {
155  return grid().template lend< cd, pit >( level_ );
156  }
157 
159  IntersectionIterator
160  ibegin ( const typename Codim< 0 > :: Entity &entity ) const
161  {
162  return entity.impl().ilevelbegin();
163  }
164 
166  IntersectionIterator
167  iend ( const typename Codim< 0 > :: Entity &entity ) const
168  {
169  return entity.impl().ilevelend();
170  }
171 
173  const CollectiveCommunication &comm () const
174  {
175  return grid().comm();
176  }
177 
179  int overlapSize(int codim) const
180  {
181  return grid().overlapSize(level_, codim);
182  }
183 
185  int ghostSize(int codim) const
186  {
187  return grid().ghostSize(level_, codim);
188  }
189 
191  template< class DataHandleImp, class DataType >
193  InterfaceType iftype,
194  CommunicationDirection dir ) const
195  {
196  return grid().communicate( data, iftype, dir, level_ );
197  }
198 
199  private:
200  const Grid *grid_;
201  int level_;
202  };
203 
204 
205  template< class GridImp >
208 
210  typedef typename std::remove_const<GridImp>::type Grid;
211 
213  typedef typename Grid :: Traits :: LeafIndexSet IndexSet;
214 
216  typedef typename Grid :: Traits :: LeafIntersection Intersection;
217 
219  typedef typename Grid :: Traits :: LeafIntersectionIterator
221 
223  typedef typename Grid :: Traits :: CollectiveCommunication CollectiveCommunication;
224 
225  template< int cd >
226  struct Codim
227  {
228  typedef typename Grid :: Traits
229  :: template Codim< cd > :: template Partition< All_Partition > :: LeafIterator
231 
232  typedef typename Grid :: Traits :: template Codim< cd > :: Entity Entity;
233 
234  typedef typename Grid :: template Codim< cd > :: Geometry Geometry;
235  typedef typename Grid :: template Codim< cd > :: LocalGeometry
237 
239  template <PartitionIteratorType pit >
240  struct Partition
241  {
243  typedef typename Grid :: template Codim< cd >
244  :: template Partition< pit > :: LeafIterator
246  };
247  };
248 
249  enum { conforming = Capabilities :: isLeafwiseConforming< Grid > :: v };
250  };
251 
252 
253  template< class GridImp >
254  class DefaultLeafGridView
255  {
256  typedef DefaultLeafGridView< GridImp > ThisType;
257 
258  public:
260 
262  typedef typename Traits::Grid Grid;
263 
265  typedef typename Traits :: IndexSet IndexSet;
266 
268  typedef typename Traits :: Intersection Intersection;
269 
271  typedef typename Traits :: IntersectionIterator IntersectionIterator;
272 
274  typedef typename Traits :: CollectiveCommunication CollectiveCommunication;
275 
277  template< int cd >
278  struct Codim : public Traits :: template Codim<cd> {};
279 
281 
282  public:
283  DefaultLeafGridView ( const Grid &grid )
284  : grid_( &grid )
285  {}
286 
288  const Grid &grid () const
289  {
290  assert( grid_ );
291  return *grid_;
292  }
293 
295  const IndexSet &indexSet () const
296  {
297  return grid().leafIndexSet();
298  }
299 
301  int size ( int codim ) const
302  {
303  return grid().size( codim );
304  }
305 
307  int size ( const GeometryType &type ) const
308  {
309  return grid().size( type );
310  }
311 
313  template< int cd >
314  typename Codim< cd > :: Iterator begin () const
315  {
316  return grid().template leafbegin< cd, All_Partition >();
317  }
318 
320  template< int cd, PartitionIteratorType pit >
321  typename Codim< cd > :: template Partition< pit > :: Iterator begin () const
322  {
323  return grid().template leafbegin< cd, pit >();
324  }
325 
327  template< int cd >
328  typename Codim< cd > :: Iterator end () const
329  {
330  return grid().template leafend< cd, All_Partition >();
331  }
332 
334  template< int cd, PartitionIteratorType pit >
335  typename Codim< cd > :: template Partition< pit > :: Iterator end () const
336  {
337  return grid().template leafend< cd, pit >();
338  }
339 
341  IntersectionIterator
342  ibegin ( const typename Codim< 0 > :: Entity &entity ) const
343  {
344  return entity.impl().ileafbegin();
345  }
346 
348  IntersectionIterator
349  iend ( const typename Codim< 0 > :: Entity &entity ) const
350  {
351  return entity.impl().ileafend();
352  }
353 
355  const CollectiveCommunication &comm () const
356  {
357  return grid().comm();
358  }
359 
361  int overlapSize(int codim) const
362  {
363  return grid().overlapSize(codim);
364  }
365 
367  int ghostSize(int codim) const
368  {
369  return grid().ghostSize(codim);
370  }
371 
373  template< class DataHandleImp, class DataType >
375  InterfaceType iftype,
376  CommunicationDirection dir ) const
377  {
378  return grid().communicate( data, iftype, dir );
379  }
380 
381  private:
382  const Grid *grid_;
383  };
384 
385 }
386 
387 #endif
IntersectionIterator ibegin(const typename Codim< 0 > ::Entity &entity) const
obtain begin intersection iterator with respect to this view
Definition: defaultgridview.hh:342
IntersectionIterator ibegin(const typename Codim< 0 > ::Entity &entity) const
obtain begin intersection iterator with respect to this view
Definition: defaultgridview.hh:160
Codim< cd >::template Partition< pit >::Iterator end() const
obtain end iterator for this view
Definition: defaultgridview.hh:153
Grid ::Traits ::LeafIndexSet IndexSet
type of the index set
Definition: defaultgridview.hh:213
Codim< cd >::Iterator begin() const
obtain begin iterator for this view
Definition: defaultgridview.hh:132
Grid ::template Codim< cd >::Geometry Geometry
Definition: defaultgridview.hh:234
Traits ::Intersection Intersection
type of the intersection
Definition: defaultgridview.hh:268
Codim< cd >::template Partition< pit >::Iterator begin() const
obtain begin iterator for this view
Definition: defaultgridview.hh:139
Traits ::Intersection Intersection
type of the intersection
Definition: defaultgridview.hh:86
Grid ::template Codim< cd >::Geometry Geometry
Definition: defaultgridview.hh:52
Codim< cd >::template Partition< pit >::Iterator end() const
obtain end iterator for this view
Definition: defaultgridview.hh:335
GeometryType
Type representing VTK&#39;s entity geometry types.
Definition: common.hh:178
Traits ::IndexSet IndexSet
type of the index set
Definition: defaultgridview.hh:265
CommunicationDirection
Define a type for communication direction parameter.
Definition: gridenums.hh:168
Grid ::Traits ::template Codim< cd >::Entity Entity
Definition: defaultgridview.hh:232
Grid ::Traits ::LevelIntersection Intersection
type of the intersection
Definition: defaultgridview.hh:34
Grid ::Traits ::LevelIntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: defaultgridview.hh:38
Traits::Grid Grid
type of the grid
Definition: defaultgridview.hh:80
const IndexSet & indexSet() const
obtain the index set
Definition: defaultgridview.hh:295
Codim< cd >::template Partition< pit >::Iterator begin() const
obtain begin iterator for this view
Definition: defaultgridview.hh:321
int ghostSize(int codim) const
Return size of the ghost region for a given codim on the grid view.
Definition: defaultgridview.hh:185
Traits ::IntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: defaultgridview.hh:89
void communicate(CommDataHandleIF< DataHandleImp, DataType > &data, InterfaceType iftype, CommunicationDirection dir) const
Definition: defaultgridview.hh:192
Grid ::Traits ::CollectiveCommunication CollectiveCommunication
type of the collective communication
Definition: defaultgridview.hh:41
Output conforming data.
Definition: common.hh:70
Definition: defaultgridview.hh:44
const IndexSet & indexSet() const
obtain the index set
Definition: defaultgridview.hh:113
Grid ::Traits ::LevelIndexSet IndexSet
type of the index set
Definition: defaultgridview.hh:31
Grid ::Traits ::CollectiveCommunication CollectiveCommunication
type of the collective communication
Definition: defaultgridview.hh:223
Codim< cd >::Iterator end() const
obtain end iterator for this view
Definition: defaultgridview.hh:328
const Grid & grid() const
obtain a const reference to the underlying hierarchic grid
Definition: defaultgridview.hh:288
DefaultLeafGridView< GridImp > GridViewImp
Definition: defaultgridview.hh:207
DefaultLevelGridViewTraits< GridImp > Traits
Definition: defaultgridview.hh:77
int overlapSize(int codim) const
Return size of the overlap region for a given codim on the grid view.
Definition: defaultgridview.hh:179
Define types needed to iterate over entities of a given partition type.
Definition: defaultgridview.hh:240
DefaultLevelGridView(const Grid &grid, int level)
Definition: defaultgridview.hh:100
Grid ::Traits ::LeafIntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: defaultgridview.hh:220
Definition: defaultgridview.hh:16
Grid ::template Codim< cd >::LocalGeometry LocalGeometry
Definition: defaultgridview.hh:54
A set of traits classes to store static information about grid implementation.
DefaultLeafGridView(const Grid &grid)
Definition: defaultgridview.hh:283
Traits::Grid Grid
type of the grid
Definition: defaultgridview.hh:262
const CollectiveCommunication & comm() const
obtain collective communication object
Definition: defaultgridview.hh:173
Include standard header files.
Definition: agrid.hh:59
Codim Structure.
Definition: defaultgridview.hh:96
Definition: defaultgridview.hh:23
Traits ::IndexSet IndexSet
type of the index set
Definition: defaultgridview.hh:83
int overlapSize(int codim) const
Return size of the overlap region for a given codim on the grid view.
Definition: defaultgridview.hh:361
CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
Definition: datahandleif.hh:72
Definition: defaultgridview.hh:67
int size(int codim) const
obtain number of entities in a given codimension
Definition: defaultgridview.hh:119
Traits ::CollectiveCommunication CollectiveCommunication
type of the collective communication
Definition: defaultgridview.hh:92
std::remove_const< GridImp >::type Grid
type of the grid
Definition: defaultgridview.hh:210
const Grid & grid() const
obtain a const reference to the underlying hierarchic grid
Definition: defaultgridview.hh:106
Grid ::template Codim< cd >::template Partition< pit >::LeafIterator Iterator
iterator over a given codim and partition type
Definition: defaultgridview.hh:245
DefaultLevelGridView< GridImp > GridViewImp
Definition: defaultgridview.hh:25
Definition: defaultgridview.hh:226
int size(const GeometryType &type) const
obtain number of entities with a given geometry type
Definition: defaultgridview.hh:125
Grid ::Traits ::template Codim< cd >::template Partition< All_Partition >::LevelIterator Iterator
Definition: defaultgridview.hh:48
Grid ::template Codim< cd >::template Partition< pit >::LevelIterator Iterator
iterator over a given codim and partition type
Definition: defaultgridview.hh:63
Define types needed to iterate over entities of a given partition type.
Definition: defaultgridview.hh:58
Definition: defaultgridview.hh:19
IntersectionIterator iend(const typename Codim< 0 > ::Entity &entity) const
obtain end intersection iterator with respect to this view
Definition: defaultgridview.hh:167
Codim< cd >::Iterator begin() const
obtain begin iterator for this view
Definition: defaultgridview.hh:314
const CollectiveCommunication & comm() const
obtain collective communication object
Definition: defaultgridview.hh:355
Codim Structure.
Definition: defaultgridview.hh:278
int ghostSize(int codim) const
Return size of the ghost region for a given codim on the grid view.
Definition: defaultgridview.hh:367
Grid ::Traits ::LeafIntersection Intersection
type of the intersection
Definition: defaultgridview.hh:216
Grid ::Traits ::template Codim< cd >::Entity Entity
Definition: defaultgridview.hh:50
Definition: defaultgridview.hh:206
DefaultLeafGridViewTraits< GridImp > Traits
Definition: defaultgridview.hh:259
void communicate(CommDataHandleIF< DataHandleImp, DataType > &data, InterfaceType iftype, CommunicationDirection dir) const
Definition: defaultgridview.hh:374
int size(int codim) const
obtain number of entities in a given codimension
Definition: defaultgridview.hh:301
int size(const GeometryType &type) const
obtain number of entities with a given geometry type
Definition: defaultgridview.hh:307
Traits ::IntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: defaultgridview.hh:271
InterfaceType
Parameter to be used for the communication functions.
Definition: gridenums.hh:84
IntersectionIterator iend(const typename Codim< 0 > ::Entity &entity) const
obtain end intersection iterator with respect to this view
Definition: defaultgridview.hh:349
Codim< cd >::Iterator end() const
obtain end iterator for this view
Definition: defaultgridview.hh:146
Grid ::template Codim< cd >::LocalGeometry LocalGeometry
Definition: defaultgridview.hh:236
Traits ::CollectiveCommunication CollectiveCommunication
type of the collective communication
Definition: defaultgridview.hh:274
Grid ::Traits ::template Codim< cd >::template Partition< All_Partition >::LeafIterator Iterator
Definition: defaultgridview.hh:230
std::remove_const< GridImp >::type Grid
type of the grid
Definition: defaultgridview.hh:28