3 #ifndef DUNE_IDENTITYGRID_INTERSECTIONS_HH 4 #define DUNE_IDENTITYGRID_INTERSECTIONS_HH 17 template<
class Gr
id >
18 struct HostGridAccess;
29 template<
class Gr
idImp>
37 enum {dim=GridImp::dimension};
39 enum {dimworld=GridImp::dimensionworld};
42 typedef typename GridImp::ctype ctype;
44 typedef typename GridImp::HostGridType::LeafGridView::Intersection HostLeafIntersection;
48 typedef typename GridImp::template Codim<1>::Geometry
Geometry;
49 typedef typename GridImp::template Codim<1>::LocalGeometry
LocalGeometry;
50 typedef typename GridImp::template Codim<0>::Entity
Entity;
57 const HostLeafIntersection& hostIntersection)
58 : identityGrid_(identityGrid)
59 , hostIntersection_(hostIntersection)
63 HostLeafIntersection&& hostIntersection)
64 : identityGrid_(identityGrid)
65 , hostIntersection_(
std::move(hostIntersection))
70 return hostIntersection_ == other.hostIntersection_;
89 return hostIntersection_.boundary();
98 return hostIntersection_.centerUnitOuterNormal();
103 return hostIntersection_.neighbor();
108 return hostIntersection_.boundarySegmentIndex();
113 return hostIntersection_.conforming();
118 return hostIntersection_.type();
128 return LocalGeometry( hostIntersection_.geometryInInside() );
135 return LocalGeometry( hostIntersection_.geometryInOutside() );
142 return Geometry( hostIntersection_.geometry() );
148 return hostIntersection_.indexInInside();
154 return hostIntersection_.indexInOutside();
159 FieldVector<ctype, GridImp::dimensionworld>
outerNormal (
const FieldVector<ctype, GridImp::dimension-1>& local)
const {
160 return hostIntersection_.outerNormal(local);
164 FieldVector<ctype, GridImp::dimensionworld>
integrationOuterNormal (
const FieldVector<ctype, GridImp::dimension-1>& local)
const {
165 return hostIntersection_.integrationOuterNormal(local);
169 FieldVector<ctype, GridImp::dimensionworld>
unitOuterNormal (
const FieldVector<ctype, GridImp::dimension-1>& local)
const {
170 return hostIntersection_.unitOuterNormal(local);
179 const GridImp* identityGrid_;
181 HostLeafIntersection hostIntersection_;
188 template<
class Gr
idImp>
196 enum {dim=GridImp::dimension};
198 enum {dimworld=GridImp::dimensionworld};
201 typedef typename GridImp::ctype ctype;
203 typedef typename GridImp::HostGridType::LevelGridView::Intersection HostLevelIntersection;
207 typedef typename GridImp::template Codim<1>::Geometry
Geometry;
209 typedef typename GridImp::template Codim<0>::Entity
Entity;
216 const HostLevelIntersection& hostIntersection)
217 : identityGrid_(identityGrid)
218 , hostIntersection_(hostIntersection)
222 HostLevelIntersection&& hostIntersection)
223 : identityGrid_(identityGrid)
224 , hostIntersection_(
std::move(hostIntersection))
229 return hostIntersection_ == other.hostIntersection_;
249 return hostIntersection_.boundary();
258 return hostIntersection_.centerUnitOuterNormal();
263 return hostIntersection_.neighbor();
268 return hostIntersection_.boundarySegmentIndex();
273 return hostIntersection_.conforming();
278 return hostIntersection_.type();
288 return LocalGeometry( hostIntersection_.geometryInInside() );
295 return LocalGeometry( hostIntersection_.geometryInOutside() );
302 return Geometry( hostIntersection_.geometry() );
308 return hostIntersection_.indexInInside();
314 return hostIntersection_.indexInOutside();
319 FieldVector<ctype, dimworld>
outerNormal (
const FieldVector<ctype, dim-1>& local)
const {
320 return hostIntersection_.outerNormal(local);
325 return hostIntersection_.integrationOuterNormal(local);
329 FieldVector<ctype, dimworld>
unitOuterNormal (
const FieldVector<ctype, dim-1>& local)
const {
330 return hostIntersection_.unitOuterNormal(local);
335 const GridImp* identityGrid_;
337 HostLevelIntersection hostIntersection_;
Include standard header files.
Definition: agrid.hh:58
Definition: identitygridentity.hh:24
bool boundary() const
return true if intersection is with boundary.
Definition: identitygridintersections.hh:248
IdentityGridLeafIntersection(const GridImp *identityGrid, HostLeafIntersection &&hostIntersection)
Definition: identitygridintersections.hh:62
bool neighbor() const
return true if across the edge an neighbor on this level exists
Definition: identitygridintersections.hh:102
IdentityGridLevelIntersection(const GridImp *identityGrid, const HostLevelIntersection &hostIntersection)
Definition: identitygridintersections.hh:215
Entity outside() const
Definition: identitygridintersections.hh:82
int indexInInside() const
local number of codim 1 entity in self where intersection is contained in
Definition: identitygridintersections.hh:147
size_t boundarySegmentIndex() const
return the boundary segment index
Definition: identitygridintersections.hh:107
LocalGeometry geometryInOutside() const
Definition: identitygridintersections.hh:293
bool equals(const IdentityGridLevelIntersection &other) const
Definition: identitygridintersections.hh:227
bool neighbor() const
return true if across the edge an neighbor on this level exists
Definition: identitygridintersections.hh:262
FieldVector< ctype, GridImp::dimensionworld > integrationOuterNormal(const FieldVector< ctype, GridImp::dimension-1 > &local) const
return outer normal multiplied by the integration element
Definition: identitygridintersections.hh:164
int indexInOutside() const
local number of codim 1 entity in neighbor where intersection is contained
Definition: identitygridintersections.hh:313
FieldVector< ctype, dimworld > NormalVector
Definition: identitygridintersections.hh:51
GeometryType type() const
Geometry type of an intersection.
Definition: identitygridintersections.hh:117
An intersection with a leaf neighbor elementMesh entities of codimension 0 ("elements") allow to visi...
Definition: identitygridintersections.hh:30
IdentityGridLeafIntersection(const GridImp *identityGrid, const HostLeafIntersection &hostIntersection)
Definition: identitygridintersections.hh:56
LocalGeometry geometryInInside() const
Definition: identitygridintersections.hh:286
FieldVector< ctype, dimworld > outerNormal(const FieldVector< ctype, dim-1 > &local) const
return outer normal
Definition: identitygridintersections.hh:319
Iterator over all element neighborsMesh entities of codimension 0 ("elements") allow to visit all nei...
Definition: identitygridentity.hh:27
LocalGeometry geometryInOutside() const
Definition: identitygridintersections.hh:133
Entity inside() const
Definition: identitygridintersections.hh:234
IdentityGridLevelIntersection()
Definition: identitygridintersections.hh:212
GridImp::template Codim< 0 >::Entity Entity
Definition: identitygridintersections.hh:50
LocalGeometry geometryInInside() const
Definition: identitygridintersections.hh:126
FieldVector< ctype, GridImp::dimensionworld > unitOuterNormal(const FieldVector< ctype, GridImp::dimension-1 > &local) const
return unit outer normal
Definition: identitygridintersections.hh:169
The IdentityGridEntity class.
FieldVector< ctype, dimworld > unitOuterNormal(const FieldVector< ctype, dim-1 > &local) const
return unit outer normal
Definition: identitygridintersections.hh:329
size_t boundarySegmentIndex() const
return the boundary segment index
Definition: identitygridintersections.hh:267
GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
Definition: identitygridintersections.hh:208
bool boundary() const
return true if intersection is with boundary.
Definition: identitygridintersections.hh:88
bool conforming() const
Return true if this is a conforming intersection.
Definition: identitygridintersections.hh:272
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:178
Definition: identitygridintersections.hh:189
provides access to host grid objects from GeometryGrid
Definition: identitygrid.hh:36
IdentityGridLeafIntersection()
Definition: identitygridintersections.hh:53
bool equals(const IdentityGridLeafIntersection &other) const
Definition: identitygridintersections.hh:68
Geometry geometry() const
Definition: identitygridintersections.hh:140
IdentityGridLevelIntersection(const GridImp *identityGrid, HostLevelIntersection &&hostIntersection)
Definition: identitygridintersections.hh:221
GeometryType type() const
Geometry type of an intersection.
Definition: identitygridintersections.hh:277
GridImp::template Codim< 1 >::Geometry Geometry
Definition: identitygridintersections.hh:48
NormalVector centerUnitOuterNormal() const
Return unit outer normal (length == 1)
Definition: identitygridintersections.hh:257
Entity outside() const
Definition: identitygridintersections.hh:241
Entity inside() const
Definition: identitygridintersections.hh:75
The IdentityGridLeafIterator class.
GridImp::template Codim< 1 >::Geometry Geometry
Definition: identitygridintersections.hh:207
FieldVector< ctype, dimworld > NormalVector
Definition: identitygridintersections.hh:210
GridImp::template Codim< 0 >::Entity Entity
Definition: identitygridintersections.hh:209
int indexInInside() const
local number of codim 1 entity in self where intersection is contained in
Definition: identitygridintersections.hh:307
NormalVector centerUnitOuterNormal() const
Return unit outer normal (length == 1)
Definition: identitygridintersections.hh:97
Geometry geometry() const
Definition: identitygridintersections.hh:300
Specialization for codim-0-entities.This class embodies the topological parts of elements of the grid...
Definition: identitygridentity.hh:201
bool conforming() const
Return true if this is a conforming intersection.
Definition: identitygridintersections.hh:112
FieldVector< ctype, dimworld > integrationOuterNormal(const FieldVector< ctype, dim-1 > &local) const
return outer normal multiplied by the integration element
Definition: identitygridintersections.hh:324
int indexInOutside() const
local number of codim 1 entity in neighbor where intersection is contained
Definition: identitygridintersections.hh:153
GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
Definition: identitygridintersections.hh:49
FieldVector< ctype, GridImp::dimensionworld > outerNormal(const FieldVector< ctype, GridImp::dimension-1 > &local) const
return outer normal
Definition: identitygridintersections.hh:159