dune-grid 2.10
Loading...
Searching...
No Matches
geometrygrid/gridview.hh
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
3// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
4// vi: set et ts=4 sw=2 sts=2:
5#ifndef DUNE_GEOGRID_GRIDVIEW_HH
6#define DUNE_GEOGRID_GRIDVIEW_HH
7
8#include <dune/common/typetraits.hh>
9#include <dune/common/exceptions.hh>
10
18
19namespace Dune
20{
21
22 namespace GeoGrid
23 {
24
25 // Internal Forward Declarations
26 // -----------------------------
27
28 template< class HGV, class CoordFunction, class Allocator >
29 class GridView;
30
31
32
33 // GridViewTraits
34 // --------------
35
36 template< class HGV, class CoordFunction, class Allocator >
38 {
39 friend class GridView< HGV, CoordFunction, Allocator >;
40
41 typedef HGV HostGridView;
42
43 typedef typename HostGridView::Grid HostGrid;
44 typedef typename HostGridView::Intersection HostIntersection;
45 typedef typename HostGridView::IntersectionIterator HostIntersectionIterator;
46
47 public:
49
51
53
55
59
60 typedef typename HostGridView::Communication Communication;
61
62 template< int codim >
80
81 static const bool conforming = HostGridView::conforming;
82 };
83
84
85
86 // GridView
87 // --------
88
89 template< class HGV, class CoordFunction, class Allocator >
91 {
93
94 public:
96
97 typedef typename Traits::HostGridView HostGridView;
98
99 typedef typename Traits::Grid Grid;
100
101 typedef typename Traits::IndexSet IndexSet;
102
104
106
108
109 template< int codim >
110 struct Codim
111 : public Traits::template Codim< codim >
112 {};
113
114 static const bool conforming = Traits::conforming;
115
117 : grid_( &grid ), hostGridView_( hostGridView )
118 {}
119
120 GridView ( const This &other )
121 : grid_( other.grid_ ), hostGridView_( other.hostGridView_ )
122 {}
123
125 : grid_( other.grid_ ), hostGridView_( std::move( other.hostGridView_ ) )
126 {}
127
129 {
130 grid_ = other.grid_;
131 hostGridView_ = other.hostGridView_;
132 if( indexSet_ )
133 indexSet_.reset( hostGridView().indexSet() );
134 return *this;
135 }
136
138 {
139 grid_ = other.grid_;
140 hostGridView_ = std::move( other.hostGridView_ );
141 if( indexSet_ )
142 indexSet_.reset( hostGridView().indexSet() );
143 return *this;
144 }
145
146 const Grid &grid () const
147 {
148 assert( grid_ );
149 return *grid_;
150 }
151
152 const IndexSet &indexSet () const
153 {
154 indexSet_.reset( hostGridView().indexSet() );
155 return indexSet_;
156 }
157
158 bool isConforming() const { return hostGridView().isConforming(); }
159
160 int size ( int codim ) const
161 {
162 return hostGridView().size( codim );
163 }
164
165 int size ( const GeometryType &type ) const
166 {
167 return hostGridView().size( type );
168 }
169
170 template< int codim >
172 {
174 }
175
176 template< int codim, PartitionIteratorType pit >
177 typename Codim< codim >::template Partition< pit >::Iterator begin () const
178 {
179 return Traits::template Codim< codim >::template Partition< pit >::IteratorImp::begin( grid(), hostGridView() );
180 }
181
182 template< int codim >
184 {
186 }
187
188 template< int codim, PartitionIteratorType pit >
189 typename Codim< codim >::template Partition< pit >::Iterator end () const
190 {
191 return Traits::template Codim< codim >::template Partition< pit >::IteratorImp::end( grid(), hostGridView() );
192 }
193
194 IntersectionIterator ibegin ( const typename Codim< 0 >::Entity &entity ) const
195 {
197 return IntersectionIteratorImpl( entity, hostGridView().ibegin( entity.impl().hostEntity() ) );
198 }
199
200 IntersectionIterator iend ( const typename Codim< 0 >::Entity &entity ) const
201 {
203 return IntersectionIteratorImpl( entity, hostGridView().iend( entity.impl().hostEntity() ) );
204 }
205
206 const Communication &comm () const
207 {
208 return hostGridView().comm();
209 }
210
211 int overlapSize ( int codim ) const
212 {
213 return hostGridView().overlapSize( codim );
214 }
215
216 int ghostSize ( int codim ) const
217 {
218 return hostGridView().ghostSize( codim );
219 }
220
221 template< class DataHandle, class Data >
232
233 const HostGridView &hostGridView () const { return hostGridView_; }
234
235 private:
236 const Grid *grid_;
237 HostGridView hostGridView_;
238 mutable IndexSet indexSet_;
239 };
240
241 } // namespace GeoGrid
242
243} // namespace Dune
244
245#endif // #ifndef DUNE_GEOGRID_GRIDVIEW_HH
CommunicationDirection
Define a type for communication direction parameter.
Definition gridenums.hh:170
InterfaceType
Parameter to be used for the communication functions.
Definition gridenums.hh:86
STL namespace.
Include standard header files.
Definition agrid.hh:60
Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
Definition common/intersection.hh:164
interface class for an iterator over grid entities
Definition common/entityiterator.hh:32
Mesh entities of codimension 0 ("elements") allow to visit all intersections with "neighboring" eleme...
Definition common/intersectioniterator.hh:83
Grid abstract base class.
Definition common/grid.hh:375
Definition geometrygrid/datahandle.hh:27
grid wrapper replacing the geometries
Definition geometrygrid/grid.hh:86
Definition geometrygrid/intersectioniterator.hh:21
traits structure containing types for a codimension
Definition geometrygrid/grid.hh:606
Definition geometrygrid/gridview.hh:91
Traits::Grid Grid
Definition geometrygrid/gridview.hh:99
const Grid & grid() const
Definition geometrygrid/gridview.hh:146
Traits::IntersectionIterator IntersectionIterator
Definition geometrygrid/gridview.hh:105
Traits::Communication Communication
Definition geometrygrid/gridview.hh:107
IntersectionIterator ibegin(const typename Codim< 0 >::Entity &entity) const
Definition geometrygrid/gridview.hh:194
int ghostSize(int codim) const
Definition geometrygrid/gridview.hh:216
Codim< codim >::Iterator end() const
Definition geometrygrid/gridview.hh:183
Traits::Intersection Intersection
Definition geometrygrid/gridview.hh:103
const Communication & comm() const
Definition geometrygrid/gridview.hh:206
Traits::IndexSet IndexSet
Definition geometrygrid/gridview.hh:101
GridView(const This &other)
Definition geometrygrid/gridview.hh:120
const HostGridView & hostGridView() const
Definition geometrygrid/gridview.hh:233
Codim< codim >::template Partition< pit >::Iterator begin() const
Definition geometrygrid/gridview.hh:177
bool isConforming() const
Definition geometrygrid/gridview.hh:158
Codim< codim >::template Partition< pit >::Iterator end() const
Definition geometrygrid/gridview.hh:189
This & operator=(const This &other)
Definition geometrygrid/gridview.hh:128
int size(int codim) const
Definition geometrygrid/gridview.hh:160
GridView(const Grid &grid, const HostGridView &hostGridView)
Definition geometrygrid/gridview.hh:116
int overlapSize(int codim) const
Definition geometrygrid/gridview.hh:211
auto communicate(CommDataHandleIF< DataHandle, Data > &dataHandle, InterfaceType interface, CommunicationDirection direction) const
Definition geometrygrid/gridview.hh:222
IntersectionIterator iend(const typename Codim< 0 >::Entity &entity) const
Definition geometrygrid/gridview.hh:200
int size(const GeometryType &type) const
Definition geometrygrid/gridview.hh:165
Codim< codim >::Iterator begin() const
Definition geometrygrid/gridview.hh:171
const IndexSet & indexSet() const
Definition geometrygrid/gridview.hh:152
GridView(This &&other)
Definition geometrygrid/gridview.hh:124
Traits::HostGridView HostGridView
Definition geometrygrid/gridview.hh:97
GridViewTraits< HGV, CoordFunction, Allocator > Traits
Definition geometrygrid/gridview.hh:95
static const bool conforming
Definition geometrygrid/gridview.hh:114
Definition geometrygrid/gridview.hh:38
GeoGrid::IndexSet< const Grid, typename HostGridView::IndexSet > IndexSet
Definition geometrygrid/gridview.hh:52
GridView< HostGridView, CoordFunction, Allocator > GridViewImp
Definition geometrygrid/gridview.hh:48
HostGridView::Communication Communication
Definition geometrygrid/gridview.hh:60
static const bool conforming
Definition geometrygrid/gridview.hh:81
Dune::Intersection< const Grid, GeoGrid::Intersection< const Grid, HostIntersection > > Intersection
Definition geometrygrid/gridview.hh:54
Dune::GeometryGrid< HostGrid, CoordFunction, Allocator > Grid
Definition geometrygrid/gridview.hh:50
Dune::IntersectionIterator< const Grid, GeoGrid::IntersectionIterator< const Grid, HostIntersectionIterator >, GeoGrid::Intersection< const Grid, HostIntersection > > IntersectionIterator
Definition geometrygrid/gridview.hh:58
Definition geometrygrid/gridview.hh:64
Grid::template Codim< codim >::Geometry Geometry
Definition geometrygrid/gridview.hh:70
Grid::template Codim< codim >::LocalGeometry LocalGeometry
Definition geometrygrid/gridview.hh:71
Dune::EntityIterator< codim, const Grid, IteratorImp > Iterator
Definition geometrygrid/gridview.hh:66
Grid::Traits::template Codim< codim >::Entity Entity
Definition geometrygrid/gridview.hh:68
GeoGrid::Iterator< HostGridView, codim, All_Partition, const Grid > IteratorImp
Definition geometrygrid/gridview.hh:65
Definition geometrygrid/gridview.hh:75
GeoGrid::Iterator< HostGridView, codim, pit, const Grid > IteratorImp
Definition geometrygrid/gridview.hh:76
Dune::EntityIterator< codim, const Grid, IteratorImp > Iterator
Definition geometrygrid/gridview.hh:77
Definition geometrygrid/gridview.hh:112
Definition geometrygrid/indexsets.hh:29
void reset()
Definition geometrygrid/indexsets.hh:92
Definition geometrygrid/intersection.hh:22
Definition iterator.hh:30
A set of traits classes to store static information about grid implementation.