00001 #ifndef _MY_ConservativeMethodForSystem_
00002 #define _MY_ConservativeMethodForSystem_
00003 #include "facefluxfunction.h"
00004 #include "transportbase.h"
00005 #include "arrayofvectors.h"
00006 class FlashCompositional;
00007
00008
00009
00010
00022 class ConservativeMethodForSystem : public TransportBase
00023 {
00024 private:
00025
00026 protected:
00027 void buildDerivatives(OrthoMesh &mesh,const VecDouble &cV,Matrix &MG);
00028 void getCellDerivatives(const VecDouble &sol,const OrthoMesh::Cell_It &cell,double *s0,double *s1, double *s2);
00029
00030
00031 bool getValuesOfTheFaceCells(OrthoMesh &mesh,VecIncBC &vbc,const ArrayOfVecDouble& vcValues, Index face_index, Index negCell, Index posCell,VecDoubleRef &vSwNeg,VecDoubleRef &vSwPos);
00032
00033
00034 bool getValuesOfTheFaceCellsScalar(OrthoMesh &mesh,VecIncBC &vbc,const VecDouble &cValues, Index face_index, Index negCell, Index posCell,double *dNeg,double *dPos);
00035
00036 double calculateTimeStep(OrthoMesh &mesh,double tEnd,double MaxCFL, const VecDouble &vPorosity, FaceFluxFunction &flux);
00037 public:
00038 ConservativeMethodForSystem(){}
00039 virtual ~ConservativeMethodForSystem(){}
00040 virtual void updateFixedPressureBC(Function3D *fDP,FlashCompositional &flash)=0;
00041
00042 };
00043
00044 #endif