dune-grid 2.8.0
Loading...
Searching...
No Matches
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
17namespace Dune
18{
19
20 namespace GeoGrid
21 {
22
23 // Internal Forward Declarations
24 // -----------------------------
25
26 template< class HGV, class CoordFunction, class Allocator >
27 class GridView;
28
29
30
31 // GridViewTraits
32 // --------------
33
34 template< class HGV, class CoordFunction, class Allocator >
36 {
37 friend class GridView< HGV, CoordFunction, Allocator >;
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
68 typedef typename Grid::template Codim< codim >::Geometry Geometry;
69 typedef typename Grid::template Codim< codim >::LocalGeometry LocalGeometry;
70
71 template< PartitionIteratorType pit >
72 struct Partition
73 {
76 };
77 };
78
79 static const bool conforming = HostGridView::conforming;
80 };
81
82
83
84 // GridView
85 // --------
86
87 template< class HGV, class CoordFunction, class Allocator >
89 {
91
92 public:
94
95 typedef typename Traits::HostGridView HostGridView;
96
97 typedef typename Traits::Grid Grid;
98
99 typedef typename Traits::IndexSet IndexSet;
100
102
104
106
107 template< int codim >
108 struct Codim
109 : public Traits::template Codim< codim >
110 {};
111
112 static const bool conforming = Traits::conforming;
113
115 : grid_( &grid ), hostGridView_( hostGridView )
116 {}
117
118 GridView ( const This &other )
119 : grid_( other.grid_ ), hostGridView_( other.hostGridView_ )
120 {}
121
122 GridView ( This &&other )
123 : grid_( other.grid_ ), hostGridView_( std::move( other.hostGridView_ ) )
124 {}
125
126 This &operator= ( const This &other )
127 {
128 grid_ = other.grid_;
129 hostGridView_ = other.hostGridView_;
130 if( indexSet_ )
131 indexSet_.reset( hostGridView().indexSet() );
132 return *this;
133 }
134
135 This &operator= ( This &&other )
136 {
137 grid_ = other.grid_;
138 hostGridView_ = std::move( other.hostGridView_ );
139 if( indexSet_ )
140 indexSet_.reset( hostGridView().indexSet() );
141 return *this;
142 }
143
144 const Grid &grid () const
145 {
146 assert( grid_ );
147 return *grid_;
148 }
149
150 const IndexSet &indexSet () const
151 {
152 indexSet_.reset( hostGridView().indexSet() );
153 return indexSet_;
154 }
155
156 int size ( int codim ) const
157 {
158 return hostGridView().size( codim );
159 }
160
161 int size ( const GeometryType &type ) const
162 {
163 return hostGridView().size( type );
164 }
165
166 template< int codim >
168 {
169 return begin< codim, All_Partition >();
170 }
171
172 template< int codim, PartitionIteratorType pit >
173 typename Codim< codim >::template Partition< pit >::Iterator begin () const
174 {
175 return Traits::template Codim< codim >::template Partition< pit >::IteratorImp::begin( grid(), hostGridView() );
176 }
177
178 template< int codim >
180 {
181 return end< codim, All_Partition >();
182 }
183
184 template< int codim, PartitionIteratorType pit >
185 typename Codim< codim >::template Partition< pit >::Iterator end () const
186 {
187 return Traits::template Codim< codim >::template Partition< pit >::IteratorImp::end( grid(), hostGridView() );
188 }
189
190 IntersectionIterator ibegin ( const typename Codim< 0 >::Entity &entity ) const
191 {
193 return IntersectionIteratorImpl( entity, hostGridView().ibegin( entity.impl().hostEntity() ) );
194 }
195
196 IntersectionIterator iend ( const typename Codim< 0 >::Entity &entity ) const
197 {
199 return IntersectionIteratorImpl( entity, hostGridView().iend( entity.impl().hostEntity() ) );
200 }
201
203 {
204 return hostGridView().comm();
205 }
206
207 int overlapSize ( int codim ) const
208 {
209 return hostGridView().overlapSize( codim );
210 }
211
212 int ghostSize ( int codim ) const
213 {
214 return hostGridView().ghostSize( codim );
215 }
216
217 template< class DataHandle, class Data >
219 InterfaceType interface,
220 CommunicationDirection direction ) const
221 {
222 typedef CommDataHandleIF< DataHandle, Data > DataHandleIF;
223 typedef GeoGrid::CommDataHandle< Grid, DataHandleIF > WrappedDataHandle;
224
225 WrappedDataHandle wrappedDataHandle( grid(), dataHandle );
226 return hostGridView().communicate( wrappedDataHandle, interface, direction );
227 }
228
229 const HostGridView &hostGridView () const { return hostGridView_; }
230
231 private:
232 const Grid *grid_;
233 HostGridView hostGridView_;
234 mutable IndexSet indexSet_;
235 };
236
237 } // namespace GeoGrid
238
239} // namespace Dune
240
241#endif // #ifndef DUNE_GEOGRID_GRIDVIEW_HH
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
STL namespace.
Include standard header files.
Definition: agrid.hh:58
Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
Definition: common/intersection.hh:162
CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
Definition: datahandleif.hh:76
interface class for an iterator over grid entities
Definition: entityiterator.hh:30
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
Definition: geometrygrid/datahandle.hh:25
grid wrapper replacing the geometries
Definition: geometrygrid/grid.hh:84
Definition: geometrygrid/intersectioniterator.hh:19
Definition: geometrygrid/gridview.hh:89
Traits::Grid Grid
Definition: geometrygrid/gridview.hh:97
const Grid & grid() const
Definition: geometrygrid/gridview.hh:144
Traits::IntersectionIterator IntersectionIterator
Definition: geometrygrid/gridview.hh:103
IntersectionIterator ibegin(const typename Codim< 0 >::Entity &entity) const
Definition: geometrygrid/gridview.hh:190
int ghostSize(int codim) const
Definition: geometrygrid/gridview.hh:212
Codim< codim >::Iterator end() const
Definition: geometrygrid/gridview.hh:179
Traits::Intersection Intersection
Definition: geometrygrid/gridview.hh:101
Traits::IndexSet IndexSet
Definition: geometrygrid/gridview.hh:99
const CollectiveCommunication & comm() const
Definition: geometrygrid/gridview.hh:202
GridView(const This &other)
Definition: geometrygrid/gridview.hh:118
const HostGridView & hostGridView() const
Definition: geometrygrid/gridview.hh:229
Codim< codim >::template Partition< pit >::Iterator begin() const
Definition: geometrygrid/gridview.hh:173
Codim< codim >::template Partition< pit >::Iterator end() const
Definition: geometrygrid/gridview.hh:185
This & operator=(const This &other)
Definition: geometrygrid/gridview.hh:126
int size(int codim) const
Definition: geometrygrid/gridview.hh:156
GridView(const Grid &grid, const HostGridView &hostGridView)
Definition: geometrygrid/gridview.hh:114
int overlapSize(int codim) const
Definition: geometrygrid/gridview.hh:207
auto communicate(CommDataHandleIF< DataHandle, Data > &dataHandle, InterfaceType interface, CommunicationDirection direction) const
Definition: geometrygrid/gridview.hh:218
IntersectionIterator iend(const typename Codim< 0 >::Entity &entity) const
Definition: geometrygrid/gridview.hh:196
Traits::CollectiveCommunication CollectiveCommunication
Definition: geometrygrid/gridview.hh:105
int size(const GeometryType &type) const
Definition: geometrygrid/gridview.hh:161
Codim< codim >::Iterator begin() const
Definition: geometrygrid/gridview.hh:167
const IndexSet & indexSet() const
Definition: geometrygrid/gridview.hh:150
GridView(This &&other)
Definition: geometrygrid/gridview.hh:122
Traits::HostGridView HostGridView
Definition: geometrygrid/gridview.hh:95
GridViewTraits< HGV, CoordFunction, Allocator > Traits
Definition: geometrygrid/gridview.hh:93
static const bool conforming
Definition: geometrygrid/gridview.hh:112
Definition: geometrygrid/gridview.hh:36
GeoGrid::IndexSet< const Grid, typename HostGridView::IndexSet > IndexSet
Definition: geometrygrid/gridview.hh:50
GridView< HostGridView, CoordFunction, Allocator > GridViewImp
Definition: geometrygrid/gridview.hh:46
HostGridView::CollectiveCommunication CollectiveCommunication
Definition: geometrygrid/gridview.hh:58
static const bool conforming
Definition: geometrygrid/gridview.hh:79
Dune::Intersection< const Grid, GeoGrid::Intersection< const Grid, HostIntersection > > Intersection
Definition: geometrygrid/gridview.hh:52
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
Definition: geometrygrid/gridview.hh:62
Grid::template Codim< codim >::Geometry Geometry
Definition: geometrygrid/gridview.hh:68
Grid::template Codim< codim >::LocalGeometry LocalGeometry
Definition: geometrygrid/gridview.hh:69
Dune::EntityIterator< codim, const Grid, IteratorImp > Iterator
Definition: geometrygrid/gridview.hh:64
Grid::Traits::template Codim< codim >::Entity Entity
Definition: geometrygrid/gridview.hh:66
GeoGrid::Iterator< HostGridView, codim, All_Partition, const Grid > IteratorImp
Definition: geometrygrid/gridview.hh:63
Definition: geometrygrid/gridview.hh:73
GeoGrid::Iterator< HostGridView, codim, pit, const Grid > IteratorImp
Definition: geometrygrid/gridview.hh:74
Dune::EntityIterator< codim, const Grid, IteratorImp > Iterator
Definition: geometrygrid/gridview.hh:75
Definition: geometrygrid/gridview.hh:110
Definition: geometrygrid/indexsets.hh:27
void reset()
Definition: geometrygrid/indexsets.hh:95
Definition: geometrygrid/intersection.hh:20
Definition: iterator.hh:28
A set of traits classes to store static information about grid implementation.