5 #ifndef DUNE_IDENTITYGRID_INTERSECTIONS_HH 6 #define DUNE_IDENTITYGRID_INTERSECTIONS_HH 19 template<
class Gr
id >
20 struct HostGridAccess;
31 template<
class Gr
idImp>
39 constexpr static int dim = GridImp::dimension;
41 constexpr static int dimworld = GridImp::dimensionworld;
44 typedef typename GridImp::ctype ctype;
59 const HostLeafIntersection& hostIntersection)
60 : identityGrid_(identityGrid)
61 , hostIntersection_(hostIntersection)
65 HostLeafIntersection&& hostIntersection)
66 : identityGrid_(identityGrid)
67 , hostIntersection_(
std::move(hostIntersection))
72 return hostIntersection_ == other.hostIntersection_;
91 return hostIntersection_.boundary();
100 return hostIntersection_.centerUnitOuterNormal();
105 return hostIntersection_.neighbor();
110 return hostIntersection_.boundarySegmentIndex();
115 return hostIntersection_.conforming();
120 return hostIntersection_.type();
130 return LocalGeometry( hostIntersection_.geometryInInside() );
137 return LocalGeometry( hostIntersection_.geometryInOutside() );
144 return Geometry( hostIntersection_.geometry() );
150 return hostIntersection_.indexInInside();
156 return hostIntersection_.indexInOutside();
161 FieldVector<ctype, GridImp::dimensionworld>
outerNormal (
const FieldVector<ctype, GridImp::dimension-1>& local)
const {
162 return hostIntersection_.outerNormal(local);
166 FieldVector<ctype, GridImp::dimensionworld>
integrationOuterNormal (
const FieldVector<ctype, GridImp::dimension-1>& local)
const {
167 return hostIntersection_.integrationOuterNormal(local);
171 FieldVector<ctype, GridImp::dimensionworld>
unitOuterNormal (
const FieldVector<ctype, GridImp::dimension-1>& local)
const {
172 return hostIntersection_.unitOuterNormal(local);
181 const GridImp* identityGrid_;
183 HostLeafIntersection hostIntersection_;
190 template<
class Gr
idImp>
198 constexpr static int dim = GridImp::dimension;
200 constexpr static int dimworld = GridImp::dimensionworld;
203 typedef typename GridImp::ctype ctype;
218 const HostLevelIntersection& hostIntersection)
219 : identityGrid_(identityGrid)
220 , hostIntersection_(hostIntersection)
224 HostLevelIntersection&& hostIntersection)
225 : identityGrid_(identityGrid)
226 , hostIntersection_(
std::move(hostIntersection))
231 return hostIntersection_ == other.hostIntersection_;
251 return hostIntersection_.boundary();
260 return hostIntersection_.centerUnitOuterNormal();
265 return hostIntersection_.neighbor();
270 return hostIntersection_.boundarySegmentIndex();
275 return hostIntersection_.conforming();
280 return hostIntersection_.type();
290 return LocalGeometry( hostIntersection_.geometryInInside() );
297 return LocalGeometry( hostIntersection_.geometryInOutside() );
304 return Geometry( hostIntersection_.geometry() );
310 return hostIntersection_.indexInInside();
316 return hostIntersection_.indexInOutside();
321 FieldVector<ctype, dimworld>
outerNormal (
const FieldVector<ctype, dim-1>& local)
const {
322 return hostIntersection_.outerNormal(local);
327 return hostIntersection_.integrationOuterNormal(local);
331 FieldVector<ctype, dimworld>
unitOuterNormal (
const FieldVector<ctype, dim-1>& local)
const {
332 return hostIntersection_.unitOuterNormal(local);
337 const GridImp* identityGrid_;
339 HostLevelIntersection hostIntersection_;
GridImp::template Codim< 1 >::Geometry Geometry
Definition: identitygridintersections.hh:50
IdentityGridLevelIntersection(const GridImp *identityGrid, const HostLevelIntersection &hostIntersection)
Definition: identitygridintersections.hh:217
Entity outside() const
Definition: identitygridintersections.hh:243
GridImp::template Codim< 0 >::Entity Entity
Definition: identitygridintersections.hh:211
LocalGeometry geometryInOutside() const
Definition: identitygridintersections.hh:295
bool equals(const IdentityGridLevelIntersection &other) const
Definition: identitygridintersections.hh:229
Specialization for codim-0-entities.This class embodies the topological parts of elements of the grid...
Definition: identitygridentity.hh:203
GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
Definition: identitygridintersections.hh:210
bool conforming() const
Return true if this is a conforming intersection.
Definition: identitygridintersections.hh:274
Entity inside() const
Definition: identitygridintersections.hh:77
FieldVector< ctype, dimworld > NormalVector
Definition: identitygridintersections.hh:212
int indexInOutside() const
local number of codim 1 entity in neighbor where intersection is contained
Definition: identitygridintersections.hh:315
bool neighbor() const
return true if across the edge an neighbor on this level exists
Definition: identitygridintersections.hh:264
FieldVector< ctype, dimworld > integrationOuterNormal(const FieldVector< ctype, dim-1 > &local) const
return outer normal multiplied by the integration element
Definition: identitygridintersections.hh:326
FieldVector< ctype, GridImp::dimensionworld > integrationOuterNormal(const FieldVector< ctype, GridImp::dimension-1 > &local) const
return outer normal multiplied by the integration element
Definition: identitygridintersections.hh:166
An intersection with a leaf neighbor elementMesh entities of codimension 0 ("elements") allow to visi...
Definition: identitygridintersections.hh:32
Entity outside() const
Definition: identitygridintersections.hh:84
GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
Definition: identitygridintersections.hh:51
NormalVector centerUnitOuterNormal() const
Return unit outer normal (length == 1)
Definition: identitygridintersections.hh:99
GeometryType type() const
Geometry type of an intersection.
Definition: identitygridintersections.hh:279
The IdentityGridLeafIterator class.
concept Intersection
Model of an intersection.
Definition: concepts/intersection.hh:23
bool equals(const IdentityGridLeafIntersection &other) const
Definition: identitygridintersections.hh:70
int indexInOutside() const
local number of codim 1 entity in neighbor where intersection is contained
Definition: identitygridintersections.hh:155
bool conforming() const
Return true if this is a conforming intersection.
Definition: identitygridintersections.hh:114
IdentityGridLevelIntersection(const GridImp *identityGrid, HostLevelIntersection &&hostIntersection)
Definition: identitygridintersections.hh:223
bool boundary() const
return true if intersection is with boundary.
Definition: identitygridintersections.hh:250
Definition: identitygridentity.hh:26
NormalVector centerUnitOuterNormal() const
Return unit outer normal (length == 1)
Definition: identitygridintersections.hh:259
bool boundary() const
return true if intersection is with boundary.
Definition: identitygridintersections.hh:90
LocalGeometry geometryInInside() const
Definition: identitygridintersections.hh:128
Entity inside() const
Definition: identitygridintersections.hh:236
The IdentityGridEntity class.
size_t boundarySegmentIndex() const
return the boundary segment index
Definition: identitygridintersections.hh:109
FieldVector< ctype, GridImp::dimensionworld > outerNormal(const FieldVector< ctype, GridImp::dimension-1 > &local) const
return outer normal
Definition: identitygridintersections.hh:161
Include standard header files.
Definition: agrid.hh:59
FieldVector< ctype, GridImp::dimensionworld > unitOuterNormal(const FieldVector< ctype, GridImp::dimension-1 > &local) const
return unit outer normal
Definition: identitygridintersections.hh:171
Definition: identitygridintersections.hh:191
FieldVector< ctype, dimworld > unitOuterNormal(const FieldVector< ctype, dim-1 > &local) const
return unit outer normal
Definition: identitygridintersections.hh:331
FieldVector< ctype, dimworld > NormalVector
Definition: identitygridintersections.hh:53
Geometry geometry() const
Definition: identitygridintersections.hh:142
int indexInInside() const
local number of codim 1 entity in self where intersection is contained in
Definition: identitygridintersections.hh:309
provides access to host grid objects from GeometryGrid
Definition: identitygrid.hh:37
LocalGeometry geometryInInside() const
Definition: identitygridintersections.hh:288
IdentityGridLeafIntersection(const GridImp *identityGrid, HostLeafIntersection &&hostIntersection)
Definition: identitygridintersections.hh:64
GridImp::template Codim< 0 >::Entity Entity
Definition: identitygridintersections.hh:52
GridImp::template Codim< 1 >::Geometry Geometry
Definition: identitygridintersections.hh:209
size_t boundarySegmentIndex() const
return the boundary segment index
Definition: identitygridintersections.hh:269
Geometry geometry() const
Definition: identitygridintersections.hh:302
bool neighbor() const
return true if across the edge an neighbor on this level exists
Definition: identitygridintersections.hh:104
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:132
FieldVector< ctype, dimworld > outerNormal(const FieldVector< ctype, dim-1 > &local) const
return outer normal
Definition: identitygridintersections.hh:321
IdentityGridLeafIntersection(const GridImp *identityGrid, const HostLeafIntersection &hostIntersection)
Definition: identitygridintersections.hh:58
LocalGeometry geometryInOutside() const
Definition: identitygridintersections.hh:135
Iterator over all element neighborsMesh entities of codimension 0 ("elements") allow to visit all nei...
Definition: identitygridentity.hh:29
int indexInInside() const
local number of codim 1 entity in self where intersection is contained in
Definition: identitygridintersections.hh:149
GeometryType type() const
Geometry type of an intersection.
Definition: identitygridintersections.hh:119