00001 #ifndef _MY_MixedHybridCompositional_ 00002 #define _MY_MixedHybridCompositional_ 00003 #include "flashcompositional.h" 00004 #include "linearsolver.h" 00005 #include "mixedhybridbase.h" 00006 #include "compressibledynamic.h" 00007 00011 class MixedHybridCompositional : public MixedHybridBase, public CompressibleDynamic 00012 { 00013 private: 00014 protected: 00015 00016 OrthoMesh &m_mesh; 00019 GeneralFunctionInterface &m_fMobT; 00020 GeneralFunctionInterface &m_fFracFlux; 00021 const VecDouble &m_vPor; 00022 const VecDouble &m_vK; 00023 double m_grav; 00024 double m_dt; 00030 00031 SparsityPattern m_sparsePattern; 00032 SparseMatrix<double> m_A; 00033 VecDouble m_B; 00034 VecDouble m_sol; 00035 VecDouble m_solAnt; 00037 VecDouble m_Vq; 00038 LinearSolver &m_solver; 00040 00041 00042 FlashCompositional &m_flash; 00043 00044 int _debugLevel; 00045 00050 VecDouble m_vInvH2; 00051 double m_inv_hz; 00054 HybridFaceBC m_bc; 00055 00056 protected: 00057 00058 public: 00059 MixedHybridCompositional(OrthoMesh &mesh,Function3D &fPInit,Function3D &fPrescribedVelocities, Function3D &fPrescribedPression, const VecDouble &K, const VecDouble &vPor, GeneralFunctionInterface &fMobT, GeneralFunctionInterface &fRelMobilities,double grav, double dt,FlashCompositional &flash,LinearSolver &solver,int debugLevel,bool bCheckNoBC=false); 00060 ~MixedHybridCompositional(); 00061 00062 00063 virtual void getVelocitiesAtFaces(Matrix &vel); 00064 virtual void printOutput(); 00065 virtual const VecDouble& getPressureAtCells(); 00066 virtual void getNormalVelocityAtFaces(VecDouble &vFNC); 00067 void getVelocitiesAtCells(Matrix &vel); 00068 00069 00070 virtual void setDt(double dt){m_dt=dt;} 00071 const HybridFaceBC& getFaceBC(){return m_bc;} 00072 00073 void testSolution(); 00074 }; 00075 00076 #endif