00001 #ifndef _MY__MixedHybridIncompressible_
00002 #define _MY_MixedHybridIncompressible_
00003 #include "mixedhybridbase.h"
00004 #include "linearsolver.h"
00005
00019 class MixedHybridIncompressible : public MixedHybridBase, public DynamicBase
00020 {
00021 private:
00022
00023 protected:
00024 OrthoMesh &m_mesh;
00027 GeneralFunctionInterface &m_fMobT;
00028 GeneralFunctionInterface &m_fFracFlux;
00029 VecDouble m_densities;
00030 const VecDouble &m_vK;
00031 VecDouble m_vMobT;
00032 VecDouble m_vGravTerm;
00033 double m_grav;
00034 double m_dt;
00040
00041 SparsityPattern m_sparsePattern;
00042 SparseMatrix<double> m_A;
00043 VecDouble m_B;
00044 VecDouble m_sol;
00046 LinearSolver &m_solver;
00048
00049
00050
00051 int _debugLevel;
00052
00053
00054 HybridFaceBC m_bc;
00055
00056 public:
00057 MixedHybridIncompressible(OrthoMesh &mesh,Function3D &fPrescribedVelocities, Function3D &fPrescribedPression, const VecDouble &K, GeneralFunctionInterface &fMobT, GeneralFunctionInterface &fFracFlux,double grav, VecDouble &densities,LinearSolver &solver,int debugLevel);
00058 ~MixedHybridIncompressible(){}
00059 virtual void iterate(TransportBase &trans);
00060 virtual const VecDouble& getPressureAtCells(){return m_sol;}
00061 virtual void getNormalVelocityAtFaces(VecDouble &vFNC){ this->getNormalVelocitiesFromPressure(vFNC,m_mesh,m_bc,m_vK,m_sol,m_vMobT,m_vGravTerm);
00062 }
00063 virtual void printOutput();
00064
00065 };
00066
00067 #endif