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
00019 template<class F>
00020 class SMatrixBase;
00021
00022 class SMatrix1D;
00023 }
00024
00025 namespace hp2Dedge {
00026
00027
00028 template<class F>
00029 class Quad;
00030 }
00031
00032 namespace hp2D {
00033
00034 class hpAdaptiveSpaceHCurl;
00035
00036 using concepts::Real;
00037
00038
00039
00057 hpAdaptiveSpaceHCurl*
00058 hpAdaptiveSpaceHCurlFromInput(concepts::Mesh2& msh,
00059 const concepts::InOutParameters input,
00060 bool verbose = false);
00061
00062
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
00099
00100
00101
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 }
00190
00191 #endif // hpAdaptSpace2DHCurl_hh