00001 #ifndef _MY_CompDiffusiveStep_
00002 #define _MY_CompDiffusiveStep_
00003 #include "mixedhybridbase.h"
00004 #include "vecincaccess.h"
00005 #include "linearsolver.h"
00006 #include "flashcompositional.h"
00007 #include "diffusivestep.h"
00008
00012 class CompDiffusiveStep : public DiffusiveStep, public MixedHybridBase
00013 {
00014 private:
00015 struct FlashBC
00016 {
00017 double Saq;
00018
00019
00020
00021
00022 };
00023 VecIncAccess<FlashBC> m_flashBC;
00024
00025 protected:
00026
00027 VecDouble m_vSaq,m_cV,m_vV;
00028 VecDouble m_vSaqPrev;
00029 OrthoMesh &m_mesh;
00030 ScalarBC m_swBC;
00031 SparsityPattern m_sparsePattern;
00032 SparseMatrix<double> m_A;
00033 VecDouble m_sol;
00034 VecDouble m_B;
00035 VecDouble m_vCoeff,m_vCoeff2;
00036 LinearSolver& m_solver;
00037 FlashCompositional& m_flash;
00038 ScalarBC m_bc;
00039 const VecDouble &m_vK,&m_vPor;
00040 Function1D &m_fMobPc,&m_DfPc;
00041 public:
00042 CompDiffusiveStep(OrthoMesh &mesh, Function3D &fPrescribedPressure, Function3D &fTransportBC,const VecDouble &vK, const VecDouble &vPor,Function1D &fMobPc, Function1D &DfPc,FlashCompositional &flash,LinearSolver &solver);
00043 virtual ~CompDiffusiveStep();
00044 void setSaqBC(VecIncAccess<FlashBC> &flashbc,ScalarBC &swbc,const Function3D &fPressureBC, const Function3D &fTransBC,FlashCompositional &flash);
00045
00046 virtual void iterate(double dt);
00047 virtual void printOutput(){}
00048
00049 };
00050
00051 #endif