00001 #ifndef _MY__FaceFluxCompositional_
00002 #define _MY_FaceFluxCompositional_
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
00014 class FaceFluxCompositional : public FaceFluxFunction
00015 {
00016 private:
00017 FlashCompositional &m_flash;
00018 FChaventMobility m_mob;
00019 FBucleyLeverettGravityMob m_gravMob;
00020 DFChaventMobility m_Dmob;
00021 DFBucleyLeverettGravityMob m_DgravMob;
00022 VecDouble m_vNormalVel,;
00023 const VecDouble *m_pP;
00024 const VecDouble &m_K;
00025 VecDouble m_densities1,m_densities2;
00026 double m_Sw1,m_Sw2,m_cell1,m_cell2;
00027 double m_grav;
00028 protected:
00029
00030 public:
00031 FaceFluxCompositional(OrthoMesh &mesh,FlashCompositional &flash,const VecDouble &K,double v1,double v2,double sr1,double sr2,double grav);
00032 virtual ~FaceFluxCompositional(){}
00033 virtual void fluxAtFace(VecDouble &vFlux,OrthoMesh::Face_It &faceIt,int face,int cell1,int cell2,const VecDouble &Q1,const VecDouble &Q2);
00034 virtual const VecDouble& getPressure(){assert(m_pP);return *m_pP;}
00035 virtual const VecDouble& getK(){return m_K;}
00036 virtual void updateDynamicData(DynamicBase &dynMod);
00037 virtual void maxGlobalCharVelocity(double vel[3]);
00038 virtual void maxLocalCharVelocity(VecDouble &vout, OrthoMesh::Face_It &faceIt,int face,int cell1,int cell2,const VecDouble &Q1, const VecDouble &Q2);
00039 virtual void transformToComponentMoles(VecDouble &v1);
00040
00041 };
00042
00043 #endif