2013-12-06 22:13:29 +08:00
|
|
|
#ifndef OPM_POLYMERPROPSAD_HEADED_INLCUDED
|
|
|
|
|
#define OPM_POLYMERPROPSAD_HEADED_INLCUDED
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include <cmath>
|
|
|
|
|
#include <vector>
|
|
|
|
|
#include <opm/polymer/fullyimplicit/AutoDiffBlock.hpp>
|
|
|
|
|
#include <opm/polymer/fullyimplicit/AutoDiffHelpers.hpp>
|
2013-12-09 20:33:05 +08:00
|
|
|
#include <opm/polymer/PolymerProperties.hpp>
|
2013-12-06 22:13:29 +08:00
|
|
|
namespace Opm {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PolymerPropsAd
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
/* PolymerPropsAd(const int num_cells;
|
|
|
|
|
const double mix_param,
|
|
|
|
|
const std::vector<double>& c_max,
|
|
|
|
|
const std::vector<double>& c_vals_visc,
|
|
|
|
|
const std::vector<double>& visc_mult_vals);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
double num_cells() const;
|
|
|
|
|
double cMax() const;
|
|
|
|
|
double mixParam() const;
|
|
|
|
|
|
|
|
|
|
typedef AutoDiffBlock<double> ADB;
|
|
|
|
|
typedef ADB::V V;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
V muM(const V& c,
|
|
|
|
|
const double* visc) const;
|
|
|
|
|
ADB muM(const ADB& c
|
|
|
|
|
const double* visc) const;
|
|
|
|
|
|
|
|
|
|
V ToddLongstaff(const double mix_param,
|
|
|
|
|
const V& muM,
|
|
|
|
|
const V& mu) const;
|
|
|
|
|
|
|
|
|
|
ADB ToddLongstaff(const double mix_param,
|
|
|
|
|
const ADB& muM,
|
|
|
|
|
const ADB& mu) const;
|
|
|
|
|
|
|
|
|
|
V muPolyEff(const double mix_param,
|
|
|
|
|
const V& muM,
|
|
|
|
|
const V& muPoly) const;
|
|
|
|
|
|
|
|
|
|
ADB muPolyEff(const double mix_param,
|
|
|
|
|
const ADB& muM,
|
|
|
|
|
const ADB& muPoly) const;
|
|
|
|
|
|
|
|
|
|
V muWatEff(const double mix_param,
|
|
|
|
|
const std::vector<double>& c_max,
|
|
|
|
|
const V& c,
|
|
|
|
|
const V& muM,
|
|
|
|
|
const V& muWat,
|
|
|
|
|
const V& muPolyEff) const;
|
|
|
|
|
|
|
|
|
|
ADB muWatEff(const double mix_param,
|
|
|
|
|
const std::vector<double>& c_max,
|
|
|
|
|
const ADB& c,
|
|
|
|
|
const ADB& muM,
|
|
|
|
|
const ADB& muWat,
|
|
|
|
|
const ADB& muPolyEff) const;
|
|
|
|
|
*/
|
2013-12-12 20:29:40 +08:00
|
|
|
double rockDensity() const;
|
2013-12-06 22:13:29 +08:00
|
|
|
typedef AutoDiffBlock<double> ADB;
|
|
|
|
|
typedef ADB::V V;
|
2013-12-09 20:33:05 +08:00
|
|
|
PolymerPropsAd(const PolymerProperties& polymer_props);
|
|
|
|
|
|
2013-12-06 22:13:29 +08:00
|
|
|
~PolymerPropsAd();
|
2013-12-06 23:35:13 +08:00
|
|
|
|
2013-12-09 20:33:05 +08:00
|
|
|
V
|
|
|
|
|
effectiveInvWaterVisc(const V& c,const double* visc) const;
|
|
|
|
|
|
|
|
|
|
ADB
|
|
|
|
|
effectiveInvWaterVisc(const ADB& c,const double* visc) const;
|
|
|
|
|
|
|
|
|
|
V
|
|
|
|
|
polymerWaterVelocityRatio(const V& c) const;
|
|
|
|
|
|
|
|
|
|
ADB
|
|
|
|
|
polymerWaterVelocityRatio(const ADB& c) const;
|
|
|
|
|
|
2013-12-11 22:52:11 +08:00
|
|
|
V
|
|
|
|
|
adsorption(const V& c) const;
|
|
|
|
|
|
|
|
|
|
ADB
|
|
|
|
|
adsorption(const ADB& c) const;
|
|
|
|
|
|
|
|
|
|
V
|
|
|
|
|
effectiveRelPerm(const V& c, const V& cmax_cells, const V& relperm) const;
|
|
|
|
|
|
|
|
|
|
ADB
|
|
|
|
|
effectiveRelPerm(const ADB& c, const ADB& cmax_cells, const ADB& krw, const ADB& sw) const;
|
2013-12-06 22:13:29 +08:00
|
|
|
private:
|
2013-12-09 20:33:05 +08:00
|
|
|
const PolymerProperties& polymer_props_;
|
2013-12-06 22:13:29 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif// OPM_POLYMERPROPSAD_HEADED_INLCUDED
|