00001 #ifndef _MY_ConservativeMethod_
00002 #define _MY_ConservativeMethod_
00003 #include "transportbase.h"
00004 #include "orthomesh.h"
00005 #include "facefluxfunction.h"
00017 class ConservativeMethod : public TransportBase
00018 {
00019 private:
00020
00021 protected:
00022 void buildDerivatives(OrthoMesh &mesh,const VecDouble &cV,Matrix &MG);
00023 void getCellDerivatives(const VecDouble &sol,const OrthoMesh::Cell_It &cell,double *s0,double *s1, double *s2);
00024
00025
00026 public:
00027 void getValuesOfTheFaceCells(OrthoMesh &mesh,const VecDouble &fBCValues,const VecDouble& cValues,Index face_index, Index CellNeg,Index CellPos,double &SwNeg,double &SwPos);
00028 void getValuesOfTheFaceCells(OrthoMesh &mesh,const VecDouble &fBCValues,const VecDouble& cValues,OrthoMesh::Cash_Face_It &face,double &SwNeg,double &SwPos);
00029 void getValuesOfTheFaceCells(OrthoMesh &mesh,const VecDouble &fBCValues,const VecDouble& cValues,OrthoMesh::Face_It &face,double &SwNeg,double &SwPos);
00030 double calculateTimeStep(OrthoMesh &mesh,double tEnd,double MaxCFL, const VecDouble &vPorosity, FaceFluxFunction &flux);
00031
00032 ConservativeMethod(){}
00033 virtual ~ConservativeMethod(){}
00034
00035 };
00036
00037 #endif