From 6d011131cd018cd6b5298f7f3a729d502056f33d Mon Sep 17 00:00:00 2001 From: Kai Bao Date: Mon, 31 Jul 2023 16:17:16 +0200 Subject: [PATCH] UDQ for the injection concentration for WINJFCNC --- .../wells/BlackoilWellModelGeneric.cpp | 17 ++++++++++------- opm/simulators/wells/WellFilterCake.cpp | 6 +----- opm/simulators/wells/WellFilterCake.hpp | 1 + 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/opm/simulators/wells/BlackoilWellModelGeneric.cpp b/opm/simulators/wells/BlackoilWellModelGeneric.cpp index 656baabd0..6a8f257c6 100644 --- a/opm/simulators/wells/BlackoilWellModelGeneric.cpp +++ b/opm/simulators/wells/BlackoilWellModelGeneric.cpp @@ -1461,14 +1461,17 @@ void BlackoilWellModelGeneric::updateFiltrationParticleVolume(const double dt, const std::size_t water_index) { for (auto& well : this->well_container_generic_) { - if (well->isInjector() && well->wellEcl().getFilterConc() > 0.) { - auto fc = this->filter_cake_ - .emplace(std::piecewise_construct, - std::forward_as_tuple(well->name()), - std::tuple{}); + if (well->isInjector()) { + const double conc = well->wellEcl().evalFilterConc(this->summaryState_); + if (conc > 0.) { + auto fc = this->filter_cake_ + .emplace(std::piecewise_construct, + std::forward_as_tuple(well->name()), + std::tuple{}); - fc.first->second.updateFiltrationParticleVolume(*well, dt, water_index, - this->wellState()); + fc.first->second.updateFiltrationParticleVolume(*well, dt, conc, water_index, + this->wellState()); + } } } } diff --git a/opm/simulators/wells/WellFilterCake.cpp b/opm/simulators/wells/WellFilterCake.cpp index 2f1d9c914..303f932bf 100644 --- a/opm/simulators/wells/WellFilterCake.cpp +++ b/opm/simulators/wells/WellFilterCake.cpp @@ -38,6 +38,7 @@ namespace Opm { void WellFilterCake:: updateFiltrationParticleVolume(const WellInterfaceGeneric& well, const double dt, + const double conc, const std::size_t water_index, const WellState& well_state) { @@ -55,11 +56,6 @@ updateFiltrationParticleVolume(const WellInterfaceGeneric& well, return; } - const double conc = well.wellEcl().getFilterConc(); - if (conc == 0.) { - return; - } - // it is currently used for the filter cake modeling related to formation damage study auto& ws = well_state.well(well.indexOfWell()); const auto& connection_rates = ws.perf_data.phase_rates; diff --git a/opm/simulators/wells/WellFilterCake.hpp b/opm/simulators/wells/WellFilterCake.hpp index 46369aecf..0d056bbbf 100644 --- a/opm/simulators/wells/WellFilterCake.hpp +++ b/opm/simulators/wells/WellFilterCake.hpp @@ -36,6 +36,7 @@ public: //! \details Used for calculation related to cake filtration due to injection activity. void updateFiltrationParticleVolume(const WellInterfaceGeneric& well, const double dt, + const double conc, const std::size_t water_index, const WellState& well_state);