00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef OPM_COMPRESSIBLETPFAPOLYMER_HEADER_INCLUDED
00021 #define OPM_COMPRESSIBLETPFAPOLYMER_HEADER_INCLUDED
00022
00023
00024 #include <opm/core/pressure/CompressibleTpfa.hpp>
00025
00026 #include <vector>
00027
00028 struct UnstructuredGrid;
00029 struct Wells;
00030 struct FlowBoundaryConditions;
00031
00032 namespace Opm
00033 {
00034
00035 class BlackoilState;
00036 class PolymerBlackoilState;
00037 class RockCompressibility;
00038 class PolymerProperties;
00039 class LinearSolverInterface;
00040 class PolymerBlackoilState;
00041 class WellState;
00042
00048 class CompressibleTpfaPolymer : public CompressibleTpfa
00049 {
00050 public:
00051
00070 CompressibleTpfaPolymer(const UnstructuredGrid& grid,
00071 const BlackoilPropertiesInterface& props,
00072 const RockCompressibility* rock_comp_props,
00073 const PolymerProperties& poly_props,
00074 const LinearSolverInterface& linsolver,
00075 const double residual_tol,
00076 const double change_tol,
00077 const int maxiter,
00078 const double* gravity,
00079 const Wells* wells);
00080
00085 void solve(const double dt,
00086 PolymerBlackoilState& state,
00087 WellState& well_state);
00088
00089 private:
00090 virtual void computeCellDynamicData(const double dt,
00091 const BlackoilState& state,
00092 const WellState& well_state);
00093
00094 virtual void computePerSolveDynamicData(const double dt,
00095 const BlackoilState& state,
00096 const WellState& well_state);
00097
00098
00099 private:
00100
00101 const PolymerProperties& poly_props_;
00102
00103 const std::vector<double>* c_;
00104 const std::vector<double>* cmax_;
00105 std::vector<double> cell_eff_viscosity_;
00106 std::vector<double> cell_relperm_;
00107 };
00108
00109 }
00110
00111 #endif // OPM_COMPRESSIBLETPFAPOLYMER_HEADER_INCLUDED