27 #ifndef OPM_CONSTANT_COMPRESSIBILITY_WATER_PVT_HPP 28 #define OPM_CONSTANT_COMPRESSIBILITY_WATER_PVT_HPP 33 #include <opm/parser/eclipse/Deck/Deck.hpp> 34 #include <opm/parser/eclipse/Deck/DeckKeyword.hpp> 35 #include <opm/parser/eclipse/Deck/DeckRecord.hpp> 36 #include <opm/parser/eclipse/Deck/DeckItem.hpp> 37 #include <opm/parser/eclipse/EclipseState/EclipseState.hpp> 47 template <
class Scalar>
51 typedef std::vector<std::pair<Scalar, Scalar> > SamplingPoints;
59 void initFromDeck(
const Deck& deck,
const EclipseState& )
61 const auto& pvtwKeyword = deck.getKeyword(
"PVTW");
62 const auto& densityKeyword = deck.getKeyword(
"DENSITY");
64 assert(pvtwKeyword.size() == densityKeyword.size());
69 for (
unsigned regionIdx = 0; regionIdx <
numRegions; ++ regionIdx) {
70 auto pvtwRecord = pvtwKeyword.getRecord(regionIdx);
71 auto densityRecord = densityKeyword.getRecord(regionIdx);
73 waterReferenceDensity_[regionIdx] =
74 densityRecord.getItem(
"WATER").getSIDouble(0);
76 waterReferencePressure_[regionIdx] =
77 pvtwRecord.getItem(
"P_REF").getSIDouble(0);
78 waterReferenceFormationVolumeFactor_[regionIdx] =
79 pvtwRecord.getItem(
"WATER_VOL_FACTOR").getSIDouble(0);
80 waterCompressibility_[regionIdx] =
81 pvtwRecord.getItem(
"WATER_COMPRESSIBILITY").getSIDouble(0);
82 waterViscosity_[regionIdx] =
83 pvtwRecord.getItem(
"WATER_VISCOSITY").getSIDouble(0);
84 waterViscosibility_[regionIdx] =
85 pvtwRecord.getItem(
"WATER_VISCOSIBILITY").getSIDouble(0);
96 waterReferenceFormationVolumeFactor_.resize(
numRegions);
101 for (
unsigned regionIdx = 0; regionIdx <
numRegions; ++regionIdx) {
115 { waterReferenceDensity_[regionIdx] = rhoRefWater; }
121 { waterReferencePressure_[regionIdx] = p; }
126 void setViscosity(
unsigned regionIdx, Scalar muw, Scalar waterViscosibility = 0.0)
128 waterViscosity_[regionIdx] = muw;
129 waterViscosibility_[regionIdx] = waterViscosibility;
136 { waterCompressibility_[regionIdx] = waterCompressibility; }
142 { waterReferenceFormationVolumeFactor_[regionIdx] = BwRef; }
148 { waterViscosibility_[regionIdx] = muComp; }
160 {
return waterReferenceDensity_.size(); }
165 template <
class Evaluation>
167 const Evaluation& temperature,
168 const Evaluation& pressure)
const 170 Scalar BwMuwRef = waterViscosity_[regionIdx]*waterReferenceFormationVolumeFactor_[regionIdx];
173 Scalar pRef = waterReferencePressure_[regionIdx];
174 const Evaluation& Y =
175 (waterCompressibility_[regionIdx] - waterViscosibility_[regionIdx])
177 return BwMuwRef*bw/(1 + Y*(1 + Y/2));
183 template <
class Evaluation>
186 const Evaluation& pressure)
const 189 Scalar pRef = waterReferencePressure_[regionIdx];
190 const Evaluation& X = waterCompressibility_[regionIdx]*(pressure - pRef);
192 Scalar BwRef = waterReferenceFormationVolumeFactor_[regionIdx];
195 return (1.0 + X*(1.0 + X/2.0))/BwRef;
199 std::vector<Scalar> waterReferenceDensity_;
200 std::vector<Scalar> waterReferencePressure_;
201 std::vector<Scalar> waterReferenceFormationVolumeFactor_;
202 std::vector<Scalar> waterCompressibility_;
203 std::vector<Scalar> waterViscosity_;
204 std::vector<Scalar> waterViscosibility_;
void setReferenceFormationVolumeFactor(unsigned regionIdx, Scalar BwRef)
Set the water reference formation volume factor [-].
Definition: ConstantCompressibilityWaterPvt.hpp:141
void initEnd()
Finish initializing the water phase PVT properties.
Definition: ConstantCompressibilityWaterPvt.hpp:153
Definition: Air_Mesitylene.hpp:33
void setCompressibility(unsigned regionIdx, Scalar waterCompressibility)
Set the compressibility of the water phase.
Definition: ConstantCompressibilityWaterPvt.hpp:135
Evaluation inverseFormationVolumeFactor(unsigned regionIdx, const Evaluation &, const Evaluation &pressure) const
Returns the formation volume factor [-] of the fluid phase.
Definition: ConstantCompressibilityWaterPvt.hpp:184
This class represents the Pressure-Volume-Temperature relations of the gas phase without vaporized oi...
Definition: ConstantCompressibilityWaterPvt.hpp:48
void setViscosity(unsigned regionIdx, Scalar muw, Scalar waterViscosibility=0.0)
Set the viscosity and "viscosibility" of the water phase.
Definition: ConstantCompressibilityWaterPvt.hpp:126
unsigned numRegions() const
Return the number of PVT regions which are considered by this PVT-object.
Definition: ConstantCompressibilityWaterPvt.hpp:159
void setReferenceDensities(unsigned regionIdx, Scalar, Scalar, Scalar rhoRefWater)
Set the water reference density [kg / m^3].
Definition: ConstantCompressibilityWaterPvt.hpp:111
Evaluation viscosity(unsigned regionIdx, const Evaluation &temperature, const Evaluation &pressure) const
Returns the dynamic viscosity [Pa s] of the fluid phase given a set of parameters.
Definition: ConstantCompressibilityWaterPvt.hpp:166
Implements a linearly interpolated scalar function that depends on one variable.
void setViscosibility(unsigned regionIdx, Scalar muComp)
Set the water "viscosibility" [1/ (Pa s)].
Definition: ConstantCompressibilityWaterPvt.hpp:147
Implements a linearly interpolated scalar function that depends on one variable.
Definition: Tabulated1DFunction.hpp:47
void setReferencePressure(unsigned regionIdx, Scalar p)
Set the water reference pressure [Pa].
Definition: ConstantCompressibilityWaterPvt.hpp:120