3#ifndef DUNE_IDENTITYGRID_INTERSECTIONS_HH
4#define DUNE_IDENTITYGRID_INTERSECTIONS_HH
16 template<
class Gr
id >
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<1>::Geometry
Geometry;
48 typedef typename GridImp::template Codim<1>::LocalGeometry
LocalGeometry;
49 typedef typename GridImp::template Codim<0>::Entity
Entity;
56 const HostLeafIntersection& hostIntersection)
57 : identityGrid_(identityGrid)
58 , hostIntersection_(hostIntersection)
62 HostLeafIntersection&& hostIntersection)
63 : identityGrid_(identityGrid)
64 , hostIntersection_(
std::move(hostIntersection))
69 return hostIntersection_ == other.hostIntersection_;
88 return hostIntersection_.boundary();
97 return hostIntersection_.centerUnitOuterNormal();
102 return hostIntersection_.neighbor();
108 return hostIntersection_.boundaryId();
113 return hostIntersection_.boundarySegmentIndex();
118 return hostIntersection_.conforming();
123 return hostIntersection_.type();
133 return LocalGeometry( hostIntersection_.geometryInInside() );
140 return LocalGeometry( hostIntersection_.geometryInOutside() );
147 return Geometry( hostIntersection_.geometry() );
153 return hostIntersection_.indexInInside();
159 return hostIntersection_.indexInOutside();
164 FieldVector<ctype, GridImp::dimensionworld>
outerNormal (
const FieldVector<ctype, GridImp::dimension-1>& local)
const {
165 return hostIntersection_.outerNormal(local);
169 FieldVector<ctype, GridImp::dimensionworld>
integrationOuterNormal (
const FieldVector<ctype, GridImp::dimension-1>& local)
const {
170 return hostIntersection_.integrationOuterNormal(local);
174 FieldVector<ctype, GridImp::dimensionworld>
unitOuterNormal (
const FieldVector<ctype, GridImp::dimension-1>& local)
const {
175 return hostIntersection_.unitOuterNormal(local);
184 const GridImp* identityGrid_;
186 HostLeafIntersection hostIntersection_;
193 template<
class Gr
idImp>
201 enum {dim=GridImp::dimension};
203 enum {dimworld=GridImp::dimensionworld};
206 typedef typename GridImp::ctype ctype;
208 typedef typename GridImp::HostGridType::LevelGridView::Intersection HostLevelIntersection;
212 typedef typename GridImp::template Codim<1>::Geometry
Geometry;
214 typedef typename GridImp::template Codim<0>::Entity
Entity;
221 const HostLevelIntersection& hostIntersection)
222 : identityGrid_(identityGrid)
223 , hostIntersection_(hostIntersection)
227 HostLevelIntersection&& hostIntersection)
228 : identityGrid_(identityGrid)
229 , hostIntersection_(
std::move(hostIntersection))
234 return hostIntersection_ == other.hostIntersection_;
254 return hostIntersection_.boundary();
263 return hostIntersection_.centerUnitOuterNormal();
268 return hostIntersection_.neighbor();
274 return hostIntersection_.boundaryId();
279 return hostIntersection_.boundarySegmentIndex();
284 return hostIntersection_.conforming();
289 return hostIntersection_.type();
299 return LocalGeometry( hostIntersection_.geometryInInside() );
306 return LocalGeometry( hostIntersection_.geometryInOutside() );
313 return Geometry( hostIntersection_.geometry() );
319 return hostIntersection_.indexInInside();
325 return hostIntersection_.indexInOutside();
330 FieldVector<ctype, dimworld>
outerNormal (
const FieldVector<ctype, dim-1>& local)
const {
331 return hostIntersection_.outerNormal(local);
336 return hostIntersection_.integrationOuterNormal(local);
340 FieldVector<ctype, dimworld>
unitOuterNormal (
const FieldVector<ctype, dim-1>& local)
const {
341 return hostIntersection_.unitOuterNormal(local);
346 const GridImp* identityGrid_;
348 HostLevelIntersection hostIntersection_;
The IdentityGridLeafIterator class.
Include standard header files.
Definition agrid.hh:60
provides access to host grid objects from GeometryGrid
Definition identitygrid.hh:37
The implementation of entities in a IdentityGrid.
Definition identitygridentity.hh:56
Definition identitygridintersectioniterator.hh:82
Iterator over all element neighborsMesh entities of codimension 0 ("elements") allow to visit all nei...
Definition identitygridintersectioniterator.hh:27
An intersection with a leaf neighbor elementMesh entities of codimension 0 ("elements") allow to visi...
Definition identitygridintersections.hh:30
Entity inside() const
Definition identitygridintersections.hh:74
IdentityGridLeafIntersection(const GridImp *identityGrid, HostLeafIntersection &&hostIntersection)
Definition identitygridintersections.hh:61
NormalVector centerUnitOuterNormal() const
Return unit outer normal (length == 1)
Definition identitygridintersections.hh:96
GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
Definition identitygridintersections.hh:48
Geometry geometry() const
Definition identitygridintersections.hh:145
Entity outside() const
Definition identitygridintersections.hh:81
LocalGeometry geometryInOutside() const
Definition identitygridintersections.hh:138
int boundaryId() const
return information about the Boundary
Definition identitygridintersections.hh:107
IdentityGridLeafIntersection()
Definition identitygridintersections.hh:52
bool boundary() const
return true if intersection is with boundary.
Definition identitygridintersections.hh:87
GeometryType type() const
Geometry type of an intersection.
Definition identitygridintersections.hh:122
FieldVector< ctype, dimworld > NormalVector
Definition identitygridintersections.hh:50
LocalGeometry geometryInInside() const
Definition identitygridintersections.hh:131
bool conforming() const
Return true if this is a conforming intersection.
Definition identitygridintersections.hh:117
IdentityGridLeafIntersection(const GridImp *identityGrid, const HostLeafIntersection &hostIntersection)
Definition identitygridintersections.hh:55
size_t boundarySegmentIndex() const
return the boundary segment index
Definition identitygridintersections.hh:112
bool equals(const IdentityGridLeafIntersection &other) const
Definition identitygridintersections.hh:67
FieldVector< ctype, GridImp::dimensionworld > outerNormal(const FieldVector< ctype, GridImp::dimension-1 > &local) const
return outer normal
Definition identitygridintersections.hh:164
int indexInOutside() const
local number of codim 1 entity in neighbor where intersection is contained
Definition identitygridintersections.hh:158
FieldVector< ctype, GridImp::dimensionworld > integrationOuterNormal(const FieldVector< ctype, GridImp::dimension-1 > &local) const
return outer normal multiplied by the integration element
Definition identitygridintersections.hh:169
bool neighbor() const
return true if across the edge an neighbor on this level exists
Definition identitygridintersections.hh:101
FieldVector< ctype, GridImp::dimensionworld > unitOuterNormal(const FieldVector< ctype, GridImp::dimension-1 > &local) const
return unit outer normal
Definition identitygridintersections.hh:174
int indexInInside() const
local number of codim 1 entity in self where intersection is contained in
Definition identitygridintersections.hh:152
GridImp::template Codim< 1 >::Geometry Geometry
Definition identitygridintersections.hh:47
GridImp::template Codim< 0 >::Entity Entity
Definition identitygridintersections.hh:49
Definition identitygridintersections.hh:195
Geometry geometry() const
Definition identitygridintersections.hh:311
GridImp::template Codim< 0 >::Entity Entity
Definition identitygridintersections.hh:214
IdentityGridLevelIntersection(const GridImp *identityGrid, const HostLevelIntersection &hostIntersection)
Definition identitygridintersections.hh:220
GridImp::template Codim< 1 >::Geometry Geometry
Definition identitygridintersections.hh:212
bool equals(const IdentityGridLevelIntersection &other) const
Definition identitygridintersections.hh:232
bool neighbor() const
return true if across the edge an neighbor on this level exists
Definition identitygridintersections.hh:267
IdentityGridLevelIntersection()
Definition identitygridintersections.hh:217
NormalVector centerUnitOuterNormal() const
Return unit outer normal (length == 1)
Definition identitygridintersections.hh:262
bool conforming() const
Return true if this is a conforming intersection.
Definition identitygridintersections.hh:283
int indexInInside() const
local number of codim 1 entity in self where intersection is contained in
Definition identitygridintersections.hh:318
FieldVector< ctype, dimworld > outerNormal(const FieldVector< ctype, dim-1 > &local) const
return outer normal
Definition identitygridintersections.hh:330
GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
Definition identitygridintersections.hh:213
FieldVector< ctype, dimworld > NormalVector
Definition identitygridintersections.hh:215
bool boundary() const
return true if intersection is with boundary.
Definition identitygridintersections.hh:253
FieldVector< ctype, dimworld > integrationOuterNormal(const FieldVector< ctype, dim-1 > &local) const
return outer normal multiplied by the integration element
Definition identitygridintersections.hh:335
LocalGeometry geometryInOutside() const
Definition identitygridintersections.hh:304
LocalGeometry geometryInInside() const
Definition identitygridintersections.hh:297
int indexInOutside() const
local number of codim 1 entity in neighbor where intersection is contained
Definition identitygridintersections.hh:324
FieldVector< ctype, dimworld > unitOuterNormal(const FieldVector< ctype, dim-1 > &local) const
return unit outer normal
Definition identitygridintersections.hh:340
size_t boundarySegmentIndex() const
return the boundary segment index
Definition identitygridintersections.hh:278
Entity outside() const
Definition identitygridintersections.hh:246
int boundaryId() const
return information about the Boundary
Definition identitygridintersections.hh:273
Entity inside() const
Definition identitygridintersections.hh:239
GeometryType type() const
Geometry type of an intersection.
Definition identitygridintersections.hh:288
IdentityGridLevelIntersection(const GridImp *identityGrid, HostLevelIntersection &&hostIntersection)
Definition identitygridintersections.hh:226