00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef OPM_POLYMERPROPSAD_HEADED_INLCUDED
00022 #define OPM_POLYMERPROPSAD_HEADED_INLCUDED
00023
00024 #include <cmath>
00025 #include <vector>
00026 #include <opm/autodiff/AutoDiffBlock.hpp>
00027 #include <opm/autodiff/AutoDiffHelpers.hpp>
00028 #include <opm/polymer/PolymerProperties.hpp>
00029
00030 namespace Opm {
00031
00032 class PolymerPropsAd
00033 {
00034 public:
00036 double rockDensity() const;
00037
00039 double deadPoreVol() const;
00040
00042 double cMax() const;
00043
00045 const std::vector<double>& shearWaterVelocity() const;
00046
00048 const std::vector<double>& shearViscosityReductionFactor() const;
00049
00051 double plyshlogRefConc() const;
00052
00054 bool hasPlyshlogRefSalinity() const;
00055
00057 bool hasPlyshlogRefTemp() const;
00058
00060 double plyshlogRefSalinity() const;
00061
00063 double plyshlogRefTemp() const;
00064
00066 double shrate() const;
00067
00068 double viscMult(double c) const;
00069
00070 typedef AutoDiffBlock<double> ADB;
00071 typedef ADB::V V;
00072
00073 V viscMult(const V& c) const;
00076
00077
00078 ADB viscMult(const ADB& c) const;
00079
00081 PolymerPropsAd(const PolymerProperties& polymer_props);
00082
00084 ~PolymerPropsAd();
00085
00089 V
00090 effectiveInvWaterVisc(const V& c, const V& mu_w) const;
00091
00095 ADB
00096 effectiveInvWaterVisc(const ADB& c,const V& mu_w) const;
00097
00101 ADB
00102 effectiveInvPolymerVisc(const ADB& c, const V& mu_w) const;
00103
00106 V
00107 polymerWaterVelocityRatio(const V& c) const;
00108
00111 ADB
00112 polymerWaterVelocityRatio(const ADB& c) const;
00113
00118 V
00119 adsorption(const V& c, const V& cmax_cells) const;
00120
00125 ADB
00126 adsorption(const ADB& c, const ADB& cmax_cells) const;
00127
00133 V
00134 effectiveRelPerm(const V& c, const V& cmax_cells, const V& relperm) const;
00135
00136
00142 ADB
00143 effectiveRelPerm(const ADB& c, const ADB& cmax_cells, const ADB& krw) const;
00144
00150 bool computeShearMultLog(std::vector<double>& water_vel, std::vector<double>& visc_mult, std::vector<double>& shear_mult) const;
00151
00152
00153 private:
00154 const PolymerProperties& polymer_props_;
00155 };
00156
00157 }
00158
00159 #endif// OPM_POLYMERPROPSAD_HEADED_INLCUDED