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());
67 setNumRegions(numRegions);
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);
94 waterReferenceDensity_.resize(numRegions);
95 waterReferencePressure_.resize(numRegions);
96 waterReferenceFormationVolumeFactor_.resize(numRegions);
97 waterCompressibility_.resize(numRegions);
98 waterViscosity_.resize(numRegions);
99 waterViscosibility_.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_;
Evaluation inverseFormationVolumeFactor(unsigned regionIdx, const Evaluation &, const Evaluation &pressure) const
Returns the formation volume factor [-] of the fluid phase.
Definition: ConstantCompressibilityWaterPvt.hpp:184
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
void setCompressibility(unsigned regionIdx, Scalar waterCompressibility)
Set the compressibility of the water phase.
Definition: ConstantCompressibilityWaterPvt.hpp:135
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
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
void setReferenceDensities(unsigned regionIdx, Scalar, Scalar, Scalar rhoRefWater)
Set the water reference density [kg / m^3].
Definition: ConstantCompressibilityWaterPvt.hpp:111
unsigned numRegions() const
Return the number of PVT regions which are considered by this PVT-object.
Definition: ConstantCompressibilityWaterPvt.hpp:159
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