dune-grid  3.0-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_DEFAULTGRIDVIEW_HH
4 #define DUNE_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 >
72  class DefaultLevelGridView
73  {
74  typedef DefaultLevelGridView< GridImp > ThisType;
75 
76  public:
78 
80  typedef typename Traits::Grid Grid;
81 
83  typedef typename Traits :: IndexSet IndexSet;
84 
87 
90 
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 
105  // use default implementation of copy constructor and assignment operator
106 #if 0
107  DefaultLevelGridView ( const ThisType &other )
108  : grid_( other.grid_ ),
109  level_( other.level_ )
110  {}
111 
113  ThisType &operator= ( const ThisType & other)
114  {
115  grid_ = other.grid_;
116  level_ = other.level_;
117  }
118 #endif
119 
121  const Grid &grid () const
122  {
123  assert( grid_ );
124  return *grid_;
125  }
126 
128  const IndexSet &indexSet () const
129  {
130  return grid().levelIndexSet( level_ );
131  }
132 
134  int size ( int codim ) const
135  {
136  return grid().size( level_, codim );
137  }
138 
140  int size ( const GeometryType &type ) const
141  {
142  return grid().size( level_, type );
143  }
144 
146  template< int cd >
147  typename Codim< cd > :: Iterator begin () const
148  {
149  return grid().template lbegin< cd, All_Partition >( level_ );
150  }
151 
153  template< int cd, PartitionIteratorType pit >
154  typename Codim< cd > :: template Partition< pit > :: Iterator begin () const
155  {
156  return grid().template lbegin< cd, pit >( level_ );
157  }
158 
160  template< int cd >
161  typename Codim< cd > :: Iterator end () const
162  {
163  return grid().template lend< cd, All_Partition >( level_ );
164  }
165 
167  template< int cd, PartitionIteratorType pit >
168  typename Codim< cd > :: template Partition< pit > :: Iterator end () const
169  {
170  return grid().template lend< cd, pit >( level_ );
171  }
172 
175  ibegin ( const typename Codim< 0 > :: Entity &entity ) const
176  {
177  return entity.impl().ilevelbegin();
178  }
179 
182  iend ( const typename Codim< 0 > :: Entity &entity ) const
183  {
184  return entity.impl().ilevelend();
185  }
186 
189  {
190  return grid().comm();
191  }
192 
194  int overlapSize(int codim) const
195  {
196  return grid().overlapSize(level_, codim);
197  }
198 
200  int ghostSize(int codim) const
201  {
202  return grid().ghostSize(level_, codim);
203  }
204 
206  template< class DataHandleImp, class DataType >
208  InterfaceType iftype,
209  CommunicationDirection dir ) const
210  {
211  return grid().communicate( data, iftype, dir, level_ );
212  }
213 
214  private:
215  const Grid *grid_;
216  int level_;
217  };
218 
219 
220  template< class GridImp >
223 
225  typedef typename std::remove_const<GridImp>::type Grid;
226 
228  typedef typename Grid :: Traits :: LeafIndexSet IndexSet;
229 
231  typedef typename Grid :: Traits :: LeafIntersection Intersection;
232 
234  typedef typename Grid :: Traits :: LeafIntersectionIterator
236 
238  typedef typename Grid :: Traits :: CollectiveCommunication CollectiveCommunication;
239 
240  template< int cd >
241  struct Codim
242  {
243  typedef typename Grid :: Traits
244  :: template Codim< cd > :: template Partition< All_Partition > :: LeafIterator
246 
247  typedef typename Grid :: Traits :: template Codim< cd > :: Entity Entity;
248 
249  typedef typename Grid :: template Codim< cd > :: Geometry Geometry;
250  typedef typename Grid :: template Codim< cd > :: LocalGeometry
252 
254  template <PartitionIteratorType pit >
255  struct Partition
256  {
258  typedef typename Grid :: template Codim< cd >
259  :: template Partition< pit > :: LeafIterator
261  };
262  };
263 
264  enum { conforming = Capabilities :: isLeafwiseConforming< Grid > :: v };
265  };
266 
267 
268  template< class GridImp >
269  class DefaultLeafGridView
270  {
271  typedef DefaultLeafGridView< GridImp > ThisType;
272 
273  public:
275 
277  typedef typename Traits::Grid Grid;
278 
280  typedef typename Traits :: IndexSet IndexSet;
281 
284 
287 
290 
292  template< int cd >
293  struct Codim : public Traits :: template Codim<cd> {};
294 
296 
297  public:
299  : grid_( &grid )
300  {}
301 
303  const Grid &grid () const
304  {
305  assert( grid_ );
306  return *grid_;
307  }
308 
310  const IndexSet &indexSet () const
311  {
312  return grid().leafIndexSet();
313  }
314 
316  int size ( int codim ) const
317  {
318  return grid().size( codim );
319  }
320 
322  int size ( const GeometryType &type ) const
323  {
324  return grid().size( type );
325  }
326 
328  template< int cd >
329  typename Codim< cd > :: Iterator begin () const
330  {
331  return grid().template leafbegin< cd, All_Partition >();
332  }
333 
335  template< int cd, PartitionIteratorType pit >
336  typename Codim< cd > :: template Partition< pit > :: Iterator begin () const
337  {
338  return grid().template leafbegin< cd, pit >();
339  }
340 
342  template< int cd >
343  typename Codim< cd > :: Iterator end () const
344  {
345  return grid().template leafend< cd, All_Partition >();
346  }
347 
349  template< int cd, PartitionIteratorType pit >
350  typename Codim< cd > :: template Partition< pit > :: Iterator end () const
351  {
352  return grid().template leafend< cd, pit >();
353  }
354 
357  ibegin ( const typename Codim< 0 > :: Entity &entity ) const
358  {
359  return entity.impl().ileafbegin();
360  }
361 
364  iend ( const typename Codim< 0 > :: Entity &entity ) const
365  {
366  return entity.impl().ileafend();
367  }
368 
371  {
372  return grid().comm();
373  }
374 
376  int overlapSize(int codim) const
377  {
378  return grid().overlapSize(codim);
379  }
380 
382  int ghostSize(int codim) const
383  {
384  return grid().ghostSize(codim);
385  }
386 
388  template< class DataHandleImp, class DataType >
390  InterfaceType iftype,
391  CommunicationDirection dir ) const
392  {
393  return grid().communicate( data, iftype, dir );
394  }
395 
396  private:
397  const Grid *grid_;
398  };
399 
400 }
401 
402 #endif
Dune::DefaultLevelGridView::DefaultLevelGridView
DefaultLevelGridView(const Grid &grid, int level)
Definition: defaultgridview.hh:100
Dune::DefaultLeafGridView::IntersectionIterator
Traits ::IntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: defaultgridview.hh:286
Dune::DefaultLevelGridView::IntersectionIterator
Traits ::IntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: defaultgridview.hh:89
Dune::DefaultLevelGridViewTraits::Codim::Partition::Iterator
Grid ::template Codim< cd >::template Partition< pit >::LevelIterator Iterator
iterator over a given codim and partition type
Definition: defaultgridview.hh:63
Dune::DefaultLeafGridView::overlapSize
int overlapSize(int codim) const
Return size of the overlap region for a given codim on the grid view.
Definition: defaultgridview.hh:376
Dune::DefaultLevelGridViewTraits::GridViewImp
DefaultLevelGridView< GridImp > GridViewImp
Definition: defaultgridview.hh:25
Dune::DefaultLeafGridViewTraits::conforming
Definition: defaultgridview.hh:264
Dune::DefaultLeafGridViewTraits::Codim::Partition
Define types needed to iterate over entities of a given partition type.
Definition: defaultgridview.hh:255
Dune::DefaultLevelGridView::communicate
void communicate(CommDataHandleIF< DataHandleImp, DataType > &data, InterfaceType iftype, CommunicationDirection dir) const
Definition: defaultgridview.hh:207
Dune
Include standard header files.
Definition: agrid.hh:59
Dune::DefaultLevelGridView::begin
Codim< cd >::Iterator begin() const
obtain begin iterator for this view
Definition: defaultgridview.hh:147
Dune::DefaultLevelGridView::overlapSize
int overlapSize(int codim) const
Return size of the overlap region for a given codim on the grid view.
Definition: defaultgridview.hh:194
Dune::DefaultLeafGridViewTraits::CollectiveCommunication
Grid ::Traits ::CollectiveCommunication CollectiveCommunication
type of the collective communication
Definition: defaultgridview.hh:238
Dune::DefaultLevelGridViewTraits::conforming
Definition: defaultgridview.hh:67
Dune::DefaultLeafGridView::conforming
Definition: defaultgridview.hh:295
Dune::DefaultLevelGridViewTraits::Intersection
Grid ::Traits ::LevelIntersection Intersection
type of the intersection
Definition: defaultgridview.hh:34
Dune::IntersectionIterator
Mesh entities of codimension 0 ("elements") allow to visit all intersections with "neighboring" eleme...
Definition: common/grid.hh:345
Dune::DefaultLevelGridViewTraits::Codim
Definition: defaultgridview.hh:44
Dune::DefaultLevelGridView::ghostSize
int ghostSize(int codim) const
Return size of the ghost region for a given codim on the grid view.
Definition: defaultgridview.hh:200
Dune::DefaultLeafGridView::size
int size(int codim) const
obtain number of entities in a given codimension
Definition: defaultgridview.hh:316
Dune::VTK::GeometryType
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:178
Dune::DefaultLevelGridView::conforming
Definition: defaultgridview.hh:98
Dune::DefaultLevelGridViewTraits::Codim::Entity
Grid ::Traits ::template Codim< cd >::Entity Entity
Definition: defaultgridview.hh:50
Dune::DefaultLeafGridViewTraits::Codim::Geometry
Grid ::template Codim< cd >::Geometry Geometry
Definition: defaultgridview.hh:249
Dune::DefaultLeafGridViewTraits::Intersection
Grid ::Traits ::LeafIntersection Intersection
type of the intersection
Definition: defaultgridview.hh:231
Dune::DefaultLevelGridView::comm
const CollectiveCommunication & comm() const
obtain collective communication object
Definition: defaultgridview.hh:188
Dune::DefaultLevelGridView::Grid
Traits::Grid Grid
type of the grid
Definition: defaultgridview.hh:80
Dune::DefaultLeafGridViewTraits::Codim::Partition::Iterator
Grid ::template Codim< cd >::template Partition< pit >::LeafIterator Iterator
iterator over a given codim and partition type
Definition: defaultgridview.hh:260
Dune::DefaultLeafGridViewTraits::Codim
Definition: defaultgridview.hh:241
Dune::DefaultLevelGridViewTraits::Codim::Iterator
Grid ::Traits ::template Codim< cd >::template Partition< All_Partition >::LevelIterator Iterator
Definition: defaultgridview.hh:48
Dune::DefaultLeafGridView::end
Codim< cd >::template Partition< pit >::Iterator end() const
obtain end iterator for this view
Definition: defaultgridview.hh:350
Dune::DefaultLeafGridView::size
int size(const GeometryType &type) const
obtain number of entities with a given geometry type
Definition: defaultgridview.hh:322
Dune::InterfaceType
InterfaceType
Parameter to be used for the communication functions.
Definition: gridenums.hh:84
Dune::DefaultLevelGridViewTraits::Grid
std::remove_const< GridImp >::type Grid
type of the grid
Definition: defaultgridview.hh:28
Dune::DefaultLevelGridView::size
int size(int codim) const
obtain number of entities in a given codimension
Definition: defaultgridview.hh:134
Dune::DefaultLevelGridView::IndexSet
Traits ::IndexSet IndexSet
type of the index set
Definition: defaultgridview.hh:83
Dune::DefaultLeafGridView::iend
IntersectionIterator iend(const typename Codim< 0 > ::Entity &entity) const
obtain end intersection iterator with respect to this view
Definition: defaultgridview.hh:364
Dune::DefaultLeafGridView::IndexSet
Traits ::IndexSet IndexSet
type of the index set
Definition: defaultgridview.hh:280
Dune::DefaultLevelGridViewTraits::CollectiveCommunication
Grid ::Traits ::CollectiveCommunication CollectiveCommunication
type of the collective communication
Definition: defaultgridview.hh:41
Dune::DefaultLevelGridView::Codim
Codim Structure.
Definition: defaultgridview.hh:96
Dune::DefaultLevelGridView::grid
const Grid & grid() const
obtain a const reference to the underlying hierarchic grid
Definition: defaultgridview.hh:121
Dune::DefaultLeafGridView::end
Codim< cd >::Iterator end() const
obtain end iterator for this view
Definition: defaultgridview.hh:343
Dune::DefaultLeafGridView::Codim
Codim Structure.
Definition: defaultgridview.hh:293
Dune::DefaultLevelGridView::iend
IntersectionIterator iend(const typename Codim< 0 > ::Entity &entity) const
obtain end intersection iterator with respect to this view
Definition: defaultgridview.hh:182
Dune::Grid
Grid abstract base class.
Definition: common/grid.hh:373
Dune::DefaultLeafGridViewTraits
Definition: defaultgridview.hh:221
capabilities.hh
A set of traits classes to store static information about grid implementation.
Dune::DefaultLevelGridView::Traits
DefaultLevelGridViewTraits< GridImp > Traits
Definition: defaultgridview.hh:77
Dune::DefaultLeafGridView::DefaultLeafGridView
DefaultLeafGridView(const Grid &grid)
Definition: defaultgridview.hh:298
Dune::DefaultLevelGridViewTraits::Codim::Partition
Define types needed to iterate over entities of a given partition type.
Definition: defaultgridview.hh:58
Dune::DefaultLevelGridView::Intersection
Traits ::Intersection Intersection
type of the intersection
Definition: defaultgridview.hh:86
Dune::DefaultLeafGridViewTraits::Codim::LocalGeometry
Grid ::template Codim< cd >::LocalGeometry LocalGeometry
Definition: defaultgridview.hh:251
Dune::DefaultLeafGridView::indexSet
const IndexSet & indexSet() const
obtain the index set
Definition: defaultgridview.hh:310
Dune::DefaultLeafGridViewTraits::IntersectionIterator
Grid ::Traits ::LeafIntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: defaultgridview.hh:235
Dune::DefaultLeafGridViewTraits::Codim::Iterator
Grid ::Traits ::template Codim< cd >::template Partition< All_Partition >::LeafIterator Iterator
Definition: defaultgridview.hh:245
Dune::DefaultLevelGridViewTraits::IntersectionIterator
Grid ::Traits ::LevelIntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: defaultgridview.hh:38
Dune::DefaultLeafGridView::Intersection
Traits ::Intersection Intersection
type of the intersection
Definition: defaultgridview.hh:283
Dune::DefaultLeafGridViewTraits::Codim::Entity
Grid ::Traits ::template Codim< cd >::Entity Entity
Definition: defaultgridview.hh:247
Dune::DefaultLevelGridView::end
Codim< cd >::template Partition< pit >::Iterator end() const
obtain end iterator for this view
Definition: defaultgridview.hh:168
Dune::DefaultLevelGridView::indexSet
const IndexSet & indexSet() const
obtain the index set
Definition: defaultgridview.hh:128
Dune::DefaultLeafGridView::begin
Codim< cd >::template Partition< pit >::Iterator begin() const
obtain begin iterator for this view
Definition: defaultgridview.hh:336
Dune::DefaultLeafGridView::ibegin
IntersectionIterator ibegin(const typename Codim< 0 > ::Entity &entity) const
obtain begin intersection iterator with respect to this view
Definition: defaultgridview.hh:357
Dune::DefaultLeafGridView::begin
Codim< cd >::Iterator begin() const
obtain begin iterator for this view
Definition: defaultgridview.hh:329
Dune::DefaultLeafGridView::ghostSize
int ghostSize(int codim) const
Return size of the ghost region for a given codim on the grid view.
Definition: defaultgridview.hh:382
Dune::DefaultLevelGridViewTraits::Codim::Geometry
Grid ::template Codim< cd >::Geometry Geometry
Definition: defaultgridview.hh:52
Dune::DefaultLeafGridView::comm
const CollectiveCommunication & comm() const
obtain collective communication object
Definition: defaultgridview.hh:370
Dune::DefaultLevelGridViewTraits::IndexSet
Grid ::Traits ::LevelIndexSet IndexSet
type of the index set
Definition: defaultgridview.hh:31
Dune::DefaultLevelGridView::ibegin
IntersectionIterator ibegin(const typename Codim< 0 > ::Entity &entity) const
obtain begin intersection iterator with respect to this view
Definition: defaultgridview.hh:175
Dune::DefaultLevelGridViewTraits
Definition: defaultgridview.hh:23
Dune::DefaultLeafGridView::Traits
DefaultLeafGridViewTraits< GridImp > Traits
Definition: defaultgridview.hh:274
Dune::DefaultLeafGridViewTraits::IndexSet
Grid ::Traits ::LeafIndexSet IndexSet
type of the index set
Definition: defaultgridview.hh:228
Dune::DefaultLevelGridViewTraits::Codim::LocalGeometry
Grid ::template Codim< cd >::LocalGeometry LocalGeometry
Definition: defaultgridview.hh:54
Dune::DefaultLeafGridViewTraits::GridViewImp
DefaultLeafGridView< GridImp > GridViewImp
Definition: defaultgridview.hh:222
Dune::DefaultLeafGridView::CollectiveCommunication
Traits ::CollectiveCommunication CollectiveCommunication
type of the collective communication
Definition: defaultgridview.hh:289
Dune::DefaultLeafGridViewTraits::Grid
std::remove_const< GridImp >::type Grid
type of the grid
Definition: defaultgridview.hh:225
Dune::DefaultLevelGridView
Definition: defaultgridview.hh:16
Dune::DefaultLevelGridView::CollectiveCommunication
Traits ::CollectiveCommunication CollectiveCommunication
type of the collective communication
Definition: defaultgridview.hh:92
Dune::DefaultLevelGridView::size
int size(const GeometryType &type) const
obtain number of entities with a given geometry type
Definition: defaultgridview.hh:140
Dune::DefaultLevelGridView::end
Codim< cd >::Iterator end() const
obtain end iterator for this view
Definition: defaultgridview.hh:161
Dune::DefaultLeafGridView::Grid
Traits::Grid Grid
type of the grid
Definition: defaultgridview.hh:277
Dune::DefaultLeafGridView::grid
const Grid & grid() const
obtain a const reference to the underlying hierarchic grid
Definition: defaultgridview.hh:303
Dune::DefaultLeafGridView
Definition: defaultgridview.hh:19
Dune::CommunicationDirection
CommunicationDirection
Define a type for communication direction parameter.
Definition: gridenums.hh:168
Dune::DefaultLeafGridView::communicate
void communicate(CommDataHandleIF< DataHandleImp, DataType > &data, InterfaceType iftype, CommunicationDirection dir) const
Definition: defaultgridview.hh:389
gridview.hh
Dune::DefaultLevelGridView::begin
Codim< cd >::template Partition< pit >::Iterator begin() const
obtain begin iterator for this view
Definition: defaultgridview.hh:154
Dune::CommDataHandleIF
CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
Definition: datahandleif.hh:72