1#ifndef DUNE_ALU3DGRIDFACEUTILITY_HH
2#define DUNE_ALU3DGRIDFACEUTILITY_HH
6#include <dune/geometry/referenceelements.hh>
30 return ((
const alu3d_ctype (&)[dim]) (*( &(val[0])) ) );
41 template<
int dim,
int dimworld, ALU3dGr
idElementType type,
class Comm >
46 typedef typename ImplTraits::HasFaceType HasFaceType;
116 int duneTwist(
const int faceIdx,
const int aluTwist)
const;
135 bool parallel()
const {
return !std::is_same< Comm, ALUGridNoComm >::value; }
158 const HasFaceType* innerElement_;
159 const HasFaceType* outerElement_;
161 int innerFaceNumber_;
162 int outerFaceNumber_;
170 enum boundary_t { noBoundary = 0,
171 periodicBoundary = 1,
172 innerGhostBoundary = 2,
174 outerGhostBoundary = 4};
179 bool conformingRefinement_ ;
180 bool ghostCellsEnabled_ ;
181 const bool levelIntersection_ ;
188 template<
int dim,
int dimworld, ALU3dGr
idElementType type,
class Comm >
191 template<
int dim,
int dimworld,
class Comm >
209 template<
int dim,
int dimworld,
class Comm >
232 template<
int dim,
int dimworld, ALU3dGr
idElementType type,
class Comm >
285 void generateLocalGeometries()
const;
287 int globalVertexIndex(
const int duneFaceIndex,
289 const int duneFaceVertexIndex)
const;
308 return (type ==
tetra) ?
309 ReferenceElementContainerType :: simplex() :
310 ReferenceElementContainerType :: cube();
315 return (type ==
tetra) ?
316 ReferenceFaceContainerType :: simplex() :
317 ReferenceFaceContainerType :: cube();
323 template<
int dim,
int dimworld,
class Comm >
347 template <
class GeometryImp>
362 mutable bool normalUp2Date_;
367 template<
int dim,
int dimworld,
class Comm >
392 template <
class GeometryImp>
410 mutable bool mappingGlobalUp2Date_;
418 template<
int dimworld, ALU3dGr
idElementType type,
class Comm >
470 void generateLocalGeometries()
const;
475 int globalVertexIndex(
const int duneFaceIndex,
477 const int duneFaceVertexIndex)
const;
496 return (type ==
tetra) ?
497 ReferenceElementContainerType :: simplex() :
498 ReferenceElementContainerType :: cube();
503 return (type ==
tetra) ?
504 ReferenceFaceContainerType :: simplex() :
505 ReferenceFaceContainerType :: cube();
511 template<
int dimworld,
class Comm >
535 template <
class GeometryImp>
550 mutable bool normalUp2Date_;
555 template<
int dimworld,
class Comm >
580 template <
class GeometryImp>
595 mutable bool normalUp2Date_;
#define ALU3DSPACE
Definition alu3dinclude.hh:24
Definition alu3dinclude.hh:80
@ hexa
Definition topology.hh:12
@ tetra
Definition topology.hh:12
alu3d_ctype(& fieldVector2alu3d_ctype(FieldVector< alu3d_ctype, dim > &val))[dim]
Definition faceutility.hh:21
double alu3d_ctype
Definition alu3dinclude.hh:85
Definition alu3dinclude.hh:259
Definition faceutility.hh:43
bool isElementLike() const
returns true if outerEntity casts into a helement
Definition faceutility_imp.cc:286
int outsideLevel() const
Definition faceutility_imp.cc:357
int outerTwist() const
Twist of the face seen from the outer element.
Definition faceutility_imp.cc:415
ImplTraits::GEOElementType GEOElementType
Definition faceutility.hh:51
ImplTraits::GhostPairType GhostPairType
Definition faceutility.hh:54
ConformanceState
Definition faceutility.hh:48
@ UNDEFINED
Definition faceutility.hh:48
@ CONFORMING
Definition faceutility.hh:48
@ REFINED_INNER
Definition faceutility.hh:48
@ REFINED_OUTER
Definition faceutility.hh:48
~ALU3dGridFaceInfo()
Destructor.
Definition faceutility_imp.cc:265
void setFlags(const bool conformingRefinement, const bool ghostCellsEnabled)
reset flags
Definition faceutility_imp.cc:32
void updateFaceInfo(const GEOFaceType &face, int innerLevel, int innerTwist)
Definition faceutility_imp.cc:43
bool conformingRefinement() const
return true if conforming refinement is enabled
Definition faceutility.hh:138
const GEOElementType & innerEntity() const
Returns the inner element at that face.
Definition faceutility_imp.cc:327
int innerALUFaceIndex() const
Local number of the face in inner element (ALU3dGrid reference element)
Definition faceutility_imp.cc:427
const BNDFaceType & innerFace() const
Definition faceutility_imp.cc:343
bool ghostBoundary() const
Definition faceutility_imp.cc:312
bool ghostCellsEnabled() const
return true if ghost cells are enabled
Definition faceutility.hh:141
int duneTwist(const int faceIdx, const int aluTwist) const
Twist of the face seen from the inner element.
Definition faceutility_imp.cc:388
bool neighbor() const
returns true if outside is something meaningfull
Definition faceutility_imp.cc:306
bool innerBoundary() const
returns true if inside is a ghost entity
Definition faceutility_imp.cc:291
int boundaryId() const
return boundary id if intersection is with domain boundary
Definition faceutility_imp.cc:373
bool boundary() const
returns true if the face lies on the domain boundary
Definition faceutility_imp.cc:301
const GEOFaceType & face() const
Returns the ALU3dGrid face.
Definition faceutility_imp.cc:320
int innerTwist() const
Twist of the face seen from the inner element.
Definition faceutility_imp.cc:379
bool outerBoundary() const
Definition faceutility_imp.cc:296
int outerALUFaceIndex() const
Local number of the face in outer element (ALU3dGrid reference element)
Definition faceutility_imp.cc:432
ImplTraits::IMPLElementType IMPLElementType
Definition faceutility.hh:53
bool parallel() const
return whether we are in a parallel environment or not
Definition faceutility.hh:135
const GEOElementType & outerEntity() const
Definition faceutility_imp.cc:335
ImplTraits::GEOPeriodicType GEOPeriodicType
Definition faceutility.hh:52
ImplTraits::GEOFaceType GEOFaceType
Definition faceutility.hh:50
ConformanceState conformanceState() const
Description of conformance on the face.
Definition faceutility_imp.cc:438
const BNDFaceType & boundaryFace() const
Definition faceutility_imp.cc:351
int segmentIndex() const
return boundary segment index if intersection is with domain boundary
Definition faceutility_imp.cc:366
ImplTraits::BNDFaceType BNDFaceType
Definition faceutility.hh:55
Definition faceutility.hh:189
ALU3dGridFaceInfo< dim, dimworld, tetra, Comm >::GEOFaceType GEOFaceType
Definition faceutility.hh:197
ALU3DSPACE LinearSurfaceMapping SurfaceMappingType
Definition faceutility.hh:196
FieldMatrix< alu3d_ctype, numVerticesPerFace, 3 > CoordinateType
Definition faceutility.hh:201
ALU3dGridFaceInfo< dim, dimworld, hexa, Comm >::GEOFaceType GEOFaceType
Definition faceutility.hh:213
FieldMatrix< alu3d_ctype, numVerticesPerFace, 3 > CoordinateType
Definition faceutility.hh:217
BilinearSurfaceMapping SurfaceMappingType
Definition faceutility.hh:212
Definition faceutility.hh:235
FieldMatrix< alu3d_ctype, numVerticesPerFace, dimworld > CoordinateType
Definition faceutility.hh:261
bool generatedLocal_
Definition faceutility.hh:304
CoordinateType coordsNeighborLocal_
Definition faceutility.hh:301
const CoordinateType & intersectionNeighborLocal() const
Definition faceutility_imp.cc:511
@ numVerticesPerFace
Definition faceutility.hh:254
NonConformingFaceMapping< dim, dimworld, type, Comm > NonConformingMappingType
Definition faceutility.hh:241
static const ReferenceFaceType & getReferenceFace()
Definition faceutility.hh:313
FieldVector< alu3d_ctype, 3 > NormalType
Definition faceutility.hh:258
ReferenceElement< alu3d_ctype, 3 > ReferenceElementType
Definition faceutility.hh:249
ReferenceElements< alu3d_ctype, 2 > ReferenceFaceContainerType
Definition faceutility.hh:246
static const ReferenceElementType & getReferenceElement()
Definition faceutility.hh:306
const ConnectorType & connector_
Definition faceutility.hh:298
ElementTopologyMapping< type > ElementTopo
Definition faceutility.hh:239
SideIdentifier
Definition faceutility.hh:253
@ OUTER
Definition faceutility.hh:253
@ INNER
Definition faceutility.hh:253
ALU3dGridFaceInfo< dim, dimworld, type, Comm >::GEOFaceType GEOFaceType
Definition faceutility.hh:263
FaceTopologyMapping< type > FaceTopo
Definition faceutility.hh:240
ReferenceElement< alu3d_ctype, 2 > ReferenceFaceType
Definition faceutility.hh:251
void resetFaceGeom()
reset status of faceGeomInfo
Definition faceutility_imp.cc:485
CoordinateType coordsSelfLocal_
Definition faceutility.hh:300
ALU3dGridFaceInfo< dim, dimworld, type, Comm > ConnectorType
Definition faceutility.hh:266
ReferenceElements< alu3d_ctype, 3 > ReferenceElementContainerType
Definition faceutility.hh:244
const CoordinateType & intersectionSelfLocal() const
Definition faceutility_imp.cc:503
bool generatedGlobal_
Definition faceutility.hh:303
Definition faceutility.hh:326
ALU3dGridFaceInfo< dim, dimworld, tetra, Comm > ConnectorType
Definition faceutility.hh:335
void resetFaceGeom()
reset status of faceGeomInfo
Definition faceutility_imp.cc:528
void buildGlobalGeom(GeometryImp &geo) const
update global geometry
Definition faceutility_imp.cc:544
NormalType & outerNormal(const FieldVector< alu3d_ctype, 2 > &local) const
Definition faceutility_imp.cc:562
Base::FaceTopo FaceTopo
Definition faceutility.hh:332
FieldVector< alu3d_ctype, 3 > NormalType
Definition faceutility.hh:331
ALU3dGridFaceInfo< dim, dimworld, tetra, Comm >::GEOFaceType GEOFaceType
Definition faceutility.hh:333
Definition faceutility.hh:370
ALU3dGridFaceInfo< dim, dimworld, hexa, Comm > ConnectorType
Definition faceutility.hh:380
SurfaceNormalCalculator SurfaceMappingType
Definition faceutility.hh:378
ALU3dGridFaceInfo< dim, dimworld, hexa, Comm >::GEOFaceType GEOFaceType
Definition faceutility.hh:377
void buildGlobalGeom(GeometryImp &geo) const
update global geometry
Definition faceutility_imp.cc:617
NormalType & outerNormal(const FieldVector< alu3d_ctype, 2 > &local) const
Definition faceutility_imp.cc:635
Base::FaceTopo FaceTopo
Definition faceutility.hh:376
FieldVector< alu3d_ctype, 3 > NormalType
Definition faceutility.hh:375
void resetFaceGeom()
reset status of faceGeomInfo
Definition faceutility_imp.cc:599
SideIdentifier
Definition faceutility.hh:436
@ INNER
Definition faceutility.hh:436
ReferenceElement< alu3d_ctype, 1 > ReferenceFaceType
Definition faceutility.hh:434
FaceTopologyMapping< type > FaceTopo
Definition faceutility.hh:424
const ConnectorType & connector_
Definition faceutility.hh:486
ReferenceElement< alu3d_ctype, 2 > ReferenceElementType
Definition faceutility.hh:432
ALU3dGridFaceInfo< 2, dimworld, type, Comm >::GEOFaceType GEOFaceType
Definition faceutility.hh:448
FieldVector< alu3d_ctype, dimworld > NormalType
Definition faceutility.hh:440
LocalCoordinateType coordsSelfLocal_
Definition faceutility.hh:488
static const ReferenceFaceType & getReferenceFace()
Definition faceutility.hh:501
static const ReferenceElementType & getReferenceElement()
Definition faceutility.hh:494
bool generatedLocal_
Definition faceutility.hh:492
ElementTopologyMapping< type > ElementTopo
Definition faceutility.hh:423
ReferenceElements< alu3d_ctype, 1 > ReferenceFaceContainerType
Definition faceutility.hh:429
bool generatedGlobal_
Definition faceutility.hh:491
FieldMatrix< alu3d_ctype, numVerticesPerFace, 2 > LocalCoordinateType
Definition faceutility.hh:446
LocalCoordinateType coordsNeighborLocal_
Definition faceutility.hh:489
ALU3dGridFaceInfo< 2, dimworld, type, Comm > ConnectorType
Definition faceutility.hh:451
ReferenceElements< alu3d_ctype, 2 > ReferenceElementContainerType
Definition faceutility.hh:427
FieldMatrix< alu3d_ctype, numVerticesPerFace, dimworld > CoordinateType
Definition faceutility.hh:443
Base::FaceTopo FaceTopo
Definition faceutility.hh:520
ALU3dGridFaceInfo< 2, dimworld, tetra, Comm > ConnectorType
Definition faceutility.hh:523
FieldVector< alu3d_ctype, dimworld > NormalType
Definition faceutility.hh:519
ALU3dGridFaceInfo< 2, dimworld, tetra, Comm >::GEOElementType GEOElementType
Definition faceutility.hh:522
ALU3dGridFaceInfo< 2, dimworld, tetra, Comm >::GEOFaceType GEOFaceType
Definition faceutility.hh:521
ALU3dGridFaceInfo< 2, dimworld, hexa, Comm > ConnectorType
Definition faceutility.hh:568
Base::FaceTopo FaceTopo
Definition faceutility.hh:564
ALU3dGridFaceInfo< 2, dimworld, hexa, Comm >::GEOElementType GEOElementType
Definition faceutility.hh:566
ALU3dGridFaceInfo< 2, dimworld, hexa, Comm >::GEOFaceType GEOFaceType
Definition faceutility.hh:565
FieldVector< alu3d_ctype, dimworld > NormalType
Definition faceutility.hh:563
A bilinear surface mapping.
Definition mappings.hh:88
A bilinear surface mapping.
Definition mappings.hh:143
Definition mappings.hh:385
Definition topology.hh:15
Definition topology.hh:40
Definition topology.hh:151