From fff99360b3189df7da1ee63972f550139b83c249 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Atgeirr=20Fl=C3=B8=20Rasmussen?= Date: Tue, 25 Apr 2017 09:31:48 +0200 Subject: [PATCH] Workaround: ensure properties necessary for FIP are computed. Should only result in an extra call the first time in this function. --- opm/autodiff/BlackoilSolventModel.hpp | 5 ++++- opm/autodiff/BlackoilSolventModel_impl.hpp | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/opm/autodiff/BlackoilSolventModel.hpp b/opm/autodiff/BlackoilSolventModel.hpp index f14f64671..2c56f4fbe 100644 --- a/opm/autodiff/BlackoilSolventModel.hpp +++ b/opm/autodiff/BlackoilSolventModel.hpp @@ -91,6 +91,10 @@ namespace Opm { using Base::wellModel; + std::vector > + computeFluidInPlace(const ReservoirState& x, + const std::vector& fipnum); + protected: // --------- Types and enums --------- @@ -229,7 +233,6 @@ namespace Opm { const ADB& so, const ADB& sg, const ADB& ss) const; - }; diff --git a/opm/autodiff/BlackoilSolventModel_impl.hpp b/opm/autodiff/BlackoilSolventModel_impl.hpp index 9faddde01..33b46c1d7 100644 --- a/opm/autodiff/BlackoilSolventModel_impl.hpp +++ b/opm/autodiff/BlackoilSolventModel_impl.hpp @@ -1087,6 +1087,26 @@ namespace Opm { } + + + template + std::vector > + BlackoilSolventModel:: + computeFluidInPlace(const ReservoirState& x, + const std::vector& fipnum) + { + if (b_eff_[0].size() == 0) { + // A hack to avoid trouble for initial fluid in place, due to usage of b_eff_. + WellState xw, xwdummy; + xw.init(&wells(), x, xwdummy); + SolutionState solstate = variableState(x, xw); + computeEffectiveProperties(solstate); + } + return Base::computeFluidInPlace(x, fipnum); + } + + + }