From 2b7fe4cae05f88c9e59954a327936e515fd21506 Mon Sep 17 00:00:00 2001 From: Tor Harald Sandve Date: Wed, 14 Aug 2024 07:42:45 +0200 Subject: [PATCH] support drsdtcon with pvtnum --- .../blackoilconvectivemixingmodule.hh | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/opm/models/blackoil/blackoilconvectivemixingmodule.hh b/opm/models/blackoil/blackoilconvectivemixingmodule.hh index 1883937c0..e57f51032 100644 --- a/opm/models/blackoil/blackoilconvectivemixingmodule.hh +++ b/opm/models/blackoil/blackoilconvectivemixingmodule.hh @@ -144,7 +144,7 @@ public: struct ConvectiveMixingModuleParam { - bool active_{false}; + std::vector active_; std::vector Xhi_; std::vector Psi_; }; @@ -155,17 +155,17 @@ public: // check that Xhi and Psi didn't change std::size_t numRegions = eclState.runspec().tabdims().getNumPVTTables(); const auto& control = schedule[episodeIdx].oilvap(); - info.active_ = control.drsdtConvective(); - if (!info.active_) { - return; - } - if (info.Xhi_.empty()) { + if (info.active_.empty()) { + info.active_.resize(numRegions); info.Xhi_.resize(numRegions); info.Psi_.resize(numRegions); } for (size_t i = 0; i < numRegions; ++i ) { - info.Xhi_[i] = control.getMaxDRSDT(i); - info.Psi_[i] = control.getPsi(i); + info.active_[i] = control.drsdtConvective(i); + if (control.drsdtConvective(i)) { + info.Xhi_[i] = control.getMaxDRSDT(i); + info.Psi_[i] = control.getPsi(i); + } } } #endif @@ -175,8 +175,11 @@ public: const IntensiveQuantities& intQuantsEx, const unsigned phaseIdx, const ConvectiveMixingModuleParam& info) { - - if (!info.active_) { + + if (info.active_.empty()) { + return; + } + if (!info.active_[ intQuantsIn.pvtRegionIndex()] || !info.active_[ intQuantsEx.pvtRegionIndex()]) { return; } @@ -269,7 +272,11 @@ public: const Scalar faceArea, const ConvectiveMixingModuleParam& info) { - if (!info.active_) { + if (info.active_.empty()) { + return; + } + + if (!info.active_[ intQuantsIn.pvtRegionIndex()] || !info.active_[ intQuantsEx.pvtRegionIndex()]) { return; }