27 #ifndef OPM_CONSTANT_COMPRESSIBILITY_OIL_PVT_HPP 28 #define OPM_CONSTANT_COMPRESSIBILITY_OIL_PVT_HPP 36 #include <opm/parser/eclipse/Deck/Deck.hpp> 37 #include <opm/parser/eclipse/Deck/DeckItem.hpp> 38 #include <opm/parser/eclipse/Deck/DeckKeyword.hpp> 39 #include <opm/parser/eclipse/Deck/DeckRecord.hpp> 40 #include <opm/parser/eclipse/EclipseState/EclipseState.hpp> 48 template <
class Scalar>
52 typedef std::vector<std::pair<Scalar, Scalar> > SamplingPoints;
63 void initFromDeck(
const Deck& deck,
const EclipseState& )
65 const auto& pvcdoKeyword = deck.getKeyword(
"PVCDO");
66 const auto& densityKeyword = deck.getKeyword(
"DENSITY");
68 assert(pvcdoKeyword.size() == densityKeyword.size());
73 for (
unsigned regionIdx = 0; regionIdx <
numRegions; ++ regionIdx) {
74 Scalar rhoRefO = densityKeyword.getRecord(regionIdx).getItem(
"OIL").getSIDouble(0);
75 Scalar rhoRefG = densityKeyword.getRecord(regionIdx).getItem(
"GAS").getSIDouble(0);
76 Scalar rhoRefW = densityKeyword.getRecord(regionIdx).getItem(
"WATER").getSIDouble(0);
80 auto pvcdoRecord = pvcdoKeyword.getRecord(regionIdx);
81 oilReferencePressure_[regionIdx] =
82 pvcdoRecord.getItem(
"P_REF").getSIDouble(0);
83 oilReferenceFormationVolumeFactor_[regionIdx] =
84 pvcdoRecord.getItem(
"OIL_VOL_FACTOR").getSIDouble(0);
85 oilCompressibility_[regionIdx] =
86 pvcdoRecord.getItem(
"OIL_COMPRESSIBILITY").getSIDouble(0);
87 oilViscosity_[regionIdx] =
88 pvcdoRecord.getItem(
"OIL_VISCOSITY").getSIDouble(0);
89 oilViscosibility_[regionIdx] =
90 pvcdoRecord.getItem(
"OIL_VISCOSIBILITY").getSIDouble(0);
101 oilReferenceFormationVolumeFactor_.resize(
numRegions);
106 for (
unsigned regionIdx = 0; regionIdx <
numRegions; ++regionIdx) {
119 { oilReferenceDensity_[regionIdx] = rhoRefOil; }
124 void setViscosity(
unsigned regionIdx, Scalar muo, Scalar oilViscosibility = 0.0)
126 oilViscosity_[regionIdx] = muo;
127 oilViscosibility_[regionIdx] = oilViscosibility;
134 { oilCompressibility_[regionIdx] = oilCompressibility; }
140 { oilReferencePressure_[regionIdx] = p; }
146 { oilReferenceFormationVolumeFactor_[regionIdx] = BoRef; }
152 { oilViscosibility_[regionIdx] = muComp; }
164 {
return oilViscosity_.size(); }
170 template <
class Evaluation>
172 const Evaluation& temperature,
173 const Evaluation& pressure,
174 const Evaluation& )
const 180 template <
class Evaluation>
182 const Evaluation& temperature,
183 const Evaluation& pressure)
const 185 Scalar BoMuoRef = oilViscosity_[regionIdx]*oilReferenceFormationVolumeFactor_[regionIdx];
188 Scalar pRef = oilReferencePressure_[regionIdx];
189 const Evaluation& Y =
190 (oilCompressibility_[regionIdx] - oilViscosibility_[regionIdx])
192 return BoMuoRef*bo/(1.0 + Y*(1.0 + Y/2.0));
198 template <
class Evaluation>
200 const Evaluation& temperature,
201 const Evaluation& pressure,
202 const Evaluation& )
const 211 template <
class Evaluation>
214 const Evaluation& pressure)
const 217 Scalar pRef = oilReferencePressure_[regionIdx];
218 const Evaluation& X = oilCompressibility_[regionIdx]*(pressure - pRef);
220 Scalar BoRef = oilReferenceFormationVolumeFactor_[regionIdx];
221 return (1 + X*(1 + X/2))/BoRef;
227 template <
class Evaluation>
230 const Evaluation& )
const 236 template <
class Evaluation>
250 template <
class Evaluation>
253 const Evaluation& )
const 257 std::vector<Scalar> oilReferenceDensity_;
258 std::vector<Scalar> oilReferencePressure_;
259 std::vector<Scalar> oilReferenceFormationVolumeFactor_;
260 std::vector<Scalar> oilCompressibility_;
261 std::vector<Scalar> oilViscosity_;
262 std::vector<Scalar> oilViscosibility_;
void setCompressibility(unsigned regionIdx, Scalar oilCompressibility)
Set the compressibility of the oil phase.
Definition: ConstantCompressibilityOilPvt.hpp:133
void setViscosibility(unsigned regionIdx, Scalar muComp)
Set the oil "viscosibility" [1/ (Pa s)].
Definition: ConstantCompressibilityOilPvt.hpp:151
unsigned numRegions() const
Return the number of PVT regions which are considered by this PVT-object.
Definition: ConstantCompressibilityOilPvt.hpp:163
Evaluation saturatedGasDissolutionFactor(unsigned, const Evaluation &, const Evaluation &) const
Returns the gas dissolution factor [m^3/m^3] of the oil phase.
Definition: ConstantCompressibilityOilPvt.hpp:228
This class represents the Pressure-Volume-Temperature relations of the oil phase without dissolved ga...
Definition: ConstantCompressibilityOilPvt.hpp:49
void setViscosity(unsigned regionIdx, Scalar muo, Scalar oilViscosibility=0.0)
Set the viscosity and "viscosibility" of the oil phase.
Definition: ConstantCompressibilityOilPvt.hpp:124
void setReferenceFormationVolumeFactor(unsigned regionIdx, Scalar BoRef)
Set the oil reference formation volume factor [-].
Definition: ConstantCompressibilityOilPvt.hpp:145
void initEnd()
Finish initializing the oil phase PVT properties.
Definition: ConstantCompressibilityOilPvt.hpp:157
Definition: Air_Mesitylene.hpp:33
Class implementing cubic splines.
Evaluation saturationPressure(unsigned, const Evaluation &, const Evaluation &) const
Returns the saturation pressure of the oil phase [Pa] depending on its mass fraction of the gas compo...
Definition: ConstantCompressibilityOilPvt.hpp:251
Evaluation saturatedInverseFormationVolumeFactor(unsigned regionIdx, const Evaluation &, const Evaluation &pressure) const
Returns the formation volume factor [-] of gas saturated oil.
Definition: ConstantCompressibilityOilPvt.hpp:212
Implements a linearly interpolated scalar function that depends on one variable.
void setReferencePressure(unsigned regionIdx, Scalar p)
Set the oil reference pressure [Pa].
Definition: ConstantCompressibilityOilPvt.hpp:139
Evaluation viscosity(unsigned regionIdx, const Evaluation &temperature, const Evaluation &pressure, const Evaluation &) const
Returns the dynamic viscosity [Pa s] of gas saturated oil given a pressure and a phase composition...
Definition: ConstantCompressibilityOilPvt.hpp:171
Evaluation inverseFormationVolumeFactor(unsigned regionIdx, const Evaluation &temperature, const Evaluation &pressure, const Evaluation &) const
Returns the formation volume factor [-] of the fluid phase.
Definition: ConstantCompressibilityOilPvt.hpp:199
This file provides a wrapper around the "final" C++-2011 statement.
Evaluation saturatedViscosity(unsigned regionIdx, const Evaluation &temperature, const Evaluation &pressure) const
Returns the dynamic viscosity [Pa s] of gas saturated oil given a pressure.
Definition: ConstantCompressibilityOilPvt.hpp:181
Implements a linearly interpolated scalar function that depends on one variable.
Definition: Tabulated1DFunction.hpp:47
void setReferenceDensities(unsigned regionIdx, Scalar rhoRefOil, Scalar, Scalar)
Initialize the reference densities of all fluids for a given PVT region.
Definition: ConstantCompressibilityOilPvt.hpp:115
Evaluation saturatedGasDissolutionFactor(unsigned, const Evaluation &, const Evaluation &, const Evaluation &, Scalar) const
Returns the gas dissolution factor [m^3/m^3] of the oil phase.
Definition: ConstantCompressibilityOilPvt.hpp:237