00001 #ifndef _MY_FaceFluxCO2Brine_
00002 #define _MY_FaceFluxCO2Brine_
00003 #include "facefluxfunction.h"
00004 #include "flashcompositional.h"
00005 #include "fchaventmobility.h"
00006 #include "fbucleyleverettgravitymob.h"
00007 #include "dfchaventmobility.h"
00008 #include "dfbucleyleverettgravitymob.h"
00009
00010
00017 class FaceFluxCO2Brine : public FaceFluxFunction
00018 {
00019 private:
00020 FlashCompositional &m_flash;
00021 Function1D &m_mob,&m_gravMob,&m_Dmob,&m_DgravMob;
00022
00023
00024
00025
00026
00027 VecDouble m_vNormalVel,;
00028 const VecDouble *m_pP;
00029 const VecDouble &m_K;
00030 VecDouble m_densities1,m_densities2;
00031 double m_Sw1,m_Sw2,m_cell1,m_cell2;
00032 double m_grav;
00033 OrthoMesh &m_mesh;
00034 protected:
00035 virtual void fluxAtFace(VecDouble &vFlux, const FaceInfo &face,const VecDouble &Q1,const VecDouble &Q2);
00036 virtual double maxLocalCharVelocity(const FaceInfo &face,const VecDouble &Q1, const VecDouble &Q2);
00037
00038 public:
00039 FaceFluxCO2Brine(OrthoMesh &mesh,FlashCompositional &flash,const VecDouble &K,GeneralFunctionInterface &fMob,GeneralFunctionInterface &fDMob,GeneralFunctionInterface &fGrav,GeneralFunctionInterface &fDGrav,double grav);
00040
00041 virtual ~FaceFluxCO2Brine(){}
00042
00043
00044
00045
00046
00047 virtual const VecDouble& getPressure(){assert(m_pP);return *m_pP;}
00048 virtual const VecDouble& getK(){return m_K;}
00049 virtual void updateDynamicData(DynamicBase &dynMod);
00050 virtual void maxGlobalCharVelocity(double vel[3]);
00051 virtual void transformToComponentMoles(VecDouble &v1);
00052 };
00053
00054 #endif