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