00001 #ifndef _MY_LaxFriedrichsForSystem_
00002 #define _MY_LaxFriedrichsForSystem_
00003 #include "conservativemethodforsystem.h"
00004 #include "facefluxfunction.h"
00005 #include "diffusivestep.h"
00006 #include "vecincbc.h"
00007 #include "arrayofvecdouble.h"
00008 #include "fixedvaluecondition.h"
00009
00010
00014 class LaxFriedrichsForSystem : public ConservativeMethodForSystem
00015 {
00016 protected:
00017 VecIncBC m_vbc;
00018 VecIndex m_cellsOfBCFaces;
00019 OrthoMesh &m_mesh;
00020 const VecDouble& m_cPor;
00021 FaceFluxFunction &m_flux;
00022 const unsigned n_components;
00023 ArrayOfVecDouble m_sol,m_solAnt;
00024 FixedValueCondition m_fixedC;
00025
00026
00027
00028
00029 double m_CFL;
00030
00031
00032 protected:
00033
00034 public:
00035 LaxFriedrichsForSystem(OrthoMesh &mesh,Function3D &fInitU,const VecDouble &cPor,Function3D &fPrescribedU,FaceFluxFunction &flux, FixedValueCondition &fixedC, double CFL);
00036 virtual ArrayOfVecDouble& getSolutionAtCells();
00037
00038 virtual void updateVelocities(DynamicBase &dynMod);
00039 const VecDouble& getPorosity(){return m_cPor;}
00040 virtual void iterateN(unsigned nSteps, double dt);
00041 virtual double getDt(double t,double tEnd);
00042 virtual ~LaxFriedrichsForSystem(){}
00043 virtual void printOutput();
00044 virtual void updateFixedPressureBC(Function3D *fDP,FlashCompositional &flash);
00045 void getAdjCellOfBCFaces(OrthoMesh &mesh,VecIncBC &vbc,VecIndex &vCells);
00046 void updateBCForCompressibility(VecIncBC &vbc,DynamicBase &dyn,FlashCompositional &flash);
00047
00048
00049
00050
00051
00052
00053 };
00054
00055
00056 #endif