00001 #ifndef _MY_PoissonFEM_ 00002 #define _MY_PoissonFEM_ 00003 #include "globals.h" 00004 #include "orthomesh.h" 00005 #include "dynamicbase.h" 00006 #include <lac/sparse_direct.h> 00007 #include "varformpoisson.h" 00008 #include "fedealwrapperq1.h" 00009 00010 #include "linearsolver.h" 00015 class PoissonFEM : public DynamicBase 00016 { 00017 private: 00018 OrthoMesh &m_mesh; 00019 VecDouble &m_cK; 00020 FEDealWrapperQ1 ff; 00021 VarFormPoisson m_eqvar; 00022 SparsityPattern m_sparsity; 00023 SparseMatrix<double> m_M; 00024 VecDouble m_vRHS,m_sol; 00025 LinearSolver &m_solver; 00026 unsigned m_debugLevel; 00027 MapIntDouble m_dirichlet_bc; 00028 Function3D &m_fN; 00029 00030 protected: 00031 00032 public: 00033 PoissonFEM(OrthoMesh &mesh, VecDouble &cK, Function3D &fD, Function3D &fN,LinearSolver &solver,unsigned debugLevel=0); 00034 ~PoissonFEM(){} 00035 virtual void iterate(TransportBase &trans); 00036 virtual void printOutput(); 00037 virtual void getVelocitiesAtFaces(Matrix& M); 00038 virtual const VecDouble& getPressureAtCells(){return m_sol;} 00039 }; 00040 00041 #endif