27#ifndef OPM_CONSTANT_COMPRESSIBILITY_WATER_PVT_HPP
28#define OPM_CONSTANT_COMPRESSIBILITY_WATER_PVT_HPP
45template <
class Scalar>
57 void setVapPars(
const Scalar,
const Scalar)
68 { waterReferenceDensity_[regionIdx] = rhoRefWater; }
74 { waterReferencePressure_[regionIdx] = p; }
79 void setViscosity(
unsigned regionIdx, Scalar muw, Scalar waterViscosibility = 0.0)
81 waterViscosity_[regionIdx] = muw;
82 waterViscosibility_[regionIdx] = waterViscosibility;
89 { waterCompressibility_[regionIdx] = waterCompressibility; }
95 { waterReferenceFormationVolumeFactor_[regionIdx] = BwRef; }
101 { waterViscosibility_[regionIdx] = muComp; }
113 {
return waterReferenceDensity_.size(); }
118 template <
class Evaluation>
123 const Evaluation&)
const
125 throw std::runtime_error(
"Requested the enthalpy of water but the thermal "
126 "option is not enabled");
129 Scalar hVap(
unsigned)
const
131 throw std::runtime_error(
"Requested the hvap of oil but the thermal "
132 "option is not enabled");
138 template <
class Evaluation>
140 const Evaluation& temperature,
141 const Evaluation& pressure,
142 const Evaluation& saltconcentration)
const
144 Scalar BwMuwRef = waterViscosity_[regionIdx]*waterReferenceFormationVolumeFactor_[regionIdx];
147 Scalar pRef = waterReferencePressure_[regionIdx];
148 const Evaluation& Y =
149 (waterCompressibility_[regionIdx] - waterViscosibility_[regionIdx])
151 return BwMuwRef * bw / (1 + Y * (1 + Y / 2));
157 template <
class Evaluation>
159 const Evaluation& temperature,
160 const Evaluation& pressure,
161 const Evaluation& Rsw,
162 const Evaluation& saltconcentration)
const
164 Scalar BwMuwRef = waterViscosity_[regionIdx]*waterReferenceFormationVolumeFactor_[regionIdx];
167 Scalar pRef = waterReferencePressure_[regionIdx];
168 const Evaluation& Y =
169 (waterCompressibility_[regionIdx] - waterViscosibility_[regionIdx])
171 return BwMuwRef * bw / (1 + Y * (1 + Y / 2));
177 template <
class Evaluation>
179 const Evaluation& temperature,
180 const Evaluation& pressure,
181 const Evaluation& saltconcentration)
const
183 Evaluation Rsw = 0.0;
185 Rsw, saltconcentration);
191 template <
class Evaluation>
194 const Evaluation& pressure,
196 const Evaluation& )
const
198 Scalar pRef = waterReferencePressure_[regionIdx];
199 const Evaluation& X = waterCompressibility_[regionIdx]*(pressure - pRef);
201 Scalar BwRef = waterReferenceFormationVolumeFactor_[regionIdx];
204 return (1.0 + X * (1.0 + X / 2.0)) / BwRef;
210 template <
class Flu
idState,
class LhsEval =
typename Flu
idState::ValueType>
211 std::pair<LhsEval, LhsEval>
214 const auto& pressure = decay<LhsEval>(fluidState.pressure(FluidState::waterPhaseIdx));
215 Scalar pRef = waterReferencePressure_[regionIdx];
216 const LhsEval& X = waterCompressibility_[regionIdx]*(pressure - pRef);
217 Scalar BwRef = waterReferenceFormationVolumeFactor_[regionIdx];
218 LhsEval bw = (1.0 + X * (1.0 + X / 2.0)) / BwRef;
219 Scalar BwMuwRef = waterViscosity_[regionIdx]*BwRef;
221 (waterCompressibility_[regionIdx] - waterViscosibility_[regionIdx])
223 LhsEval muw = BwMuwRef * bw / (1 + Y * (1 + Y / 2));
228 template <
class Evaluation>
229 void inverseBAndMu(Evaluation& bw, Evaluation& muW,
unsigned regionIdx,
231 const Evaluation& pressure,
233 const Evaluation& )
const
235 inverseBAndMu(bw, muW, regionIdx,pressure);
238 template <
class Evaluation>
239 void inverseBAndMu(Evaluation& bw, Evaluation& muW,
unsigned regionIdx,
240 const Evaluation& pressure)
const
242 Scalar pRef = waterReferencePressure_[regionIdx];
243 const Evaluation& X = waterCompressibility_[regionIdx]*(pressure - pRef);
245 Scalar BwRef = waterReferenceFormationVolumeFactor_[regionIdx];
248 bw = (1.0 + X * (1.0 + X / 2.0)) / BwRef;
250 Scalar BwMuwRef = waterViscosity_[regionIdx]*BwRef;
252 const Evaluation& Y =
253 (waterCompressibility_[regionIdx] - waterViscosibility_[regionIdx])
255 muW = BwMuwRef * bw / (1 + Y * (1 + Y / 2));
265 template <
class Evaluation>
269 const Evaluation& )
const
272 template <
class Evaluation>
273 Evaluation diffusionCoefficient(
const Evaluation& ,
278 throw std::runtime_error(
"Not implemented: The PVT model does not provide "
279 "a diffusionCoefficient()");
285 template <
class Evaluation>
289 const Evaluation& )
const
292 Scalar waterReferenceDensity(
unsigned regionIdx)
const
293 {
return waterReferenceDensity_[regionIdx]; }
295 const std::vector<Scalar>& waterReferencePressure()
const
296 {
return waterReferencePressure_; }
298 const std::vector<Scalar>& waterReferenceFormationVolumeFactor()
const
299 {
return waterReferenceFormationVolumeFactor_; }
301 const std::vector<Scalar>& waterCompressibility()
const
302 {
return waterCompressibility_; }
304 const std::vector<Scalar>& waterViscosity()
const
305 {
return waterViscosity_; }
307 const std::vector<Scalar>& waterViscosibility()
const
308 {
return waterViscosibility_; }
311 std::vector<Scalar> waterReferenceDensity_{};
312 std::vector<Scalar> waterReferencePressure_{};
313 std::vector<Scalar> waterReferenceFormationVolumeFactor_{};
314 std::vector<Scalar> waterCompressibility_{};
315 std::vector<Scalar> waterViscosity_{};
316 std::vector<Scalar> waterViscosibility_{};
This class represents the Pressure-Volume-Temperature relations of the gas phase without vaporized oi...
Definition ConstantCompressibilityWaterPvt.hpp:47
void setReferenceFormationVolumeFactor(unsigned regionIdx, Scalar BwRef)
Set the water reference formation volume factor [-].
Definition ConstantCompressibilityWaterPvt.hpp:94
void setViscosibility(unsigned regionIdx, Scalar muComp)
Set the water "viscosibility" [1/ (Pa s)].
Definition ConstantCompressibilityWaterPvt.hpp:100
std::pair< LhsEval, LhsEval > inverseFormationVolumeFactorAndViscosity(const FluidState &fluidState, unsigned regionIdx)
Returns the formation volume factor [-] and viscosity [Pa s] of the fluid phase.
Definition ConstantCompressibilityWaterPvt.hpp:212
Evaluation saturationPressure(unsigned, const Evaluation &, const Evaluation &, const Evaluation &) const
Returns the saturation pressure of the water phase [Pa] depending on its mass fraction of the gas com...
Definition ConstantCompressibilityWaterPvt.hpp:266
Evaluation inverseFormationVolumeFactor(unsigned regionIdx, const Evaluation &, const Evaluation &pressure, const Evaluation &, const Evaluation &) const
Returns the formation volume factor [-] of the fluid phase.
Definition ConstantCompressibilityWaterPvt.hpp:192
void setCompressibility(unsigned regionIdx, Scalar waterCompressibility)
Set the compressibility of the water phase.
Definition ConstantCompressibilityWaterPvt.hpp:88
void setReferenceDensities(unsigned regionIdx, Scalar, Scalar, Scalar rhoRefWater)
Set the water reference density [kg / m^3].
Definition ConstantCompressibilityWaterPvt.hpp:64
unsigned numRegions() const
Return the number of PVT regions which are considered by this PVT-object.
Definition ConstantCompressibilityWaterPvt.hpp:112
void setReferencePressure(unsigned regionIdx, Scalar p)
Set the water reference pressure [Pa].
Definition ConstantCompressibilityWaterPvt.hpp:73
void initEnd()
Finish initializing the water phase PVT properties.
Definition ConstantCompressibilityWaterPvt.hpp:106
Evaluation viscosity(unsigned regionIdx, const Evaluation &temperature, const Evaluation &pressure, const Evaluation &Rsw, const Evaluation &saltconcentration) const
Returns the dynamic viscosity [Pa s] of the fluid phase given a set of parameters.
Definition ConstantCompressibilityWaterPvt.hpp:158
void setViscosity(unsigned regionIdx, Scalar muw, Scalar waterViscosibility=0.0)
Set the viscosity and "viscosibility" of the water phase.
Definition ConstantCompressibilityWaterPvt.hpp:79
Evaluation saturatedInverseFormationVolumeFactor(unsigned regionIdx, const Evaluation &temperature, const Evaluation &pressure, const Evaluation &saltconcentration) const
Returns the formation volume factor [-] of the fluid phase.
Definition ConstantCompressibilityWaterPvt.hpp:178
Evaluation saturatedViscosity(unsigned regionIdx, const Evaluation &temperature, const Evaluation &pressure, const Evaluation &saltconcentration) const
Returns the dynamic viscosity [Pa s] of the fluid phase given a set of parameters.
Definition ConstantCompressibilityWaterPvt.hpp:139
void initFromState(const EclipseState &eclState, const Schedule &)
Sets the pressure-dependent water viscosity and density using a table stemming from the Eclipse PVTW ...
Definition ConstantCompressibilityWaterPvt.cpp:37
Evaluation internalEnergy(unsigned, const Evaluation &, const Evaluation &, const Evaluation &, const Evaluation &) const
Returns the specific enthalpy [J/kg] of water given a set of parameters.
Definition ConstantCompressibilityWaterPvt.hpp:119
Evaluation saturatedGasDissolutionFactor(unsigned, const Evaluation &, const Evaluation &, const Evaluation &) const
Returns the gas dissolution factor [m^3/m^3] of the water phase.
Definition ConstantCompressibilityWaterPvt.hpp:286
Definition EclipseState.hpp:66
Definition Schedule.hpp:101
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition Exceptions.hpp:30