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

hp2Dedge/hpAdaptiveSpaceHCurl.hh
Go to the documentation of this file.
00001 
00006 #ifndef hpAdaptSpace2DHCurl_hh
00007 #define hpAdaptSpace2DHCurl_hh
00008 
00009 #include "basics/typedefs.hh"
00010 #include "toolbox/inputOutput.hh"
00011 #include "formula/boundary.hh"
00012 #include "hp2D/hpAdaptiveSpace.hh"
00013 #include "hp2D/refinePreBuilder.hh"
00014 #include "hp2Dedge/buildHCurlTColumns.hh"
00015 
00016 namespace concepts {
00017 
00018   // forward declarations
00019   template<class F>
00020   class SMatrixBase;
00021 
00022   class SMatrix1D;
00023 }
00024 
00025 namespace hp2Dedge {
00026 
00027   // forward declarations
00028   template<class F>
00029   class Quad;
00030 }
00031 
00032 namespace hp2D {
00033 
00034   class hpAdaptiveSpaceHCurl;
00035 
00036   using concepts::Real;
00037 
00038   // ***************************************** hpAdaptiveSpaceHCurlFromInput **
00039 
00057    hpAdaptiveSpaceHCurl*
00058    hpAdaptiveSpaceHCurlFromInput(concepts::Mesh2& msh,
00059          const concepts::InOutParameters input,
00060          bool verbose = false);
00061 
00062   // ************************************************** hpAdaptiveSpaceHCurl **
00063 
00064   class hpAdaptiveSpaceHCurl : public hpAdaptiveSpace<Real> {
00065   public:
00066     typedef concepts::Scan<hp2D::Element<Real> > Scan;
00067 
00079     hpAdaptiveSpaceHCurl(concepts::Mesh2& msh, uint l, uint p,
00080                          concepts::BoundaryConditions* bc = 0,
00081                          concepts::CellConditions* cc = 0);
00098 //     hpAdaptiveSpaceHCurl(hpFull& prebuild, 
00099 //       concepts::BoundaryConditions* bc = 0,
00100 //       concepts::CellConditions* cc = 0, uint spcNo = 0,
00101 //       uint* offset = 0, uint* idx = 0);
00105     hpAdaptiveSpaceHCurl(const hpAdaptiveSpaceHCurl& spc);
00106     virtual ~hpAdaptiveSpaceHCurl();
00107 
00118     void buildEdgeDofs(const BuildTColumnsBase<Real>* b) {
00119       setBuildEdgeDofs_(b);
00120     }
00129     void buildInnerDofs(const BuildTColumnsBase<Real>* b) {
00130       setBuildInnerDofs_(b);
00131     }
00133     
00137     void recomputeShapefunctions();
00138   protected:
00139     virtual std::ostream& info(std::ostream& os) const;
00140   private:
00144     virtual Element<Real>* newElement_(concepts::Cell2& cell, ushort* pMax,
00145                concepts::TColumn<Real>* T0,
00146                concepts::TColumn<Real>* T1) const;
00151     virtual concepts::TColumn<Real>*
00152     applySmatrices_(const concepts::Element<Real>& elm, uint i,
00153         const concepts::TColumn<Real>* T0,
00154         const concepts::TColumn<Real>* T1);
00161     void recomputeSmatrices_(const hp2Dedge::Quad<Real>& elm);
00162 
00164     std::auto_ptr<concepts::SMatrix1D>  S1left_t_, S1right_t_, S1left_n_,
00165       S1right_n_;
00166 
00169     std::auto_ptr<concepts::SMatrixBase<Real> > Smatrices2H_X_[2];
00170     std::auto_ptr<concepts::SMatrixBase<Real> > Smatrices2H_Y_[2];
00171     std::auto_ptr<concepts::SMatrixBase<Real> > Smatrices2V_X_[2];
00172     std::auto_ptr<concepts::SMatrixBase<Real> > Smatrices2V_Y_[2];
00173 
00177     std::auto_ptr<concepts::SMatrixBase<Real> > Smatrices2H_[2];
00181     std::auto_ptr<concepts::SMatrixBase<Real> > Smatrices2V_[2];
00185     std::auto_ptr<concepts::SMatrixBase<Real> > Smatrices4_[4];
00186 
00187   };
00188 
00189 } // namespace hp2D
00190 
00191 #endif // hpAdaptSpace2DHCurl_hh

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