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