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