00001 00007 #ifndef pSpaceL2_1D_hh 00008 #define pSpaceL2_1D_hh 00009 00010 //#include "basics/typedefs.hh" 00011 #include "geometry/mesh.hh" 00012 #include "space/space.hh" 00013 #include "element.hh" 00014 00015 namespace hp1D { 00016 00017 using concepts::Real; 00018 00019 // ************************************************************** pSpaceL2 ** 00020 00026 class pSpaceL2 : public concepts::SpaceOnCells<Real> { 00027 public: 00028 typedef concepts::Scan<Element<Real> > Scan; 00037 pSpaceL2(concepts::Mesh1& msh, uint p); 00038 virtual ~pSpaceL2(); 00039 00040 inline uint dim() const { return dim_; } 00041 inline uint nelm() const { return nelm_; } 00042 inline Scan* scan() const { 00043 return new concepts::PListScan<Element<Real> >(*elm_); 00044 } 00045 00049 void recomputeShapefunctions(); 00050 protected: 00051 virtual std::ostream& info(std::ostream& os) const; 00052 private: 00054 concepts::Mesh1& msh_; 00055 00057 uint dim_; 00058 00060 uint nelm_; 00061 00063 uint p_; 00064 00066 concepts::Joiner<Element<Real>*, 1>* elm_; 00067 00068 void buildElements_(concepts::EdgeNd& cell, uint& idx); 00069 }; 00070 00071 00072 } // namespace hp1D 00073 00074 #endif // pSpaceL2_1D_hh