Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)

hp2D/edge.hh
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   // forward declaration
00031   template<typename F>
00032   class Quad;
00033 
00034 
00035   // ************************************************************ QuadEdgeBase **
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 } // namespace hp2D
00129 
00130 #endif // hp2dedge_hh

Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)