1 #ifndef DUNE_ALU3DGRIDFACEUTILITY_HH
2 #define DUNE_ALU3DGRIDFACEUTILITY_HH
7 #include <dune/geometry/referenceelements.hh>
31 return ((
const alu3d_ctype (&)[dim]) (*( &(val[0])) ) );
42 template<
int dim,
int dimworld, ALU3dGr
idElementType type,
class Comm >
47 typedef typename ImplTraits::HasFaceType HasFaceType;
117 int duneTwist(
const int faceIdx,
const int aluTwist)
const;
136 bool parallel()
const {
return !std::is_same< Comm, ALUGridNoComm >::value; }
159 const HasFaceType* innerElement_;
160 const HasFaceType* outerElement_;
162 int innerFaceNumber_;
163 int outerFaceNumber_;
168 mutable int segmentId_;
171 enum boundary_t { noBoundary = 0,
172 periodicBoundary = 1,
173 innerGhostBoundary = 2,
175 outerGhostBoundary = 4};
180 bool conformingRefinement_ ;
181 bool ghostCellsEnabled_ ;
182 const bool levelIntersection_ ;
189 template<
int dim,
int dimworld, ALU3dGr
idElementType type,
class Comm >
192 template<
int dim,
int dimworld,
class Comm >
210 template<
int dim,
int dimworld,
class Comm >
233 template<
int dim,
int dimworld, ALU3dGr
idElementType type,
class Comm >
250 typedef std::decay_t< decltype( ReferenceElementContainerType::general( std::declval< const Dune::GeometryType & >() ) ) >
ReferenceElementType;
252 typedef std::decay_t< decltype( ReferenceFaceContainerType::general( std::declval< const Dune::GeometryType & >() ) ) >
ReferenceFaceType;
286 void generateLocalGeometries()
const;
288 int globalVertexIndex(
const int duneFaceIndex,
290 const int duneFaceVertexIndex)
const;
312 return (type ==
tetra) ?
320 template<
int dim,
int dimworld,
class Comm >
344 template <
class GeometryImp>
359 mutable bool normalUp2Date_;
364 template<
int dim,
int dimworld,
class Comm >
389 template <
class GeometryImp>
407 mutable bool mappingGlobalUp2Date_;
415 template<
int dimworld, ALU3dGr
idElementType type,
class Comm >
429 typedef std::decay_t< decltype( ReferenceElementContainerType::general( std::declval< const Dune::GeometryType & >() ) ) >
ReferenceElementType;
431 typedef std::decay_t< decltype( ReferenceFaceContainerType::general( std::declval< const Dune::GeometryType & >() ) ) >
ReferenceFaceType;
467 void generateLocalGeometries()
const;
472 int globalVertexIndex(
const int duneFaceIndex,
474 const int duneFaceVertexIndex)
const;
493 return (type ==
tetra) ?
502 template<
int dimworld,
class Comm >
526 template <
class GeometryImp>
541 mutable bool normalUp2Date_;
546 template<
int dimworld,
class Comm >
571 template <
class GeometryImp>
586 mutable bool normalUp2Date_;
#define ALU3DSPACE
Definition: alu3dinclude.hh:7
Definition: alu3dinclude.hh:63
@ hexa
Definition: topology.hh:12
@ tetra
Definition: topology.hh:12
@ simplex
use only simplex elements (i.e., triangles or tetrahedra)
Definition: declaration.hh:18
@ cube
use only cube elements (i.e., quadrilaterals or hexahedra)
Definition: declaration.hh:19
alu3d_ctype(& fieldVector2alu3d_ctype(FieldVector< alu3d_ctype, dim > &val))[dim]
Definition: faceutility.hh:22
double alu3d_ctype
Definition: alu3dinclude.hh:68
Definition: alu3dinclude.hh:242
Definition: faceutility.hh:44
bool isElementLike() const
returns true if outerEntity casts into a helement
Definition: faceutility_imp.cc:288
int outsideLevel() const
Definition: faceutility_imp.cc:359
int outerTwist() const
Twist of the face seen from the outer element.
Definition: faceutility_imp.cc:417
ImplTraits::GEOElementType GEOElementType
Definition: faceutility.hh:52
ImplTraits::GhostPairType GhostPairType
Definition: faceutility.hh:55
ConformanceState
Definition: faceutility.hh:49
@ UNDEFINED
Definition: faceutility.hh:49
@ CONFORMING
Definition: faceutility.hh:49
@ REFINED_INNER
Definition: faceutility.hh:49
@ REFINED_OUTER
Definition: faceutility.hh:49
~ALU3dGridFaceInfo()
Destructor.
Definition: faceutility_imp.cc:266
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:139
const GEOElementType & innerEntity() const
Returns the inner element at that face.
Definition: faceutility_imp.cc:329
int innerALUFaceIndex() const
Local number of the face in inner element (ALU3dGrid reference element)
Definition: faceutility_imp.cc:429
const BNDFaceType & innerFace() const
Definition: faceutility_imp.cc:345
bool ghostBoundary() const
Definition: faceutility_imp.cc:314
bool ghostCellsEnabled() const
return true if ghost cells are enabled
Definition: faceutility.hh:142
ALU3dGridFaceInfo(const bool levelIntersection=false)
constructor creating empty face info
Definition: faceutility_imp.cc:10
int duneTwist(const int faceIdx, const int aluTwist) const
Twist of the face seen from the inner element.
Definition: faceutility_imp.cc:390
bool neighbor() const
returns true if outside is something meaningfull
Definition: faceutility_imp.cc:308
bool innerBoundary() const
returns true if inside is a ghost entity
Definition: faceutility_imp.cc:293
int boundaryId() const
return boundary id if intersection is with domain boundary
Definition: faceutility_imp.cc:375
bool boundary() const
returns true if the face lies on the domain boundary
Definition: faceutility_imp.cc:303
const GEOFaceType & face() const
Returns the ALU3dGrid face.
Definition: faceutility_imp.cc:322
int innerTwist() const
Twist of the face seen from the inner element.
Definition: faceutility_imp.cc:381
bool outerBoundary() const
Definition: faceutility_imp.cc:298
int outerALUFaceIndex() const
Local number of the face in outer element (ALU3dGrid reference element)
Definition: faceutility_imp.cc:434
ImplTraits::IMPLElementType IMPLElementType
Definition: faceutility.hh:54
bool parallel() const
return whether we are in a parallel environment or not
Definition: faceutility.hh:136
const GEOElementType & outerEntity() const
Definition: faceutility_imp.cc:337
ImplTraits::GEOPeriodicType GEOPeriodicType
Definition: faceutility.hh:53
ImplTraits::GEOFaceType GEOFaceType
Definition: faceutility.hh:51
ConformanceState conformanceState() const
Description of conformance on the face.
Definition: faceutility_imp.cc:440
const BNDFaceType & boundaryFace() const
Definition: faceutility_imp.cc:353
ImplTraits::BNDFaceType BNDFaceType
Definition: faceutility.hh:56
int segmentId() const
return boundary segment id if intersection is with domain boundary
Definition: faceutility_imp.cc:368
Definition: faceutility.hh:190
ALU3DSPACE LinearSurfaceMapping SurfaceMappingType
Definition: faceutility.hh:197
ALU3dGridFaceInfo< dim, dimworld, tetra, Comm >::GEOFaceType GEOFaceType
Definition: faceutility.hh:198
FieldMatrix< alu3d_ctype, numVerticesPerFace, 3 > CoordinateType
Definition: faceutility.hh:202
ALU3dGridFaceInfo< dim, dimworld, hexa, Comm >::GEOFaceType GEOFaceType
Definition: faceutility.hh:214
FieldMatrix< alu3d_ctype, numVerticesPerFace, 3 > CoordinateType
Definition: faceutility.hh:218
BilinearSurfaceMapping SurfaceMappingType
Definition: faceutility.hh:213
Definition: faceutility.hh:236
std::array< FieldVector< alu3d_ctype, 2 >, type==tetra ? 3 :4 > childLocal_
Definition: faceutility.hh:301
FieldMatrix< alu3d_ctype, numVerticesPerFace, dimworld > CoordinateType
Definition: faceutility.hh:262
bool generatedLocal_
Definition: faceutility.hh:307
CoordinateType coordsNeighborLocal_
Definition: faceutility.hh:304
const CoordinateType & intersectionNeighborLocal() const
Definition: faceutility_imp.cc:515
@ numVerticesPerFace
Definition: faceutility.hh:255
NonConformingFaceMapping< dim, dimworld, type, Comm > NonConformingMappingType
Definition: faceutility.hh:242
FieldVector< alu3d_ctype, 3 > NormalType
Definition: faceutility.hh:259
ReferenceElements< alu3d_ctype, 2 > ReferenceFaceContainerType
Definition: faceutility.hh:247
const ConnectorType & connector_
Definition: faceutility.hh:299
ALU3dGridGeometricFaceInfoBase(const ConnectorType &)
Definition: faceutility_imp.cc:476
ElementTopologyMapping< type > ElementTopo
Definition: faceutility.hh:240
SideIdentifier
Definition: faceutility.hh:254
@ OUTER
Definition: faceutility.hh:254
@ INNER
Definition: faceutility.hh:254
ALU3dGridGeometricFaceInfoBase(const ALU3dGridGeometricFaceInfoBase &)=default
std::decay_t< decltype(ReferenceFaceContainerType::general(std::declval< const Dune::GeometryType & >))) > ReferenceFaceType
Definition: faceutility.hh:252
FaceTopologyMapping< type > FaceTopo
Definition: faceutility.hh:241
void resetFaceGeom()
reset status of faceGeomInfo
Definition: faceutility_imp.cc:499
CoordinateType coordsSelfLocal_
Definition: faceutility.hh:303
ALU3dGridFaceInfo< dim, dimworld, type, Comm > ConnectorType
Definition: faceutility.hh:267
ReferenceElements< alu3d_ctype, 3 > ReferenceElementContainerType
Definition: faceutility.hh:245
static const ReferenceElementType & getReferenceElement()
Definition: faceutility.hh:309
std::decay_t< decltype(ReferenceElementContainerType::general(std::declval< const Dune::GeometryType & >))) > ReferenceElementType
Definition: faceutility.hh:250
const CoordinateType & intersectionSelfLocal() const
Definition: faceutility_imp.cc:507
ALU3dGridFaceInfo< dim, dimworld, type, Comm >::GEOFaceType GEOFaceType
Definition: faceutility.hh:264
bool generatedGlobal_
Definition: faceutility.hh:306
Definition: faceutility.hh:323
ALU3dGridFaceInfo< dim, dimworld, tetra, Comm > ConnectorType
Definition: faceutility.hh:332
ALU3dGridGeometricFaceInfoTetra(const ConnectorType &ctor)
Definition: faceutility_imp.cc:526
void resetFaceGeom()
reset status of faceGeomInfo
Definition: faceutility_imp.cc:532
void buildGlobalGeom(GeometryImp &geo) const
update global geometry
Definition: faceutility_imp.cc:548
NormalType & outerNormal(const FieldVector< alu3d_ctype, 2 > &local) const
Definition: faceutility_imp.cc:566
ALU3dGridFaceInfo< dim, dimworld, tetra, Comm >::GEOFaceType GEOFaceType
Definition: faceutility.hh:330
Base::FaceTopo FaceTopo
Definition: faceutility.hh:329
FieldVector< alu3d_ctype, 3 > NormalType
Definition: faceutility.hh:328
Definition: faceutility.hh:367
ALU3dGridFaceInfo< dim, dimworld, hexa, Comm > ConnectorType
Definition: faceutility.hh:377
SurfaceNormalCalculator SurfaceMappingType
Definition: faceutility.hh:375
void buildGlobalGeom(GeometryImp &geo) const
update global geometry
Definition: faceutility_imp.cc:621
NormalType & outerNormal(const FieldVector< alu3d_ctype, 2 > &local) const
Definition: faceutility_imp.cc:639
ALU3dGridFaceInfo< dim, dimworld, hexa, Comm >::GEOFaceType GEOFaceType
Definition: faceutility.hh:374
Base::FaceTopo FaceTopo
Definition: faceutility.hh:373
FieldVector< alu3d_ctype, 3 > NormalType
Definition: faceutility.hh:372
void resetFaceGeom()
reset status of faceGeomInfo
Definition: faceutility_imp.cc:603
ALU3dGridGeometricFaceInfoHexa(const ConnectorType &)
Definition: faceutility_imp.cc:595
SideIdentifier
Definition: faceutility.hh:433
@ INNER
Definition: faceutility.hh:433
FaceTopologyMapping< type > FaceTopo
Definition: faceutility.hh:421
static const ReferenceElementType & getReferenceElement()
Definition: faceutility.hh:491
const ConnectorType & connector_
Definition: faceutility.hh:483
FieldVector< alu3d_ctype, dimworld > NormalType
Definition: faceutility.hh:437
LocalCoordinateType coordsSelfLocal_
Definition: faceutility.hh:485
bool generatedLocal_
Definition: faceutility.hh:489
ElementTopologyMapping< type > ElementTopo
Definition: faceutility.hh:420
ReferenceElements< alu3d_ctype, 1 > ReferenceFaceContainerType
Definition: faceutility.hh:426
bool generatedGlobal_
Definition: faceutility.hh:488
FieldMatrix< alu3d_ctype, numVerticesPerFace, 2 > LocalCoordinateType
Definition: faceutility.hh:443
LocalCoordinateType coordsNeighborLocal_
Definition: faceutility.hh:486
ALU3dGridFaceInfo< 2, dimworld, type, Comm >::GEOFaceType GEOFaceType
Definition: faceutility.hh:445
std::decay_t< decltype(ReferenceFaceContainerType::general(std::declval< const Dune::GeometryType & >))) > ReferenceFaceType
Definition: faceutility.hh:431
ALU3dGridFaceInfo< 2, dimworld, type, Comm > ConnectorType
Definition: faceutility.hh:448
ReferenceElements< alu3d_ctype, 2 > ReferenceElementContainerType
Definition: faceutility.hh:424
FieldMatrix< alu3d_ctype, numVerticesPerFace, dimworld > CoordinateType
Definition: faceutility.hh:440
std::decay_t< decltype(ReferenceElementContainerType::general(std::declval< const Dune::GeometryType & >))) > ReferenceElementType
Definition: faceutility.hh:429
Base::FaceTopo FaceTopo
Definition: faceutility.hh:511
ALU3dGridFaceInfo< 2, dimworld, tetra, Comm >::GEOFaceType GEOFaceType
Definition: faceutility.hh:512
ALU3dGridFaceInfo< 2, dimworld, tetra, Comm >::GEOElementType GEOElementType
Definition: faceutility.hh:513
ALU3dGridFaceInfo< 2, dimworld, tetra, Comm > ConnectorType
Definition: faceutility.hh:514
FieldVector< alu3d_ctype, dimworld > NormalType
Definition: faceutility.hh:510
ALU3dGridFaceInfo< 2, dimworld, hexa, Comm > ConnectorType
Definition: faceutility.hh:559
Base::FaceTopo FaceTopo
Definition: faceutility.hh:555
ALU3dGridFaceInfo< 2, dimworld, hexa, Comm >::GEOElementType GEOElementType
Definition: faceutility.hh:557
FieldVector< alu3d_ctype, dimworld > NormalType
Definition: faceutility.hh:554
ALU3dGridFaceInfo< 2, dimworld, hexa, Comm >::GEOFaceType GEOFaceType
Definition: faceutility.hh:556
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