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 
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 >
150  typename Codim< codim >::template Partition< pit >::Iterator begin () const
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 >
162  typename Codim< codim >::template Partition< pit >::Iterator end () const
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 
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
GridView< HostGridView, CoordFunction, Allocator, pitype > GridViewImp
Definition: geometrygrid/gridview.hh:46
Traits::Grid Grid
Definition: geometrygrid/gridview.hh:98
Codim< codim >::template Partition< pit >::Iterator begin() const
Definition: geometrygrid/gridview.hh:150
GridView(const Grid &grid, const HostGridView &hostGridView)
Definition: geometrygrid/gridview.hh:115
const HostGridView & hostGridView() const
Definition: geometrygrid/gridview.hh:206
Traits::IntersectionIterator IntersectionIterator
Definition: geometrygrid/gridview.hh:104
Dune::IntersectionIterator< const Grid, GeoGrid::IntersectionIterator< const Grid, HostIntersectionIterator >, GeoGrid::Intersection< const Grid, HostIntersection > > IntersectionIterator
Definition: geometrygrid/gridview.hh:56
Definition: geometrygrid/gridview.hh:109
Mesh entities of codimension 0 ("elements") allow to visit all intersections with "neighboring" eleme...
Definition: common/grid.hh:360
GridViewTraits< HGV, CoordFunction, Allocator, pitype > Traits
Definition: geometrygrid/gridview.hh:94
Definition: geometrygrid/datahandle.hh:23
Definition: geometrygrid/iterator.hh:29
Codim< codim >::template Partition< pit >::Iterator end() const
Definition: geometrygrid/gridview.hh:162
GeoGrid::Iterator< HostGridView, codim, pitype, const Grid > IteratorImp
Definition: geometrygrid/gridview.hh:63
IntersectionIterator ibegin(const typename Codim< 0 >::Entity &entity) const
Definition: geometrygrid/gridview.hh:167
Codim< codim >::Iterator begin() const
Definition: geometrygrid/gridview.hh:144
Definition: geometrygrid/indexsets.hh:25
Dune::GeometryGrid< HostGrid, CoordFunction, Allocator > Grid
Definition: geometrygrid/gridview.hh:48
int size(const GeometryType &type) const
Definition: geometrygrid/gridview.hh:138
Dune::Intersection< const Grid, GeoGrid::Intersection< const Grid, HostIntersection > > Intersection
Definition: geometrygrid/gridview.hh:52
Definition: geometrygrid/gridview.hh:35
Dune::EntityIterator< codim, const Grid, IteratorImp > Iterator
Definition: geometrygrid/gridview.hh:64
grid wrapper replacing the geometriesGeometryGrid wraps another DUNE grid and replaces its geometry b...
Definition: geometrygrid/declaration.hh:10
Definition: geometrygrid/entity.hh:60
GeoGrid::IndexSet< const Grid, typename HostGridView::IndexSet > IndexSet
Definition: geometrygrid/gridview.hh:50
Traits::IndexSet IndexSet
Definition: geometrygrid/gridview.hh:100
IntersectionIterator iend(const typename Codim< 0 >::Entity &entity) const
Definition: geometrygrid/gridview.hh:173
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:178
int size(int codim) const
Definition: geometrygrid/gridview.hh:133
Definition: geometrygrid/gridview.hh:61
Grid::template Codim< codim >::LocalGeometry LocalGeometry
Definition: geometrygrid/gridview.hh:70
Traits::HostGridView HostGridView
Definition: geometrygrid/gridview.hh:96
int overlapSize(int codim) const
Definition: geometrygrid/gridview.hh:184
const Grid & grid() const
Definition: geometrygrid/gridview.hh:120
Dune::EntityIterator< codim, const Grid, IteratorImp > Iterator
Definition: geometrygrid/gridview.hh:76
const IndexSet & indexSet() const
Definition: geometrygrid/gridview.hh:126
interface class for an iterator over grid entitiesAn entity iterator is an iterator over a subset of ...
Definition: entityiterator.hh:35
Grid abstract base classThis class is the base class for all grid implementations. Although no virtual functions are used we call it abstract since its methods do not contain an implementation but forward to the methods of the derived class via the Barton-Nackman trick.
Definition: common/grid.hh:388
int ghostSize(int codim) const
Definition: geometrygrid/gridview.hh:189
Definition: geometrygrid/intersection.hh:19
Grid::Traits::template Codim< codim >::EntityPointer EntityPointer
Definition: geometrygrid/gridview.hh:67
Definition: geometrygrid/gridview.hh:27
HostGridView::CollectiveCommunication CollectiveCommunication
Definition: geometrygrid/gridview.hh:58
CommunicationDirection
Define a type for communication direction parameter.
Definition: gridenums.hh:168
Codim< codim >::Iterator end() const
Definition: geometrygrid/gridview.hh:156
A set of traits classes to store static information about grid implementation.
Traits::Intersection Intersection
Definition: geometrygrid/gridview.hh:102
Traits::CollectiveCommunication CollectiveCommunication
Definition: geometrygrid/gridview.hh:106
GeoGrid::Iterator< HostGridView, codim, pit, const Grid > IteratorImp
Definition: geometrygrid/gridview.hh:75
CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
Definition: datahandleif.hh:72
Grid::Traits::template Codim< codim >::Entity Entity
Definition: geometrygrid/gridview.hh:66
Definition: geometrygrid/gridview.hh:73
InterfaceType
Parameter to be used for the communication functions.
Definition: gridenums.hh:84
static const bool conforming
Definition: geometrygrid/gridview.hh:80
Definition: alugrid/common/declaration.hh:20
Grid::template Codim< codim >::Geometry Geometry
Definition: geometrygrid/gridview.hh:69
void communicate(CommDataHandleIF< DataHandle, Data > &dataHandle, InterfaceType interface, CommunicationDirection direction) const
Definition: geometrygrid/gridview.hh:195
static const bool conforming
Definition: geometrygrid/gridview.hh:113
const CollectiveCommunication & comm() const
Definition: geometrygrid/gridview.hh:179