00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef OPM_POLYMERUTILITIES_HEADER_INCLUDED
00021 #define OPM_POLYMERUTILITIES_HEADER_INCLUDED
00022
00023
00024 #include <opm/core/grid.h>
00025 #include <opm/core/props/IncompPropertiesInterface.hpp>
00026 #include <opm/core/props/BlackoilPropertiesInterface.hpp>
00027 #include <opm/polymer/PolymerProperties.hpp>
00028 #include <opm/polymer/PolymerState.hpp>
00029 #include <opm/polymer/PolymerBlackoilState.hpp>
00030 #include <opm/core/props/rock/RockCompressibility.hpp>
00031 #include <opm/core/utility/SparseVector.hpp>
00032 #include <vector>
00033
00034
00035 namespace Opm
00036 {
00037
00045 void computeTotalMobility(const Opm::IncompPropertiesInterface& props,
00046 const Opm::PolymerProperties& polyprops,
00047 const std::vector<int>& cells,
00048 const std::vector<double>& s,
00049 const std::vector<double>& c,
00050 const std::vector<double>& cmax,
00051 std::vector<double>& totmob);
00052
00063 void computeTotalMobilityOmega(const Opm::IncompPropertiesInterface& props,
00064 const Opm::PolymerProperties& polyprops,
00065 const std::vector<int>& cells,
00066 const std::vector<double>& s,
00067 const std::vector<double>& c,
00068 const std::vector<double>& cmax,
00069 std::vector<double>& totmob,
00070 std::vector<double>& omega);
00071
00080 void computeFractionalFlow(const Opm::IncompPropertiesInterface& props,
00081 const Opm::PolymerProperties& polyprops,
00082 const std::vector<int>& cells,
00083 const std::vector<double>& s,
00084 const std::vector<double>& c,
00085 const std::vector<double>& cmax,
00086 std::vector<double>& fractional_flows);
00087
00099 void computeFractionalFlow(const Opm::BlackoilPropertiesInterface& props,
00100 const Opm::PolymerProperties& polyprops,
00101 const std::vector<int>& cells,
00102 const std::vector<double>& p,
00103 const std::vector<double>& T,
00104 const std::vector<double>& z,
00105 const std::vector<double>& s,
00106 const std::vector<double>& c,
00107 const std::vector<double>& cmax,
00108 std::vector<double>& fractional_flows);
00109
00128 void computeInjectedProduced(const IncompPropertiesInterface& props,
00129 const Opm::PolymerProperties& polyprops,
00130 const PolymerState& state,
00131 const std::vector<double>& transport_src,
00132 const std::vector<double>& inj_c,
00133 const double dt,
00134 double* injected,
00135 double* produced,
00136 double& polyinj,
00137 double& polyprod);
00138
00157 void computeInjectedProduced(const BlackoilPropertiesInterface& props,
00158 const Opm::PolymerProperties& polyprops,
00159 const PolymerBlackoilState& state,
00160 const std::vector<double>& transport_src,
00161 const std::vector<double>& inj_c,
00162 const double dt,
00163 double* injected,
00164 double* produced,
00165 double& polyinj,
00166 double& polyprod);
00167
00174 double computePolymerMass(const std::vector<double>& pv,
00175 const std::vector<double>& s,
00176 const std::vector<double>& c,
00177 const double dps);
00178
00185 double computePolymerAdsorbed(const IncompPropertiesInterface& props,
00186 const Opm::PolymerProperties& polyprops,
00187 const std::vector<double>& pv,
00188 const std::vector<double>& cmax);
00189
00198 double computePolymerAdsorbed(const UnstructuredGrid& grid,
00199 const BlackoilPropertiesInterface& props,
00200 const Opm::PolymerProperties& polyprops,
00201 const PolymerBlackoilState& state,
00202 const RockCompressibility* rock_comp);
00203
00204
00205
00206
00207 }
00208
00209
00210 #endif // OPM_POLYMERUTILITIES_HEADER_INCLUDED