00001 #ifndef _MY__MixedHybridIncompressible_ 00002 #define _MY_MixedHybridIncompressible_ 00003 #include "mixedhybridbase.h" 00004 #include "linearsolver.h" 00005 00019 class MixedHybridIncompressible : public MixedHybridBase, public DynamicBase 00020 { 00021 private: 00022 00023 protected: 00024 OrthoMesh &m_mesh; 00027 GeneralFunctionInterface &m_fMobT; 00028 GeneralFunctionInterface &m_fFracFlux; 00029 VecDouble m_densities; 00030 const VecDouble &m_vK; 00031 VecDouble m_vMobT; 00032 VecDouble m_vGravTerm; 00033 double m_grav; 00034 double m_dt; 00040 00041 SparsityPattern m_sparsePattern; 00042 SparseMatrix<double> m_A; 00043 VecDouble m_B; 00044 VecDouble m_sol; 00046 LinearSolver &m_solver; 00048 00049 00050 00051 int _debugLevel; 00052 00053 00054 HybridFaceBC m_bc; 00055 00056 public: 00057 MixedHybridIncompressible(OrthoMesh &mesh,Function3D &fPrescribedVelocities, Function3D &fPrescribedPression, const VecDouble &K, GeneralFunctionInterface &fMobT, GeneralFunctionInterface &fFracFlux,double grav, VecDouble &densities,LinearSolver &solver,int debugLevel); 00058 ~MixedHybridIncompressible(){} 00059 virtual void iterate(TransportBase &trans); 00060 virtual const VecDouble& getPressureAtCells(){return m_sol;} 00061 virtual void getNormalVelocityAtFaces(VecDouble &vFNC){ this->getNormalVelocitiesFromPressure(vFNC,m_mesh,m_bc,m_vK,m_sol,m_vMobT,m_vGravTerm); 00062 } 00063 virtual void printOutput(); 00064 00065 }; 00066 00067 #endif