gridview.hh
Go to the documentation of this file.
1// -*- mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2// vi: set et ts=2 sw=2 sts=2:
3#ifndef DUNE_POLYHEDRALGRID_GRIDVIEW_HH
4#define DUNE_POLYHEDRALGRID_GRIDVIEW_HH
5
6//- dune-common includes
7#include <dune/common/typetraits.hh>
8
9//- dune-grid includes
10#include <dune/grid/common/capabilities.hh>
11#include <dune/grid/common/gridview.hh>
12
13//- polyhedralgrid includes
18
19namespace Dune
20{
21
22 // Internal Forward Declarations
23 // -----------------------------
24
25 template< int dim, int dimworld, typename coord_t, PartitionIteratorType defaultpitype >
26 class PolyhedralGridView;
27
28 template< int dim, int dimworld, typename coord_t, PartitionIteratorType ptype >
29 struct PolyhedralGridViewTraits;
30
31
32 // PolyhedralGridView
33 // ------------------
34
35 template< int dim, int dimworld, typename coord_t, PartitionIteratorType defaultpitype >
37 {
39
40 public:
42
43 typedef typename Traits::Grid Grid;
44 typedef typename Traits::IndexSet IndexSet;
47
50 template< int codim >
51 struct Codim
52 : public Traits::template Codim< codim >
53 {};
54
55 static const bool conforming = Traits :: conforming;
56 static const PartitionIteratorType pitype = Traits :: pitype;
57
58 PolyhedralGridView ( const Grid &grid, const int level = 0 )
59 : grid_( &grid )
60 {
61 (void)level;
62 }
63
64 const Grid &grid () const
65 {
66 assert( grid_ );
67 return *grid_;
68 }
69
70 const IndexSet &indexSet () const
71 {
72 return grid().leafIndexSet();
73 }
74
75 bool isConforming() const { return bool(conforming); }
76
77 int size ( int codim ) const
78 {
79 return grid().size( codim );
80 }
81
82 int size ( const GeometryType &type ) const
83 {
84 return grid().size( type );
85 }
86
87 template< int codim >
89 {
90 return begin< codim, defaultpitype >();
91 }
92
93 template< int codim, PartitionIteratorType pit >
94 typename Codim< codim >::template Partition< pit >::Iterator begin () const
95 {
96 typedef typename Traits::template Codim< codim >::template Partition< pit >::IteratorImpl Impl;
97 return Impl( grid().extraData(), true );
98 }
99
100 template< int codim >
102 {
103 return end< codim, defaultpitype >();
104 }
105
106 template< int codim, PartitionIteratorType pit >
107 typename Codim< codim >::template Partition< pit >::Iterator end () const
108 {
109 typedef typename Traits::template Codim< codim >::template Partition< pit >::IteratorImpl Impl;
110 return Impl( grid().extraData(), false );
111 }
112
113 IntersectionIterator ibegin ( const typename Codim< 0 >::Entity &entity ) const
114 {
115 typedef typename Traits::IntersectionIteratorImpl IntersectionIteratorImpl;
116 return IntersectionIteratorImpl( grid().extraData(), entity.seed(), true);
117 }
118
119 IntersectionIterator iend ( const typename Codim< 0 >::Entity &entity ) const
120 {
121 typedef typename Traits::IntersectionIteratorImpl IntersectionIteratorImpl;
122 return IntersectionIteratorImpl( grid().extraData(), entity.seed(), false);
123 }
124
126 {
127 return grid().comm();
128 }
129
130 int overlapSize ( int codim ) const
131 {
132 return grid().overlapSize( codim );
133 }
134
135 int ghostSize ( int codim ) const
136 {
137 return grid().ghostSize( codim );
138 }
139
140 template< class DataHandle, class Data >
141 void communicate ( CommDataHandleIF< DataHandle, Data > /*&dataHandle*/,
142 InterfaceType /*interface*/,
143 CommunicationDirection /*direction*/ ) const
144 {
145 }
146
147 protected:
148 const Grid *grid_;
149 };
150
151 // PolyhedralGridViewTraits
152 // ------------------------
153
154 template< int dim, int dimworld, typename coord_t, PartitionIteratorType ptype >
156 {
158 static const PartitionIteratorType pitype = ptype;
159
162
165
166 typedef Dune::Intersection< const Grid, IntersectionImpl > Intersection;
167 typedef Dune::IntersectionIterator< const Grid, IntersectionIteratorImpl, IntersectionImpl > IntersectionIterator;
168
171
172 template< int codim >
173 struct Codim
174 {
175 typedef typename Grid::Traits::template Codim< codim >::Entity Entity;
176 typedef typename Grid::Traits::template Codim< codim >::EntityPointer EntityPointer;
177
178 typedef typename Grid::template Codim< codim >::Geometry Geometry;
179 typedef typename Grid::template Codim< codim >::LocalGeometry LocalGeometry;
180
181 template< PartitionIteratorType pit >
183 {
185 typedef Dune::EntityIterator< codim, const Grid, IteratorImpl > Iterator;
186 };
187
189 };
190
191 static const bool conforming = false;
192 };
193
194} // namespace Dune
195
196#endif // #ifndef DUNE_POLYHEDRALGRID_GRIDVIEW_HH
Definition: indexset.hh:24
Definition: intersectioniterator.hh:16
Definition: intersection.hh:22
Definition: iterator.hh:21
identical grid wrapper
Definition: grid.hh:159
int ghostSize(int codim) const
obtain size of ghost region for the leaf grid
Definition: grid.hh:624
const LeafIndexSet & leafIndexSet() const
Definition: grid.hh:562
int size(int, int codim) const
obtain number of entites on a level
Definition: grid.hh:427
typename Traits::Communication Communication
communicator with all other processes having some part of the grid
Definition: grid.hh:311
const CommunicationType & comm() const
obtain CollectiveCommunication object
Definition: grid.hh:711
int overlapSize(int) const
obtain size of overlap region for the leaf grid
Definition: grid.hh:615
Definition: gridview.hh:37
typename Traits::Communication Communication
Definition: gridview.hh:48
Codim< codim >::Iterator begin() const
Definition: gridview.hh:88
Traits::Grid Grid
Definition: gridview.hh:43
int ghostSize(int codim) const
Definition: gridview.hh:135
int size(int codim) const
Definition: gridview.hh:77
const CollectiveCommunication & comm() const
Definition: gridview.hh:125
PolyhedralGridView(const Grid &grid, const int level=0)
Definition: gridview.hh:58
IntersectionIterator iend(const typename Codim< 0 >::Entity &entity) const
Definition: gridview.hh:119
const Grid * grid_
Definition: gridview.hh:148
Codim< codim >::template Partition< pit >::Iterator begin() const
Definition: gridview.hh:94
Traits::IntersectionIterator IntersectionIterator
Definition: gridview.hh:46
const IndexSet & indexSet() const
Definition: gridview.hh:70
Codim< codim >::Iterator end() const
Definition: gridview.hh:101
Traits::Intersection Intersection
Definition: gridview.hh:45
static const PartitionIteratorType pitype
Definition: gridview.hh:56
Traits::IndexSet IndexSet
Definition: gridview.hh:44
const Grid & grid() const
Definition: gridview.hh:64
Communication CollectiveCommunication
Definition: gridview.hh:49
int overlapSize(int codim) const
Definition: gridview.hh:130
static const bool conforming
Definition: gridview.hh:55
bool isConforming() const
Definition: gridview.hh:75
void communicate(CommDataHandleIF< DataHandle, Data >, InterfaceType, CommunicationDirection) const
Definition: gridview.hh:141
IntersectionIterator ibegin(const typename Codim< 0 >::Entity &entity) const
Definition: gridview.hh:113
PolyhedralGridViewTraits< dim, dimworld, coord_t, defaultpitype > Traits
Definition: gridview.hh:41
Codim< codim >::template Partition< pit >::Iterator end() const
Definition: gridview.hh:107
int size(const GeometryType &type) const
Definition: gridview.hh:82
The namespace Dune is the main namespace for all Dune code.
Definition: common/CartesianIndexMapper.hpp:10
Definition: gridview.hh:53
PolyhedralGridIterator< codim, const Grid, pit > IteratorImpl
Definition: gridview.hh:184
Dune::EntityIterator< codim, const Grid, IteratorImpl > Iterator
Definition: gridview.hh:185
Definition: gridview.hh:174
Grid::template Codim< codim >::Geometry Geometry
Definition: gridview.hh:178
Grid::Traits::template Codim< codim >::EntityPointer EntityPointer
Definition: gridview.hh:176
Grid::template Codim< codim >::LocalGeometry LocalGeometry
Definition: gridview.hh:179
Partition< pitype >::Iterator Iterator
Definition: gridview.hh:188
Grid::Traits::template Codim< codim >::Entity Entity
Definition: gridview.hh:175
Definition: gridview.hh:156
static const bool conforming
Definition: gridview.hh:191
PolyhedralGridView< dim, dimworld, coord_t, pitype > GridViewImp
Definition: gridview.hh:160
typename Grid::Communication Communication
Definition: gridview.hh:169
static const PartitionIteratorType pitype
Definition: gridview.hh:158
PolyhedralGridIntersection< const Grid > IntersectionImpl
Definition: gridview.hh:163
Dune::Intersection< const Grid, IntersectionImpl > Intersection
Definition: gridview.hh:166
PolyhedralGridIndexSet< Grid::dimension, Grid::dimensionworld, coord_t > IndexSet
Definition: gridview.hh:161
PolyhedralGridIntersectionIterator< const Grid > IntersectionIteratorImpl
Definition: gridview.hh:164
Dune::IntersectionIterator< const Grid, IntersectionIteratorImpl, IntersectionImpl > IntersectionIterator
Definition: gridview.hh:167
PolyhedralGrid< dim, dimworld, coord_t > Grid
Definition: gridview.hh:157
Communication CollectiveCommunication
Definition: gridview.hh:170