00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef OPM_POLYMERINFLOW_HEADER_INCLUDED
00021 #define OPM_POLYMERINFLOW_HEADER_INCLUDED
00022
00023 #include <opm/core/utility/SparseVector.hpp>
00024 #include <opm/parser/eclipse/Deck/Deck.hpp>
00025 #include <opm/parser/eclipse/EclipseState/Schedule/Well.hpp>
00026 #include <opm/parser/eclipse/EclipseState/Schedule/Schedule.hpp>
00027 #include <opm/parser/eclipse/EclipseState/EclipseState.hpp>
00028 #include <opm/parser/eclipse/EclipseState/Schedule/WellPolymerProperties.hpp>
00029 #include <vector>
00030 #include <string>
00031 #include <unordered_map>
00032
00033 struct Wells;
00034
00035 namespace Opm
00036 {
00038 class PolymerInflowInterface
00039 {
00040 public:
00042 virtual ~PolymerInflowInterface() {}
00043
00049 virtual void getInflowValues(const double step_start,
00050 const double step_end,
00051 std::vector<double>& poly_inflow_c) const = 0;
00052 };
00053
00054
00055
00059 class PolymerInflowBasic : public PolymerInflowInterface
00060 {
00061 public:
00066 PolymerInflowBasic(const double starttime,
00067 const double endtime,
00068 const double amount);
00069
00075 virtual void getInflowValues(const double step_start,
00076 const double step_end,
00077 std::vector<double>& poly_inflow_c) const;
00078 private:
00079 double stime_;
00080 double etime_;
00081 double amount_;
00082 };
00083
00084
00088 class PolymerInflowFromDeck : public PolymerInflowInterface
00089 {
00090 public:
00096 PolymerInflowFromDeck(const Opm::EclipseState& eclipseState,
00097 const Wells& wells,
00098 const int num_cells,
00099 size_t currentStep);
00100
00106 virtual void getInflowValues(const double ,
00107 const double ,
00108 std::vector<double>& poly_inflow_c) const;
00109 private:
00110 SparseVector<double> sparse_inflow_;
00111
00112 std::unordered_map<std::string, double> wellPolymerRate_;
00113 void setInflowValues(const Opm::EclipseState& eclipseState,
00114 size_t currentStep);
00115 };
00116
00117
00118 }
00119
00120
00121 #endif // OPM_POLYMERINFLOW_HEADER_INCLUDED