From 0db9693e9fd8ff188f524e8e14f879423bd32fcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A5rd=20Skaflestad?= Date: Thu, 16 Mar 2023 16:04:07 +0100 Subject: [PATCH] Retag XMFCO2 and YMFWAT Arrays as OPM_EXTENDED While here, also switch to using std::transform() instead of a raw loop. --- ebos/eclgenericoutputblackoilmodule.cc | 42 ++++++++++++++++++-------- 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/ebos/eclgenericoutputblackoilmodule.cc b/ebos/eclgenericoutputblackoilmodule.cc index 276692562..0684b5775 100644 --- a/ebos/eclgenericoutputblackoilmodule.cc +++ b/ebos/eclgenericoutputblackoilmodule.cc @@ -839,21 +839,39 @@ assignToSolution(data::Solution& sol) } if (eclState_.runspec().co2Storage() && !rsw_.empty()) { - std::vector mfrac(rsw_.size(), 0.0); - const auto& pvtnum = eclState_.fieldProps().get_int("PVTNUM"); - for (size_t i = 0; i < rsw_.size(); ++i) { - mfrac[i] = FluidSystem::convertXwGToxwG(FluidSystem::convertRswToXwG(rsw_[i], pvtnum[i]-1), pvtnum[i]-1); - } - sol.insert("XMFCO2", UnitSystem::measure::identity, std::move(mfrac), data::TargetType::RESTART_AUXILIARY); + auto mfrac = std::vector(this->rsw_.size(), 0.0); + + std::transform(this->rsw_.begin(), this->rsw_.end(), + this->eclState_.fieldProps().get_int("PVTNUM").begin(), + mfrac.begin(), + [](const auto& rsw, const int pvtReg) + { + const auto xwg = FluidSystem::convertRswToXwG(rsw, pvtReg - 1); + return FluidSystem::convertXwGToxwG(xwg, pvtReg - 1); + }); + + sol.insert("XMFCO2", + UnitSystem::measure::identity, + std::move(mfrac), + data::TargetType::RESTART_OPM_EXTENDED); } if (eclState_.runspec().co2Storage() && !rvw_.empty()) { - std::vector mfrac(rvw_.size(), 0.0); - const auto& pvtnum = eclState_.fieldProps().get_int("PVTNUM"); - for (size_t i = 0; i < rvw_.size(); ++i) { - mfrac[i] = FluidSystem::convertXgWToxgW(FluidSystem::convertRvwToXgW(rvw_[i], pvtnum[i]-1), pvtnum[i]-1); - } - sol.insert("YMFWAT", UnitSystem::measure::identity, std::move(mfrac), data::TargetType::RESTART_AUXILIARY); + auto mfrac = std::vector(this->rvw_.size(), 0.0); + + std::transform(this->rvw_.begin(), this->rvw_.end(), + this->eclState_.fieldProps().get_int("PVTNUM").begin(), + mfrac.begin(), + [](const auto& rvw, const int pvtReg) + { + const auto xgw = FluidSystem::convertRvwToXgW(rvw, pvtReg - 1); + return FluidSystem::convertXgWToxgW(xgw, pvtReg - 1); + }); + + sol.insert("YMFWAT", + UnitSystem::measure::identity, + std::move(mfrac), + data::TargetType::RESTART_OPM_EXTENDED); } // Fluid in place