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