00001 00006 #ifndef Poisson2D_hh 00007 #define Poisson2D_hh 00008 00009 #include <set> 00010 #include "basics/typedefs.hh" 00011 #include "geometry/mesh.hh" 00012 #include "operator/sparseMatrix.hh" 00013 #include "hp2D/bilinearForm.hh" 00014 #include "hp2D/linearForm.hh" 00015 #include "Eddy2D_geometries.hh" 00016 #include "Models.hh" 00017 00018 namespace hp2D { 00019 00020 using concepts::Real; 00021 00022 // ************************************************************* Poisson2D ** 00023 00028 class Poisson2D : public Models<Real> { 00029 public: 00030 Poisson2D(concepts::EddyGeometry2D& geom); 00031 virtual ~Poisson2D() {} 00036 virtual void graphicsOut(const uint numPoints, 00037 const std::string path = ""); 00038 protected: 00039 virtual std::ostream& info(std::ostream& os) const; 00041 virtual concepts::Mesh2& mesh_() { return geom_.mesh(); } 00043 virtual const std::string mshAbbr_() { return geom_.meshAbbreviation(); } 00044 private: 00046 void constructor_(); 00048 concepts::EddyGeometry2D& geom_; 00050 std::auto_ptr<concepts::SparseMatrix<Real> > A_; 00051 // load vector 00052 std::auto_ptr<concepts::Vector<Real> > rhs_; 00054 virtual void solve_(); 00056 virtual void matrices_(); 00058 void laplaceMatrix_(); 00060 void linearform_(); 00062 virtual void dataOut_(); 00063 }; 00064 00065 00066 } // namespace hp2D 00067 00068 #endif // Poisson2D_hh