dune-grid  2.4.1
geometrygrid/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_GEOGRID_GRIDVIEW_HH
4 #define DUNE_GEOGRID_GRIDVIEW_HH
5 
6 #include <dune/common/typetraits.hh>
7 #include <dune/common/exceptions.hh>
8 
16 
17 namespace Dune
18 {
19 
20  namespace GeoGrid
21  {
22 
23  // Internal Forward Declarations
24  // -----------------------------
25 
26  template< class HGV, class CoordFunction, class Allocator, PartitionIteratorType pitype >
27  class GridView;
28 
29 
30 
31  // GridViewTraits
32  // --------------
33 
34  template< class HGV, class CoordFunction, class Allocator, PartitionIteratorType pitype >
36  {
37  friend class GridView< HGV, CoordFunction, Allocator, pitype >;
38 
39  typedef HGV HostGridView;
40 
41  typedef typename HostGridView::Grid HostGrid;
42  typedef typename HostGridView::Intersection HostIntersection;
43  typedef typename HostGridView::IntersectionIterator HostIntersectionIterator;
44 
45  public:
47 
49 
51 
53 
57 
58  typedef typename HostGridView::CollectiveCommunication CollectiveCommunication;
59 
60  template< int codim >
61  struct Codim
62  {
65 
66  typedef typename Grid::Traits::template Codim< codim >::Entity Entity;
67  typedef typename Grid::Traits::template Codim< codim >::EntityPointer EntityPointer;
68 
69  typedef typename Grid::template Codim< codim >::Geometry Geometry;
70  typedef typename Grid::template Codim< codim >::LocalGeometry LocalGeometry;
71 
72  template< PartitionIteratorType pit >
73  struct Partition
74  {
77  };
78  };
79 
80  static const bool conforming = HostGridView::conforming;
81  };
82 
83 
84 
85  // GridView
86  // --------
87 
88  template< class HGV, class CoordFunction, class Allocator, PartitionIteratorType pitype >
89  class GridView
90  {
92 
93  public:
95 
96  typedef typename Traits::HostGridView HostGridView;
97 
98  typedef typename Traits::Grid Grid;
99 
100  typedef typename Traits::IndexSet IndexSet;
101 
103 
105 
107 
108  template< int codim >
109  struct Codim
110  : public Traits::template Codim< codim >
111  {};
112 
113  static const bool conforming = Traits::conforming;
114 
115  GridView ( const Grid &grid, const HostGridView &hostGridView )
116  : grid_( &grid ),
117  hostGridView_( hostGridView )
118  {}
119 
120  const Grid &grid () const
121  {
122  assert( grid_ );
123  return *grid_;
124  }
125 
126  const IndexSet &indexSet () const
127  {
128  if( !indexSet_ )
129  indexSet_ = IndexSet( hostGridView().indexSet() );
130  return indexSet_;
131  }
132 
133  int size ( int codim ) const
134  {
135  return hostGridView().size( codim );
136  }
137 
138  int size ( const GeometryType &type ) const
139  {
140  return hostGridView().size( type );
141  }
142 
143  template< int codim >
144  typename Codim< codim >::Iterator begin () const
145  {
146  return begin< codim, pitype >();
147  }
148 
149  template< int codim, PartitionIteratorType pit >
151  {
152  return Traits::template Codim< codim >::template Partition< pit >::IteratorImp::begin( grid(), hostGridView() );
153  }
154 
155  template< int codim >
156  typename Codim< codim >::Iterator end () const
157  {
158  return end< codim, pitype >();
159  }
160 
161  template< int codim, PartitionIteratorType pit >
163  {
164  return Traits::template Codim< codim >::template Partition< pit >::IteratorImp::end( grid(), hostGridView() );
165  }
166 
167  IntersectionIterator ibegin ( const typename Codim< 0 >::Entity &entity ) const
168  {
170  return IntersectionIteratorImpl( entity, hostGridView().ibegin( Grid::getRealImplementation( entity ).hostEntity() ) );
171  }
172 
173  IntersectionIterator iend ( const typename Codim< 0 >::Entity &entity ) const
174  {
176  return IntersectionIteratorImpl( entity, hostGridView().iend( Grid::getRealImplementation( entity ).hostEntity() ) );
177  }
178 
179  const CollectiveCommunication &comm () const
180  {
181  return hostGridView().comm();
182  }
183 
184  int overlapSize ( int codim ) const
185  {
186  return hostGridView().overlapSize( codim );
187  }
188 
189  int ghostSize ( int codim ) const
190  {
191  return hostGridView().ghostSize( codim );
192  }
193 
194  template< class DataHandle, class Data >
196  InterfaceType interface,
197  CommunicationDirection direction ) const
198  {
199  typedef CommDataHandleIF< DataHandle, Data > DataHandleIF;
200  typedef GeoGrid::CommDataHandle< Grid, DataHandleIF > WrappedDataHandle;
201 
202  WrappedDataHandle wrappedDataHandle( grid(), dataHandle );
203  hostGridView().communicate( wrappedDataHandle, interface, direction );
204  }
205 
206  const HostGridView &hostGridView () const { return hostGridView_; }
207 
208  private:
209  const Grid *grid_;
210  HostGridView hostGridView_;
211  mutable IndexSet indexSet_;
212  };
213 
214  } // namespace GeoGrid
215 
216 } // namespace Dune
217 
218 #endif // #ifndef DUNE_GEOGRID_GRIDVIEW_HH
Intersection of a mesh entities of codimension 0 ("elements") with a "neighboring" element or with th...
Definition: albertagrid/dgfparser.hh:26
Definition: geometrygrid/indexsets.hh:25
Definition: geometrygrid/entity.hh:60
const CollectiveCommunication & comm() const
Definition: geometrygrid/gridview.hh:179
Definition: geometrygrid/gridview.hh:61
Grid::template Codim< codim >::Geometry Geometry
Definition: geometrygrid/gridview.hh:69
Dune::EntityIterator< codim, const Grid, IteratorImp > Iterator
Definition: geometrygrid/gridview.hh:64
GeometryType
Type representing VTK&#39;s entity geometry types.
Definition: common.hh:178
Definition: geometrygrid/datahandle.hh:23
CommunicationDirection
Define a type for communication direction parameter.
Definition: gridenums.hh:168
HostGridView::CollectiveCommunication CollectiveCommunication
Definition: geometrygrid/gridview.hh:58
Definition: geometrygrid/gridview.hh:27
void communicate(CommDataHandleIF< DataHandle, Data > &dataHandle, InterfaceType interface, CommunicationDirection direction) const
Definition: geometrygrid/gridview.hh:195
Codim< codim >::template Partition< pit >::Iterator begin() const
Definition: geometrygrid/gridview.hh:150
CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
Definition: datahandleif.hh:72
grid wrapper replacing the geometriesGeometryGrid wraps another DUNE grid and replaces its geometry b...
Definition: geometrygrid/declaration.hh:10
GridView< HostGridView, CoordFunction, Allocator, pitype > GridViewImp
Definition: geometrygrid/gridview.hh:46
Grid::Traits::template Codim< codim >::EntityPointer EntityPointer
Definition: geometrygrid/gridview.hh:67
Traits::Intersection Intersection
Definition: geometrygrid/gridview.hh:102
Definition: alugrid/common/declaration.hh:20
IntersectionIterator iend(const typename Codim< 0 >::Entity &entity) const
Definition: geometrygrid/gridview.hh:173
Traits::IntersectionIterator IntersectionIterator
Definition: geometrygrid/gridview.hh:104
static const bool conforming
Definition: geometrygrid/gridview.hh:80
Definition: geometrygrid/gridview.hh:35
Codim< codim >::Iterator begin() const
Definition: geometrygrid/gridview.hh:144
const HostGridView & hostGridView() const
Definition: geometrygrid/gridview.hh:206
const Grid & grid() const
Definition: geometrygrid/gridview.hh:120
Codim< codim >::Iterator end() const
Definition: geometrygrid/gridview.hh:156
Traits::IndexSet IndexSet
Definition: geometrygrid/gridview.hh:100
Traits::Grid Grid
Definition: geometrygrid/gridview.hh:98
GridViewTraits< HGV, CoordFunction, Allocator, pitype > Traits
Definition: geometrygrid/gridview.hh:94
int overlapSize(int codim) const
Definition: geometrygrid/gridview.hh:184
Dune::GeometryGrid< HostGrid, CoordFunction, Allocator > Grid
Definition: geometrygrid/gridview.hh:48
Dune::IntersectionIterator< const Grid, GeoGrid::IntersectionIterator< const Grid, HostIntersectionIterator >, GeoGrid::Intersection< const Grid, HostIntersection > > IntersectionIterator
Definition: geometrygrid/gridview.hh:56
int size(const GeometryType &type) const
Definition: geometrygrid/gridview.hh:138
Definition: geometrygrid/intersection.hh:19
Dune::Intersection< const Grid, GeoGrid::Intersection< const Grid, HostIntersection > > Intersection
Definition: geometrygrid/gridview.hh:52
GridView(const Grid &grid, const HostGridView &hostGridView)
Definition: geometrygrid/gridview.hh:115
interface class for an iterator over grid entitiesAn entity iterator is an iterator over a subset of ...
Definition: entityiterator.hh:35
InterfaceType
Parameter to be used for the communication functions.
Definition: gridenums.hh:84
IntersectionIterator ibegin(const typename Codim< 0 >::Entity &entity) const
Definition: geometrygrid/gridview.hh:167
Include standard header files.
Definition: agrid.hh:59
Mesh entities of codimension 0 ("elements") allow to visit all intersections with "neighboring" eleme...
Definition: common/grid.hh:360
int ghostSize(int codim) const
Definition: geometrygrid/gridview.hh:189
Traits::HostGridView HostGridView
Definition: geometrygrid/gridview.hh:96
Dune::EntityIterator< codim, const Grid, IteratorImp > Iterator
Definition: geometrygrid/gridview.hh:76
Definition: geometrygrid/gridview.hh:109
A set of traits classes to store static information about grid implementation.
Traits::CollectiveCommunication CollectiveCommunication
Definition: geometrygrid/gridview.hh:106
Codim< codim >::template Partition< pit >::Iterator end() const
Definition: geometrygrid/gridview.hh:162
Grid::Traits::template Codim< codim >::Entity Entity
Definition: geometrygrid/gridview.hh:66
Definition: geometrygrid/iterator.hh:29
Definition: geometrygrid/gridview.hh:73
GeoGrid::Iterator< HostGridView, codim, pitype, const Grid > IteratorImp
Definition: geometrygrid/gridview.hh:63
const IndexSet & indexSet() const
Definition: geometrygrid/gridview.hh:126
int size(int codim) const
Definition: geometrygrid/gridview.hh:133
GeoGrid::IndexSet< const Grid, typename HostGridView::IndexSet > IndexSet
Definition: geometrygrid/gridview.hh:50
Grid::template Codim< codim >::LocalGeometry LocalGeometry
Definition: geometrygrid/gridview.hh:70
GeoGrid::Iterator< HostGridView, codim, pit, const Grid > IteratorImp
Definition: geometrygrid/gridview.hh:75