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