00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef OPM_INCOMPTPFAPOLYMER_HEADER_INCLUDED
00021 #define OPM_INCOMPTPFAPOLYMER_HEADER_INCLUDED
00022
00023
00024 #include <opm/core/pressure/IncompTpfa.hpp>
00025 #include <vector>
00026
00027 struct UnstructuredGrid;
00028 struct Wells;
00029 struct FlowBoundaryConditions;
00030
00031 namespace Opm
00032 {
00033
00034 class IncompPropertiesInterface;
00035 class RockCompressibility;
00036 class PolymerProperties;
00037 class LinearSolverInterface;
00038 class PolymerState;
00039 class WellState;
00040 class SimulationDataContainer;
00041
00049 class IncompTpfaPolymer : public IncompTpfa
00050 {
00051 public:
00052
00073 IncompTpfaPolymer(const UnstructuredGrid& grid,
00074 const IncompPropertiesInterface& props,
00075 const RockCompressibility* rock_comp_props,
00076 const PolymerProperties& poly_props,
00077 LinearSolverInterface& linsolver,
00078 const double residual_tol,
00079 const double change_tol,
00080 const int maxiter,
00081 const double* gravity,
00082 const Wells* wells,
00083 const std::vector<double>& src,
00084 const FlowBoundaryConditions* bcs);
00085
00086
00094 void solve(const double dt,
00095 PolymerState& state,
00096 WellState& well_state);
00097
00098 private:
00099 virtual void computePerSolveDynamicData(const double dt,
00100 const SimulationDataContainer& state,
00101 const WellState& well_state);
00102 private:
00103
00104 const PolymerProperties& poly_props_;
00105
00106 const std::vector<double>* c_;
00107 const std::vector<double>* cmax_;
00108 };
00109
00110 }
00111
00112 #endif // OPM_INCOMPTPFAPOLYMER_HEADER_INCLUDED