Evaluation saturatedInverseFormationVolumeFactor(unsigned regionIdx, const Evaluation& temperature, const Evaluation& pressure) const { const auto& b = isothermalPvt_->saturatedInverseFormationVolumeFactor(regionIdx, temperature, pressure); if (!enableThermalDensity()) return b; // the Eclipse TD/RM do not explicitly specify the relation of the gas // density and the temperature, but equation (69.49) (for Eclipse 2011.1) // implies that the temperature dependence of the gas phase is rho(T, p) = // rho(tref_, p)*T/T_ref ... return b*temperature/refTemp_; }
Evaluation inverseFormationVolumeFactor(unsigned regionIdx, const Evaluation& temperature, const Evaluation& pressure) const { if (!enableThermalDensity()) return isothermalPvt_->inverseFormationVolumeFactor(regionIdx, temperature, pressure); Scalar BwRef = pvtwRefB_[regionIdx]; Scalar TRef = watdentRefTemp_[regionIdx]; const Evaluation& X = pvtwCompressibility_[regionIdx]*(pressure - pvtwRefPress_[regionIdx]); Scalar cT1 = watdentCT1_[regionIdx]; Scalar cT2 = watdentCT2_[regionIdx]; const Evaluation& Y = temperature - TRef; return ((1 - X)*(1 + cT1*Y + cT2*Y*Y))/BwRef; }
Evaluation saturatedInverseFormationVolumeFactor(unsigned regionIdx, const Evaluation& temperature, const Evaluation& pressure) const { const auto& b = isothermalPvt_->saturatedInverseFormationVolumeFactor(regionIdx, temperature, pressure); if (!enableThermalDensity()) return b; // we use equation (3.208) from the Eclipse 2011.1 Reference Manual, but we // calculate rho_ref using the isothermal keyword instead of using the value for // the components, so the oil compressibility is already dealt with there. Note // that we only do the part for the oil component here, the part for dissolved // gas is ignored so far. const auto& alpha = 1.0/(1 + thermex1_*(temperature - refTemp_)); return alpha*b; }