dune-grid  2.6-git
common/gridview.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_GRIDVIEW_HH
4 #define DUNE_GRIDVIEW_HH
5 
6 #include <dune/common/iteratorrange.hh>
7 
8 #include <dune/geometry/type.hh>
9 
12 
13 namespace Dune
14 {
15 
16  template< int, int, class, class >
17  class GridDefaultImplementation;
18 
19 
20 
58  template< class ViewTraits >
59  class GridView
60  {
62 
63  public:
69  typedef typename ViewTraits :: GridViewImp Implementation;
70 
71  typedef typename ViewTraits :: GridViewImp GridViewImp;
72 
74  typedef ViewTraits Traits;
75 
77  typedef typename Traits :: Grid Grid;
78 
80  typedef typename Traits :: IndexSet IndexSet;
81 
83  typedef typename Traits :: Intersection Intersection;
84 
86  typedef typename Traits :: IntersectionIterator IntersectionIterator;
87 
89  typedef typename Traits :: CollectiveCommunication CollectiveCommunication;
90 
94  template< int cd >
95  struct Codim {
97  typedef typename Traits :: template Codim<cd> :: Iterator Iterator;
98 
100  typedef typename Traits :: template Codim<cd> :: Entity Entity;
101 
103  typedef typename Traits :: template Codim<cd> :: Geometry Geometry;
104 
106  typedef typename Traits :: template Codim<cd> :: LocalGeometry LocalGeometry;
107 
109  template< PartitionIteratorType pit >
110  struct Partition
111  {
113  typedef typename Traits :: template Codim< cd >
115  };
116  }; //: public Traits :: template Codim<cd> {};
117 
118  enum {
121  };
122 
124  typedef typename Grid::ctype ctype;
125 
126  enum {
128  };
129 
130  enum {
132  };
133 
134  public:
135 
136  //===========================================================
140  //===========================================================
142  GridView ( const Implementation &imp )
143  : impl_( imp )
144  {}
146 
148  GridView ( const ThisType &other )
149  : impl_( other.impl_ )
150  {}
151 
153  ThisType &operator= ( const ThisType &other )
154  {
155  impl_ = other.impl_;
156  return *this;
157  }
158 
159  public:
161  const Grid &grid () const
162  {
163  return impl().grid();
164  }
165 
172  const IndexSet &indexSet () const
173  {
174  return impl().indexSet();
175  }
176 
178  int size ( int codim ) const
179  {
180  return impl().size( codim );
181  }
182 
184  int size ( const GeometryType &type ) const
185  {
186  return impl().size( type );
187  }
188 
195  template<class EntityType>
196  bool contains (const EntityType& e) const
197  {
198  return impl().indexSet().contains(e);
199  }
200 
202  template< int cd >
203  typename Codim< cd > :: Iterator begin () const
204  {
205  return impl().template begin<cd>();
206  }
207 
209  template< int cd >
210  typename Codim< cd > :: Iterator end () const
211  {
212  return impl().template end<cd>();
213  }
214 
216  template< int cd , PartitionIteratorType pitype >
217  typename Codim< cd > :: template Partition< pitype > :: Iterator
218  begin () const
219  {
220  return impl().template begin<cd,pitype>();
221  }
222 
224  template< int cd, PartitionIteratorType pitype >
225  typename Codim< cd > :: template Partition< pitype > :: Iterator
226  end () const
227  {
228  return impl().template end<cd,pitype>();
229  }
230 
233  ibegin ( const typename Codim< 0 > :: Entity &entity ) const
234  {
235  return impl().ibegin(entity);
236  }
237 
240  iend ( const typename Codim< 0 > :: Entity &entity ) const
241  {
242  return impl().iend(entity);
243  }
244 
247  {
248  return impl().comm();
249  }
250 
252  int overlapSize(int codim) const
253  {
254  return impl().overlapSize(codim);
255  }
256 
258  int ghostSize(int codim) const
259  {
260  return impl().ghostSize(codim);
261  }
262 
264  template< class DataHandleImp, class DataType >
266  InterfaceType iftype,
267  CommunicationDirection dir ) const
268  {
269  impl().communicate(data,iftype,dir);
270  }
271 
277  Implementation &impl () { return impl_; }
278 
284  const Implementation &impl () const { return impl_; }
285 
286  protected:
288  };
289 
290 } // namespace Dune
291 
292 #endif // #ifndef DUNE_GRIDVIEW_HH
Dune::GridView::Codim::Partition::Iterator
Traits ::template Codim< cd >::template Partition< pit >::Iterator Iterator
iterator over a given codim and partition type
Definition: common/gridview.hh:114
Dune::GridView::comm
const CollectiveCommunication & comm() const
obtain collective communication object
Definition: common/gridview.hh:246
Dune::GridView::size
int size(int codim) const
obtain number of entities in a given codimension
Definition: common/gridview.hh:178
Dune::GridView::size
int size(const GeometryType &type) const
obtain number of entities with a given geometry type
Definition: common/gridview.hh:184
Dune::GridView::dimension
@ dimension
The dimension of the grid.
Definition: common/gridview.hh:127
Dune::GridView::Codim::Iterator
Traits ::template Codim< cd >::Iterator Iterator
type of iterator returned by the grid view
Definition: common/gridview.hh:97
Dune::GridView::begin
Codim< cd >::Iterator begin() const
obtain begin iterator for this view
Definition: common/gridview.hh:203
Dune::GridView::GridView
GridView(const ThisType &other)
Copy constructor.
Definition: common/gridview.hh:148
Dune::VTK::GeometryType
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:178
Dune::InterfaceType
InterfaceType
Parameter to be used for the communication functions.
Definition: gridenums.hh:84
Dune::GridView::dimensionworld
@ dimensionworld
The dimension of the world the grid lives in.
Definition: common/gridview.hh:131
Dune::GridView::Traits
ViewTraits Traits
Traits class.
Definition: common/gridview.hh:74
Dune::GridView::impl_
Implementation impl_
Definition: common/gridview.hh:287
rangegenerators.hh
Dune::GridView::impl
Implementation & impl()
access to the underlying implementation
Definition: common/gridview.hh:277
Dune::GridView::ghostSize
int ghostSize(int codim) const
Return size of the ghost region for a given codim on the grid view.
Definition: common/gridview.hh:258
Dune::GridView::end
Codim< cd >::Iterator end() const
obtain end iterator for this view
Definition: common/gridview.hh:210
Dune::Grid::ctype
ct ctype
Define type used for coordinates in grid module.
Definition: common/grid.hh:522
Dune::GridView::grid
const Grid & grid() const
obtain a const reference to the underlying hierarchic grid
Definition: common/gridview.hh:161
Dune::IntersectionIterator
Mesh entities of codimension 0 ("elements") allow to visit all intersections with "neighboring" eleme...
Definition: common/grid.hh:345
Dune::Grid::dimensionworld
@ dimensionworld
The dimension of the world the grid lives in.
Definition: common/grid.hh:393
Dune::GridView::CollectiveCommunication
Traits ::CollectiveCommunication CollectiveCommunication
type of the collective communication
Definition: common/gridview.hh:89
Dune::GridView::Codim::LocalGeometry
Traits ::template Codim< cd >::LocalGeometry LocalGeometry
type of the implementation for local geometries
Definition: common/gridview.hh:106
Dune::GridView::begin
Codim< cd >::template Partition< pitype >::Iterator begin() const
obtain begin iterator for this view
Definition: common/gridview.hh:218
Dune::GridView::conforming
@ conforming
Export if this grid view is conforming.
Definition: common/gridview.hh:120
datahandleif.hh
Describes the parallel communication interface class for MessageBuffers and DataHandles.
Dune::GridView::iend
IntersectionIterator iend(const typename Codim< 0 > ::Entity &entity) const
obtain end intersection iterator with respect to this view
Definition: common/gridview.hh:240
Dune::GridView::indexSet
const IndexSet & indexSet() const
obtain the index set
Definition: common/gridview.hh:172
Dune::GridView::Codim::Entity
Traits ::template Codim< cd >::Entity Entity
type of corresponding entity
Definition: common/gridview.hh:100
Dune::GridView::operator=
ThisType & operator=(const ThisType &other)
assignment operator
Definition: common/gridview.hh:153
Dune::GridView::ctype
Grid::ctype ctype
type used for coordinates in grid
Definition: common/gridview.hh:124
Dune::GridView::GridView
GridView(const Implementation &imp)
constructor (engine concept)
Definition: common/gridview.hh:142
Dune::VTK::conforming
@ conforming
Output conforming data.
Definition: common.hh:70
Dune::GridView::Codim
A struct that collects all associated types of one implementation from the Traits class.
Definition: common/gridview.hh:95
Dune::GridView::GridViewImp
ViewTraits ::GridViewImp GridViewImp
Definition: common/gridview.hh:71
Dune::GridView::IndexSet
Traits ::IndexSet IndexSet
type of the index set
Definition: common/gridview.hh:80
Dune::GridView::overlapSize
int overlapSize(int codim) const
Return size of the overlap region for a given codim on the grid view.
Definition: common/gridview.hh:252
Dune::GridView::contains
bool contains(const EntityType &e) const
Return true if the given entity is contained in this grid view.
Definition: common/gridview.hh:196
Dune::GridView::communicate
void communicate(CommDataHandleIF< DataHandleImp, DataType > &data, InterfaceType iftype, CommunicationDirection dir) const
Communicate data on this view.
Definition: common/gridview.hh:265
Dune::GridView::Codim::Geometry
Traits ::template Codim< cd >::Geometry Geometry
type of the geometry implementation
Definition: common/gridview.hh:103
Dune::GridView::Intersection
Traits ::Intersection Intersection
type of the intersection
Definition: common/gridview.hh:83
Dune::GridView::ibegin
IntersectionIterator ibegin(const typename Codim< 0 > ::Entity &entity) const
obtain begin intersection iterator with respect to this view
Definition: common/gridview.hh:233
Dune::GridView::end
Codim< cd >::template Partition< pitype >::Iterator end() const
obtain end iterator for this view
Definition: common/gridview.hh:226
Dune::GridView
Grid view abstract base class.
Definition: common/gridview.hh:59
Dune::CommDataHandleIF
CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
Definition: datahandleif.hh:75
Dune::GridView::Implementation
ViewTraits ::GridViewImp Implementation
type of underlying implementation
Definition: common/gridview.hh:69
Dune
Include standard header files.
Definition: agrid.hh:58
Dune::GridView::IntersectionIterator
Traits ::IntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: common/gridview.hh:86
Dune::Grid::dimension
@ dimension
The dimension of the grid.
Definition: common/grid.hh:387
Dune::GridView::impl
const Implementation & impl() const
access to the underlying implementation
Definition: common/gridview.hh:284
Dune::GridView::Grid
Traits ::Grid Grid
type of the grid
Definition: common/gridview.hh:77
Dune::GridView::Codim::Partition
Define types needed to iterate over entities of a given partition type.
Definition: common/gridview.hh:110
Dune::CommunicationDirection
CommunicationDirection
Define a type for communication direction parameter.
Definition: gridenums.hh:168