face.hh

Go to the documentation of this file.
1 
6 #ifndef HP3D_FACE_HH
7 #define HP3D_FACE_HH
8 
9 #include "basics/typedefs.hh"
10 #include "basics/outputOperator.hh"
11 #include "basics/Zm.hh"
12 #include "geometry/normalVector.hh"
13 
14 
15 namespace hp2D {
16  // forward declaration
17  template <class F>
18  class Quad;
19 }
20 
21 namespace concepts {
22  // forward declarations
23  class Quad3d;
24  template <class F>
25  class TMatrix;
26 }
27 
28 namespace hp3D {
29 
30  using concepts::Real;
31  using concepts::Z2;
32 
33  // forward declaration
34  class Hexahedron;
35 
36  // ******************************* HexahedronFaceBase *************************
37 
46  public:
49  normalVectorRule = concepts::FaceNormalVectorRule())
50  : normalVectorRule_(normalVectorRule.clone())
51  {}
52 
53  hp2D::Quad<Real>* face(const Hexahedron &elm, const ushort k,
54  bool emptyElm = true,
55  hp2D::Quad<Real>* face = 0);
56 
57  protected:
58  virtual std::ostream& info(std::ostream &os) const;
59 
60  virtual Real weight_(bool first, Z2 dir) const = 0;
61 
62  std::unique_ptr<concepts::FaceNormalVectorRule> normalVectorRule_;
63 
64  private:
65  void transferDof_(const Hexahedron &elm, const ushort k,
66  const bool first, const Z2 dir,
68 
69  bool faceDof_(const Hexahedron &elm, const ushort k,
70  const uint dofHex, uint *dofFace);
71 
72  };
73 
74  // **************************************** HexahedronFaceFirst ***************
75 
77  public:
79  normalVectorRule = concepts::FaceNormalVectorRule())
80  : HexahedronFaceBase(normalVectorRule)
81  {
82  }
83 
84  protected:
85  virtual std::ostream& info(std::ostream &os) const;
86  private:
87  virtual Real weight_(bool first, Z2 dir) const;
88  };
89 
90 
91 
92 }
93 
94 #endif // HP3D_FACE_HH
A 3D FEM element: a hexahedron.
Definition: hexahedron.hh:37
HexahedronFaceFirst(const concepts::FaceNormalVectorRule &normalVectorRule=concepts::FaceNormalVectorRule())
Definition: face.hh:78
bool faceDof_(const Hexahedron &elm, const ushort k, const uint dofHex, uint *dofFace)
HexahedronFaceBase(const concepts::FaceNormalVectorRule &normalVectorRule=concepts::FaceNormalVectorRule())
Constructor.
Definition: face.hh:48
hp2D::Quad< Real > * face(const Hexahedron &elm, const ushort k, bool emptyElm=true, hp2D::Quad< Real > *face=0)
2D hp-FEM for H1-conforming elements.
Class to construct an quadrilateral element out of an hexahedron.
Definition: face.hh:45
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual Real weight_(bool first, Z2 dir) const
std::unique_ptr< concepts::FaceNormalVectorRule > normalVectorRule_
Definition: face.hh:62
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
unsigned short ushort
Abbreviation for unsigned short.
Definition: typedefs.hh:48
Binary group (algebraic): only the values 0 and 1 are represented.
Definition: Zm.hh:16
3D hp-FEM for H1-conforming elements.
Definition: meshDX.hh:23
virtual Real weight_(bool first, Z2 dir) const =0
void transferDof_(const Hexahedron &elm, const ushort k, const bool first, const Z2 dir, hp2D::Quad< Real > &face)
Class providing an output operator.
double Real
Type normally used for a floating point number.
Definition: typedefs.hh:36
Basic namespace for Concepts-2.
Definition: pml_formula.h:16
Class for defining rules in which direction the normal vector should point for created faces from hex...
Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/WebHome
21 August 2020
© 2020 Eidgenössische Technische Hochschule Zürich