Merge pull request #5483 from daavid00/rswsat

Output support for RSWSAT and RVWSAT
This commit is contained in:
Bård Skaflestad 2024-07-17 16:46:40 +02:00 committed by GitHub
commit ed5f371133
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 25 additions and 0 deletions

View File

@ -556,8 +556,10 @@ assignToSolution(data::Solution& sol)
DataEntry{"PRESPOTF", UnitSystem::measure::pressure, mechPotentialPressForce_},
DataEntry{"PRES_OVB", UnitSystem::measure::pressure, overburdenPressure_},
DataEntry{"RSW", UnitSystem::measure::gas_oil_ratio, rsw_},
DataEntry{"RSWSAT", UnitSystem::measure::gas_oil_ratio, gasDissolutionFactorInWater_},
DataEntry{"RSWSOL", UnitSystem::measure::gas_oil_ratio, rswSol_},
DataEntry{"RVW", UnitSystem::measure::oil_gas_ratio, rvw_},
DataEntry{"RVWSAT", UnitSystem::measure::oil_gas_ratio, waterVaporizationFactor_},
DataEntry{"SALTP", UnitSystem::measure::identity, pSalt_},
DataEntry{"SS_X", UnitSystem::measure::identity, extboX_},
DataEntry{"SS_Y", UnitSystem::measure::identity, extboY_},
@ -1186,6 +1188,14 @@ doAllocBuffers(const unsigned bufferSize,
rstKeywords["RVSAT"] = 0;
oilVaporizationFactor_.resize(bufferSize, 0.0);
}
if (FluidSystem::enableDissolvedGasInWater() && rstKeywords["RSWSAT"] > 0) {
rstKeywords["RSWSAT"] = 0;
gasDissolutionFactorInWater_.resize(bufferSize, 0.0);
}
if (FluidSystem::enableVaporizedWater() && rstKeywords["RVWSAT"] > 0) {
rstKeywords["RVWSAT"] = 0;
waterVaporizationFactor_.resize(bufferSize, 0.0);
}
if (FluidSystem::phaseIsActive(waterPhaseIdx) && rstKeywords["BW"] > 0) {
rstKeywords["BW"] = 0;

View File

@ -459,6 +459,8 @@ protected:
ScalarBuffer ppcw_;
ScalarBuffer gasDissolutionFactor_;
ScalarBuffer oilVaporizationFactor_;
ScalarBuffer gasDissolutionFactorInWater_;
ScalarBuffer waterVaporizationFactor_;
ScalarBuffer bubblePointPressure_;
ScalarBuffer dewPointPressure_;
ScalarBuffer rockCompPorvMultiplier_;

View File

@ -362,6 +362,19 @@ public:
fs, gasPhaseIdx, pvtRegionIdx, SoMax);
Valgrind::CheckDefined(this->oilVaporizationFactor_[globalDofIdx]);
}
if (!this->gasDissolutionFactorInWater_.empty()) {
Scalar SwMax = elemCtx.problem().maxWaterSaturation(globalDofIdx);
this->gasDissolutionFactorInWater_[globalDofIdx]
= FluidSystem::template saturatedDissolutionFactor<FluidState, Scalar>(
fs, waterPhaseIdx, pvtRegionIdx, SwMax);
Valgrind::CheckDefined(this->gasDissolutionFactorInWater_[globalDofIdx]);
}
if (!this->waterVaporizationFactor_.empty()) {
this->waterVaporizationFactor_[globalDofIdx]
= FluidSystem::template saturatedVaporizationFactor<FluidState, Scalar>(
fs, gasPhaseIdx, pvtRegionIdx);
Valgrind::CheckDefined(this->waterVaporizationFactor_[globalDofIdx]);
}
if (!this->gasFormationVolumeFactor_.empty()) {
this->gasFormationVolumeFactor_[globalDofIdx] = 1.0
/ FluidSystem::template inverseFormationVolumeFactor<FluidState, Scalar>(