dune-grid 2.8.0
Loading...
Searching...
No Matches
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
12namespace Dune
13{
14
15 template< class GridImp >
16 class DefaultLevelGridView;
17
18 template< class GridImp >
19 class DefaultLeafGridView;
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 {
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
98 enum { conforming = Traits :: conforming };
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
160 ibegin ( const typename Codim< 0 > :: Entity &entity ) const
161 {
162 return entity.impl().ilevelbegin();
163 }
164
167 iend ( const typename Codim< 0 > :: Entity &entity ) const
168 {
169 return entity.impl().ilevelend();
170 }
171
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 >
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 >
255 {
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
280 enum { conforming = Traits :: conforming };
281
282 public:
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
342 ibegin ( const typename Codim< 0 > :: Entity &entity ) const
343 {
344 return entity.impl().ileafbegin();
345 }
346
349 iend ( const typename Codim< 0 > :: Entity &entity ) const
350 {
351 return entity.impl().ileafend();
352 }
353
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
CommunicationDirection
Define a type for communication direction parameter.
Definition: gridenums.hh:168
InterfaceType
Parameter to be used for the communication functions.
Definition: gridenums.hh:84
Include standard header files.
Definition: agrid.hh:58
CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
Definition: datahandleif.hh:76
Definition: defaultgridview.hh:73
Traits::CollectiveCommunication CollectiveCommunication
type of the collective communication
Definition: defaultgridview.hh:92
Codim< cd >::template Partition< pit >::Iterator begin() const
obtain begin iterator for this view
Definition: defaultgridview.hh:139
int size(const GeometryType &type) const
obtain number of entities with a given geometry type
Definition: defaultgridview.hh:125
Codim< cd >::Iterator begin() const
obtain begin iterator for this view
Definition: defaultgridview.hh:132
IntersectionIterator iend(const typename Codim< 0 > ::Entity &entity) const
obtain end intersection iterator with respect to this view
Definition: defaultgridview.hh:167
Codim< cd >::template Partition< pit >::Iterator end() const
obtain end iterator for this view
Definition: defaultgridview.hh:153
DefaultLevelGridViewTraits< GridImp > Traits
Definition: defaultgridview.hh:77
const IndexSet & indexSet() const
obtain the index set
Definition: defaultgridview.hh:113
Traits::IndexSet IndexSet
type of the index set
Definition: defaultgridview.hh:83
void communicate(CommDataHandleIF< DataHandleImp, DataType > &data, InterfaceType iftype, CommunicationDirection dir) const
Definition: defaultgridview.hh:192
@ conforming
Definition: defaultgridview.hh:98
const CollectiveCommunication & comm() const
obtain collective communication object
Definition: defaultgridview.hh:173
Traits::IntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: defaultgridview.hh:89
int size(int codim) const
obtain number of entities in a given codimension
Definition: defaultgridview.hh:119
int overlapSize(int codim) const
Return size of the overlap region for a given codim on the grid view.
Definition: defaultgridview.hh:179
Codim< cd >::Iterator end() const
obtain end iterator for this view
Definition: defaultgridview.hh:146
IntersectionIterator ibegin(const typename Codim< 0 > ::Entity &entity) const
obtain begin intersection iterator with respect to this view
Definition: defaultgridview.hh:160
DefaultLevelGridView(const Grid &grid, int level)
Definition: defaultgridview.hh:100
Traits::Intersection Intersection
type of the intersection
Definition: defaultgridview.hh:86
int ghostSize(int codim) const
Return size of the ghost region for a given codim on the grid view.
Definition: defaultgridview.hh:185
Traits::Grid Grid
type of the grid
Definition: defaultgridview.hh:80
const Grid & grid() const
obtain a const reference to the underlying hierarchic grid
Definition: defaultgridview.hh:106
Definition: defaultgridview.hh:255
void communicate(CommDataHandleIF< DataHandleImp, DataType > &data, InterfaceType iftype, CommunicationDirection dir) const
Definition: defaultgridview.hh:374
DefaultLeafGridViewTraits< GridImp > Traits
Definition: defaultgridview.hh:259
@ conforming
Definition: defaultgridview.hh:280
Codim< cd >::template Partition< pit >::Iterator end() const
obtain end iterator for this view
Definition: defaultgridview.hh:335
const Grid & grid() const
obtain a const reference to the underlying hierarchic grid
Definition: defaultgridview.hh:288
Codim< cd >::template Partition< pit >::Iterator begin() const
obtain begin iterator for this view
Definition: defaultgridview.hh:321
IntersectionIterator ibegin(const typename Codim< 0 > ::Entity &entity) const
obtain begin intersection iterator with respect to this view
Definition: defaultgridview.hh:342
Traits::Intersection Intersection
type of the intersection
Definition: defaultgridview.hh:268
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:328
Traits::CollectiveCommunication CollectiveCommunication
type of the collective communication
Definition: defaultgridview.hh:274
Traits::Grid Grid
type of the grid
Definition: defaultgridview.hh:262
int size(const GeometryType &type) const
obtain number of entities with a given geometry type
Definition: defaultgridview.hh:307
Traits::IndexSet IndexSet
type of the index set
Definition: defaultgridview.hh:265
const CollectiveCommunication & comm() const
obtain collective communication object
Definition: defaultgridview.hh:355
DefaultLeafGridView(const Grid &grid)
Definition: defaultgridview.hh:283
int overlapSize(int codim) const
Return size of the overlap region for a given codim on the grid view.
Definition: defaultgridview.hh:361
Codim< cd >::Iterator begin() const
obtain begin iterator for this view
Definition: defaultgridview.hh:314
int ghostSize(int codim) const
Return size of the ghost region for a given codim on the grid view.
Definition: defaultgridview.hh:367
int size(int codim) const
obtain number of entities in a given codimension
Definition: defaultgridview.hh:301
const IndexSet & indexSet() const
obtain the index set
Definition: defaultgridview.hh:295
Traits::IntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: defaultgridview.hh:271
Definition: defaultgridview.hh:24
Grid::Traits::CollectiveCommunication CollectiveCommunication
type of the collective communication
Definition: defaultgridview.hh:41
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
@ conforming
Definition: defaultgridview.hh:67
Grid::Traits::LevelIndexSet IndexSet
type of the index set
Definition: defaultgridview.hh:31
std::remove_const< GridImp >::type Grid
type of the grid
Definition: defaultgridview.hh:28
DefaultLevelGridView< GridImp > GridViewImp
Definition: defaultgridview.hh:25
Definition: defaultgridview.hh:45
Grid::Traits::template Codim< cd >::template Partition< All_Partition >::LevelIterator Iterator
Definition: defaultgridview.hh:48
Grid::Traits::template Codim< cd >::Entity Entity
Definition: defaultgridview.hh:50
Grid::template Codim< cd >::Geometry Geometry
Definition: defaultgridview.hh:52
Grid::template Codim< cd >::LocalGeometry LocalGeometry
Definition: defaultgridview.hh:54
Define types needed to iterate over entities of a given partition type.
Definition: defaultgridview.hh:59
Grid::template Codim< cd >::template Partition< pit >::LevelIterator Iterator
iterator over a given codim and partition type
Definition: defaultgridview.hh:63
Codim Structure.
Definition: defaultgridview.hh:96
Definition: defaultgridview.hh:206
std::remove_const< GridImp >::type Grid
type of the grid
Definition: defaultgridview.hh:210
@ conforming
Definition: defaultgridview.hh:249
DefaultLeafGridView< GridImp > GridViewImp
Definition: defaultgridview.hh:207
Grid::Traits::LeafIntersectionIterator IntersectionIterator
type of the intersection iterator
Definition: defaultgridview.hh:220
Grid::Traits::LeafIntersection Intersection
type of the intersection
Definition: defaultgridview.hh:216
Grid::Traits::LeafIndexSet IndexSet
type of the index set
Definition: defaultgridview.hh:213
Grid::Traits::CollectiveCommunication CollectiveCommunication
type of the collective communication
Definition: defaultgridview.hh:223
Definition: defaultgridview.hh:227
Grid::Traits::template Codim< cd >::template Partition< All_Partition >::LeafIterator Iterator
Definition: defaultgridview.hh:230
Grid::Traits::template Codim< cd >::Entity Entity
Definition: defaultgridview.hh:232
Grid::template Codim< cd >::Geometry Geometry
Definition: defaultgridview.hh:234
Grid::template Codim< cd >::LocalGeometry LocalGeometry
Definition: defaultgridview.hh:236
Define types needed to iterate over entities of a given partition type.
Definition: defaultgridview.hh:241
Grid::template Codim< cd >::template Partition< pit >::LeafIterator Iterator
iterator over a given codim and partition type
Definition: defaultgridview.hh:245
Codim Structure.
Definition: defaultgridview.hh:278
Mesh entities of codimension 0 ("elements") allow to visit all intersections with "neighboring" eleme...
Definition: common/intersectioniterator.hh:81
Grid abstract base class.
Definition: common/grid.hh:372
A set of traits classes to store static information about grid implementation.