3 #ifndef DUNE_IDENTITYGRID_INTERSECTIONS_HH
4 #define DUNE_IDENTITYGRID_INTERSECTIONS_HH
16 template<
class Gr
id >
17 struct HostGridAccess;
28 template<
class Gr
idImp>
36 enum {dim=GridImp::dimension};
38 enum {dimworld=GridImp::dimensionworld};
41 typedef typename GridImp::ctype ctype;
43 typedef typename GridImp::HostGridType::LeafGridView::Intersection HostLeafIntersection;
47 typedef typename GridImp::template Codim<0>::EntityPointer
EntityPointer;
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();
109 return hostIntersection_.boundaryId();
114 return hostIntersection_.boundarySegmentIndex();
119 return hostIntersection_.conforming();
124 return hostIntersection_.type();
134 return LocalGeometry( hostIntersection_.geometryInInside() );
141 return LocalGeometry( hostIntersection_.geometryInOutside() );
148 return Geometry( hostIntersection_.geometry() );
154 return hostIntersection_.indexInInside();
160 return hostIntersection_.indexInOutside();
165 FieldVector<ctype, GridImp::dimensionworld>
outerNormal (
const FieldVector<ctype, GridImp::dimension-1>& local)
const {
166 return hostIntersection_.outerNormal(local);
170 FieldVector<ctype, GridImp::dimensionworld>
integrationOuterNormal (
const FieldVector<ctype, GridImp::dimension-1>& local)
const {
171 return hostIntersection_.integrationOuterNormal(local);
175 FieldVector<ctype, GridImp::dimensionworld>
unitOuterNormal (
const FieldVector<ctype, GridImp::dimension-1>& local)
const {
176 return hostIntersection_.unitOuterNormal(local);
185 const GridImp* identityGrid_;
187 HostLeafIntersection hostIntersection_;
194 template<
class Gr
idImp>
202 enum {dim=GridImp::dimension};
204 enum {dimworld=GridImp::dimensionworld};
207 typedef typename GridImp::ctype ctype;
209 typedef typename GridImp::HostGridType::LevelGridView::Intersection HostLevelIntersection;
214 typedef typename GridImp::template Codim<1>::Geometry
Geometry;
216 typedef typename GridImp::template Codim<0>::Entity
Entity;
223 const HostLevelIntersection& hostIntersection)
224 : identityGrid_(identityGrid)
225 , hostIntersection_(hostIntersection)
229 HostLevelIntersection&& hostIntersection)
230 : identityGrid_(identityGrid)
231 , hostIntersection_(std::
move(hostIntersection))
236 return hostIntersection_ == other.hostIntersection_;
256 return hostIntersection_.boundary();
265 return hostIntersection_.centerUnitOuterNormal();
270 return hostIntersection_.neighbor();
276 return hostIntersection_.boundaryId();
281 return hostIntersection_.boundarySegmentIndex();
286 return hostIntersection_.conforming();
291 return hostIntersection_.type();
301 return LocalGeometry( hostIntersection_.geometryInInside() );
308 return LocalGeometry( hostIntersection_.geometryInOutside() );
315 return Geometry( hostIntersection_.geometry() );
321 return hostIntersection_.indexInInside();
327 return hostIntersection_.indexInOutside();
332 FieldVector<ctype, dimworld>
outerNormal (
const FieldVector<ctype, dim-1>& local)
const {
333 return hostIntersection_.outerNormal(local);
338 return hostIntersection_.integrationOuterNormal(local);
342 FieldVector<ctype, dimworld>
unitOuterNormal (
const FieldVector<ctype, dim-1>& local)
const {
343 return hostIntersection_.unitOuterNormal(local);
348 const GridImp* identityGrid_;
350 HostLevelIntersection hostIntersection_;
GridImp::template Codim< 0 >::EntityPointer EntityPointer
Definition: identitygridintersections.hh:213
bool conforming() const
Return true if this is a conforming intersection.
Definition: identitygridintersections.hh:118
int indexInInside() const
local number of codim 1 entity in self where intersection is contained in
Definition: identitygridintersections.hh:320
Geometry geometry() const
Definition: identitygridintersections.hh:146
bool equals(const IdentityGridLevelIntersection &other) const
Definition: identitygridintersections.hh:234
int boundaryId() const
return information about the Boundary
Definition: identitygridintersections.hh:108
NormalVector centerUnitOuterNormal() const
Return unit outer normal (length == 1)
Definition: identitygridintersections.hh:264
GridImp::template Codim< 0 >::Entity Entity
Definition: identitygridintersections.hh:50
Definition: identitygridintersections.hh:195
Specialization for codim-0-entities.This class embodies the topological parts of elements of the grid...
Definition: identitygridentity.hh:209
static void(*)(*)(*)(*)(*)(*) move(const double *)
Definition: partitiondisplay.cc:122
LocalGeometry geometryInInside() const
Definition: identitygridintersections.hh:299
GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
Definition: identitygridintersections.hh:215
bool equals(const IdentityGridLeafIntersection &other) const
Definition: identitygridintersections.hh:68
size_t boundarySegmentIndex() const
return the boundary segment index
Definition: identitygridintersections.hh:113
LocalGeometry geometryInOutside() const
Definition: identitygridintersections.hh:306
FieldVector< ctype, GridImp::dimensionworld > unitOuterNormal(const FieldVector< ctype, GridImp::dimension-1 > &local) const
return unit outer normal
Definition: identitygridintersections.hh:175
NormalVector centerUnitOuterNormal() const
Return unit outer normal (length == 1)
Definition: identitygridintersections.hh:97
GridImp::template Codim< 1 >::Geometry Geometry
Definition: identitygridintersections.hh:48
int indexInOutside() const
local number of codim 1 entity in neighbor where intersection is contained
Definition: identitygridintersections.hh:326
bool boundary() const
return true if intersection is with boundary.
Definition: identitygridintersections.hh:88
The IdentityGridLeafIterator class.
GeometryType type() const
Geometry type of an intersection.
Definition: identitygridintersections.hh:123
IdentityGridLevelIntersection()
Definition: identitygridintersections.hh:219
LocalGeometry geometryInOutside() const
Definition: identitygridintersections.hh:139
IdentityGridLevelIntersection(const GridImp *identityGrid, HostLevelIntersection &&hostIntersection)
Definition: identitygridintersections.hh:228
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:178
size_t boundarySegmentIndex() const
return the boundary segment index
Definition: identitygridintersections.hh:280
IdentityGridLeafIntersection(const GridImp *identityGrid, const HostLeafIntersection &hostIntersection)
Definition: identitygridintersections.hh:56
Iterator over all element neighborsMesh entities of codimension 0 ("elements") allow to visit all nei...
Definition: identitygridentity.hh:30
FieldVector< ctype, dimworld > NormalVector
Definition: identitygridintersections.hh:217
IdentityGridLevelIntersection(const GridImp *identityGrid, const HostLevelIntersection &hostIntersection)
Definition: identitygridintersections.hh:222
int boundaryId() const
return information about the Boundary
Definition: identitygridintersections.hh:275
Entity outside() const
Definition: identitygridintersections.hh:82
Entity inside() const
Definition: identitygridintersections.hh:75
int indexInOutside() const
local number of codim 1 entity in neighbor where intersection is contained
Definition: identitygridintersections.hh:159
GridImp::template Codim< 1 >::Geometry Geometry
Definition: identitygridintersections.hh:214
bool neighbor() const
return true if across the edge an neighbor on this level exists
Definition: identitygridintersections.hh:269
FieldVector< ctype, GridImp::dimensionworld > integrationOuterNormal(const FieldVector< ctype, GridImp::dimension-1 > &local) const
return outer normal multiplied by the integration element
Definition: identitygridintersections.hh:170
GeometryType type() const
Geometry type of an intersection.
Definition: identitygridintersections.hh:290
bool neighbor() const
return true if across the edge an neighbor on this level exists
Definition: identitygridintersections.hh:102
IdentityGridLeafIntersection(const GridImp *identityGrid, HostLeafIntersection &&hostIntersection)
Definition: identitygridintersections.hh:62
An intersection with a leaf neighbor elementMesh entities of codimension 0 ("elements") allow to visi...
Definition: identitygridintersections.hh:29
bool conforming() const
Return true if this is a conforming intersection.
Definition: identitygridintersections.hh:285
GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
Definition: identitygridintersections.hh:49
int indexInInside() const
local number of codim 1 entity in self where intersection is contained in
Definition: identitygridintersections.hh:153
GridImp::template Codim< 0 >::EntityPointer EntityPointer
Definition: identitygridintersections.hh:47
Entity inside() const
Definition: identitygridintersections.hh:241
FieldVector< ctype, GridImp::dimensionworld > outerNormal(const FieldVector< ctype, GridImp::dimension-1 > &local) const
return outer normal
Definition: identitygridintersections.hh:165
IdentityGridLeafIntersection()
Definition: identitygridintersections.hh:53
GridImp::template Codim< 0 >::Entity Entity
Definition: identitygridintersections.hh:216
bool boundary() const
return true if intersection is with boundary.
Definition: identitygridintersections.hh:255
FieldVector< ctype, dimworld > outerNormal(const FieldVector< ctype, dim-1 > &local) const
return outer normal
Definition: identitygridintersections.hh:332
Definition: identitygridentity.hh:27
Entity outside() const
Definition: identitygridintersections.hh:248
FieldVector< ctype, dimworld > NormalVector
Definition: identitygridintersections.hh:51
provides access to host grid objects from GeometryGrid
Definition: identitygrid.hh:37
Geometry geometry() const
Definition: identitygridintersections.hh:313
LocalGeometry geometryInInside() const
Definition: identitygridintersections.hh:132
FieldVector< ctype, dimworld > unitOuterNormal(const FieldVector< ctype, dim-1 > &local) const
return unit outer normal
Definition: identitygridintersections.hh:342
FieldVector< ctype, dimworld > integrationOuterNormal(const FieldVector< ctype, dim-1 > &local) const
return outer normal multiplied by the integration element
Definition: identitygridintersections.hh:337