Class documentation of Concepts

Loading...
Searching...
No Matches
edge.hh
Go to the documentation of this file.
1
8#ifndef hp2dedge_edge_hh
9#define hp2dedge_edge_hh
10
11#include <iostream>
12#include <memory>
13#include "basics/typedefs.hh"
16#include "geometry/cell1D.hh"
18#include "geometry/integral.hh"
21#include "space/tmatrix.hh"
22#include "space/hpMethod.hh"
23#include "space/integral.hh"
24#include "hp1D/element.hh"
26
27
28namespace hp2Dedge {
29
30 using concepts::Real;
31 using concepts::Z2;
32
33 // forward declaration
34 template<typename F>
35 class Quad;
36
37 // ************************************************************ QuadEdgeBase **
38
50 public:
57 normalVectorRule = concepts::EdgeNormalVectorRule())
58 : normalVectorRule_(normalVectorRule.clone())
59 {}
60
78 template<class F>
79 std::pair<hp1D::LegendreElement<F>*,concepts::Edge2d*>
80 edge(const Quad<F>& elm, const ushort k, bool emptyElm = true,
82 protected:
83 virtual std::ostream& info(std::ostream& os) const;
84
86 std::unique_ptr<const concepts::EdgeNormalVectorRule> normalVectorRule_;
87
98 virtual Real weight_(bool first, Z2 dir) const = 0;
99 private:
100
112 template<class F>
113 void transferDof_(const ushort* p, const ushort k, const bool rho,
114 const bool first, const Z2 dir,
115 const concepts::TMatrix<F>& T,
117 };
118
119 // *********************************************************** QuadEdgeFirst **
120
122 public:
124 normalVectorRule = concepts::EdgeNormalVectorRule())
125 : QuadEdgeBase(normalVectorRule) {}
126 protected:
127 virtual std::ostream& info(std::ostream& os) const;
128 private:
129 virtual Real weight_(bool first, Z2 dir) const;
130 };
131
132 // ************************************************************ QuadEdgeMean **
133
134 class QuadEdgeMean : public QuadEdgeBase {
135 public:
137 normalVectorRule = concepts::EdgeNormalVectorRule())
138 : QuadEdgeBase(normalVectorRule) {}
139 protected:
140 virtual std::ostream& info(std::ostream& os) const;
141 private:
142 virtual Real weight_(bool first, Z2 dir) const;
143 };
144
145 // ************************************************************ QuadEdgeJump **
146
150 class QuadEdgeJump : public QuadEdgeBase {
151 public:
153 normalVectorRule = concepts::EdgeNormalVectorRule())
154 : QuadEdgeBase(normalVectorRule) {}
155 protected:
156 virtual std::ostream& info(std::ostream& os) const;
157 private:
158 virtual Real weight_(bool first, Z2 dir) const;
159 };
160
161} // namespace hp2Dedge
162
163#endif // hp2dedge_edge_hh
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual Real weight_(bool first, Z2 dir) const =0
std::unique_ptr< const concepts::EdgeNormalVectorRule > normalVectorRule_
Rule for defining the direction of the normal vector for new edges.
Definition edge.hh:86
std::pair< hp1D::LegendreElement< F > *, concepts::Edge2d * > edge(const Quad< F > &elm, const ushort k, bool emptyElm=true, hp1D::LegendreElement< F > *edge=0)
QuadEdgeBase(const concepts::EdgeNormalVectorRule &normalVectorRule=concepts::EdgeNormalVectorRule())
Definition edge.hh:56
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
double Real
Definition typedefs.hh:39