PolymerPropsAd.hpp
Go to the documentation of this file.
1 /*
2  Copyright 2014 SINTEF ICT, Applied Mathematics.
3  Copyright 2014 STATOIL ASA.
4 
5  This file is part of the Open Porous Media project (OPM).
6 
7  OPM is free software: you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation, either version 3 of the License, or
10  (at your option) any later version.
11 
12  OPM is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with OPM. If not, see <http://www.gnu.org/licenses/>.
19 */
20 
21 #ifndef OPM_POLYMERPROPSAD_HEADED_INLCUDED
22 #define OPM_POLYMERPROPSAD_HEADED_INLCUDED
23 
24 #include <cmath>
25 #include <vector>
26 #include <opm/autodiff/AutoDiffBlock.hpp>
27 #include <opm/autodiff/AutoDiffHelpers.hpp>
29 
30 namespace Opm {
31 
33  {
34  public:
36  double rockDensity() const;
37 
39  double deadPoreVol() const;
40 
42  double cMax() const;
43 
45  const std::vector<double>& shearWaterVelocity() const;
46 
48  const std::vector<double>& shearViscosityReductionFactor() const;
49 
51  double plyshlogRefConc() const;
52 
54  bool hasPlyshlogRefSalinity() const;
55 
57  bool hasPlyshlogRefTemp() const;
58 
60  double plyshlogRefSalinity() const;
61 
63  double plyshlogRefTemp() const;
64 
66  double shrate() const;
67 
68  double viscMult(double c) const; // multipler interpolated from PLYVISC table
69 
70  typedef AutoDiffBlock<double> ADB;
71  typedef ADB::V V;
72 
73  V viscMult(const V& c) const;
76 
78  PolymerPropsAd(const PolymerProperties& polymer_props);
79 
82 
86  V
87  effectiveInvWaterVisc(const V& c,const double* visc) const;
88 
92  ADB
93  effectiveInvWaterVisc(const ADB& c,const double* visc) const;
94 
97  V
98  polymerWaterVelocityRatio(const V& c) const;
99 
102  ADB
103  polymerWaterVelocityRatio(const ADB& c) const;
104 
109  V
110  adsorption(const V& c, const V& cmax_cells) const;
111 
116  ADB
117  adsorption(const ADB& c, const ADB& cmax_cells) const;
118 
124  V
125  effectiveRelPerm(const V& c, const V& cmax_cells, const V& relperm) const;
126 
127 
133  ADB
134  effectiveRelPerm(const ADB& c, const ADB& cmax_cells, const ADB& krw) const;
135 
141  bool computeShearMultLog(std::vector<double>& water_vel, std::vector<double>& visc_mult, std::vector<double>& shear_mult) const;
142 
143 
144  private:
145  const PolymerProperties& polymer_props_;
146  };
147 
148 } //namespace Opm
149 
150 #endif// OPM_POLYMERPROPSAD_HEADED_INLCUDED
V adsorption(const V &c, const V &cmax_cells) const
double viscMult(double c) const
Definition: CompressibleTpfaPolymer.hpp:32
double rockDensity() const
double plyshlogRefTemp() const
\ return The reference temperature in PLYSHLOG keyword
double shrate() const
\ return the value of SHRATE
const std::vector< double > & shearViscosityReductionFactor() const
\ return The viscosity reducation factor in the PLYSHLOG table
ADB::V V
Definition: PolymerPropsAd.hpp:71
Definition: PolymerProperties.hpp:34
V effectiveInvWaterVisc(const V &c, const double *visc) const
bool hasPlyshlogRefTemp() const
\ return The flag indicating if reference temperature is specified in PLYSHLOG keyword ...
double plyshlogRefSalinity() const
\ return The reference salinity in PLYSHLOG keyword
bool computeShearMultLog(std::vector< double > &water_vel, std::vector< double > &visc_mult, std::vector< double > &shear_mult) const
PolymerPropsAd(const PolymerProperties &polymer_props)
Constructor wrapping a polymer props.
V effectiveRelPerm(const V &c, const V &cmax_cells, const V &relperm) const
bool hasPlyshlogRefSalinity() const
\ return The flag indicating if reference salinity is specified in PLYSHLOG keyword ...
V polymerWaterVelocityRatio(const V &c) const
Definition: PolymerPropsAd.hpp:32
const std::vector< double > & shearWaterVelocity() const
\ return The water velcoity or shear rate in the PLYSHLOG table
double deadPoreVol() const
double plyshlogRefConc() const
\ return The reference polymer concentration for PLYSHLOG table
AutoDiffBlock< double > ADB
Definition: PolymerPropsAd.hpp:70
~PolymerPropsAd()
Destructor.
double cMax() const