00001 #ifndef _MY_TraceFaceFluxWithGravity_ 00002 #define _MY_TraceFaceFluxWithGravity_ 00003 #include "facefluxfunction.h" 00004 00016 class TraceFaceFluxWithGravity : public FaceFluxFunction 00017 { 00018 private: 00019 Function1D &m_fMobW,&m_fMobGrav; 00020 VecDouble &m_cK; 00021 VecDouble *m_pcSw; 00022 double m_gc; 00023 double m_maxK; 00024 Matrix m_Vel; 00025 protected: 00026 00027 public: 00028 TraceFaceFluxWithGravity(unsigned numFaces,Function1D &fMobW,Function1D &fMobGrav,VecDouble &cK,double gc); 00029 00030 ~TraceFaceFluxWithGravity(); 00031 virtual double fluxAtFace(OrthoMesh::Face_It &faceIt,int face,int cell1,int cell2,double &u1,double &u2); 00032 virtual void setVelocity(DynamicBase &dynMod); 00033 virtual void setSw(VecDouble &cSw){m_pcSw = &cSw;} 00034 virtual VecDouble& getSw(){assert(m_pcS);return *m_pcSw;} 00035 virtual void maxGlobalCharVelocity(double vel[3]); 00036 virtual double maxLocalCharVelocity(OrthoMesh::Face_It &faceIt,int face,int cell1,int cell2,double &u1,double &u2); 00037 virtual ~FaceFluxFunction(){} 00038 00039 }; 00040 00041 #endif