Go to the documentation of this file.00001
00008 #ifndef hp2dedge_hh
00009 #define hp2dedge_hh
00010
00011 #include <iostream>
00012 #include <memory>
00013 #include "basics/typedefs.hh"
00014 #include "basics/outputOperator.hh"
00015 #include "basics/vectorsMatrices.hh"
00016 #include "geometry/cell1D.hh"
00017 #include "geometry/elementMaps.hh"
00018 #include "geometry/integral.hh"
00019 #include "integration/quadRule.hh"
00020 #include "space/tmatrix.hh"
00021 #include "space/hpMethod.hh"
00022 #include "space/integral.hh"
00023 #include "hp1D/element.hh"
00024 #include "integration/karniadakis.hh"
00025
00026 namespace hp2D {
00027
00028 using concepts::Real;
00029
00030
00031 template<typename F>
00032 class Quad;
00033
00034
00035
00036
00046 class QuadEdgeBase : public concepts::OutputOperator {
00047 public:
00065 template<class F>
00066 std::pair<hp1D::Element<F>*,concepts::Edge2d*>
00067 edge(const Quad<F>& elm, const ushort k, bool emptyElm = true,
00068 hp1D::Element<F>* edge = 0);
00069 protected:
00070 virtual std::ostream& info(std::ostream& os) const;
00071
00080 virtual Real weight_(bool first, bool rho) const = 0;
00081 private:
00090 template<class F>
00091 void transferDof_(const ushort* p, const ushort k, const bool rho,
00092 const bool first, const concepts::TMatrix<F>& T,
00093 hp1D::Element<F>& edge);
00094
00102 bool edgeDof_(const ushort* p, const ushort k, const bool rho,
00103 const uint dofQuad, uint& dofEdge);
00104 };
00105
00106 class QuadEdgeFirst : public QuadEdgeBase {
00107 protected:
00108 virtual std::ostream& info(std::ostream& os) const;
00109 private:
00110 virtual Real weight_(bool first, bool rho) const;
00111 };
00112
00113 class QuadEdgeMean : public QuadEdgeBase {
00114 protected:
00115 virtual std::ostream& info(std::ostream& os) const;
00116 private:
00117 virtual Real weight_(bool first, bool rho) const;
00118 };
00119
00120 class QuadEdgeJump : public QuadEdgeBase {
00121 protected:
00122 virtual std::ostream& info(std::ostream& os) const;
00123 private:
00124 virtual Real weight_(bool first, bool rho) const;
00125 };
00126
00127
00128 }
00129
00130 #endif // hp2dedge_hh