diff --git a/ThirdParty/custom-opm-flowdiag-app/opm-flowdiagnostics-applications/opm/utility/ECLFluxCalc.cpp b/ThirdParty/custom-opm-flowdiag-app/opm-flowdiagnostics-applications/opm/utility/ECLFluxCalc.cpp index c4f9429d4f..b3abc0fe15 100644 --- a/ThirdParty/custom-opm-flowdiag-app/opm-flowdiagnostics-applications/opm/utility/ECLFluxCalc.cpp +++ b/ThirdParty/custom-opm-flowdiag-app/opm-flowdiagnostics-applications/opm/utility/ECLFluxCalc.cpp @@ -208,6 +208,11 @@ namespace Opm ECLFluxCalc::flux(const ECLRestartData& rstrt, const ECLPhaseIndex phase) const { + if (! this->phaseIsActive(phase)) { + // Inactive phase. Return empty flux vector. + return {}; + } + // Obtain dynamic data. const auto dyn_data = this->phaseProperties(rstrt, phase); @@ -225,6 +230,11 @@ namespace Opm ECLFluxCalc::massflux(const ECLRestartData& rstrt, const ECLPhaseIndex phase) const { + if (! this->phaseIsActive(phase)) { + // Inactive phase. Return empty (mass) flux vector. + return {}; + } + // Obtain dynamic data. const auto dyn_data = this->phaseProperties(rstrt, phase); @@ -297,6 +307,19 @@ namespace Opm } + bool ECLFluxCalc::phaseIsActive(const ECLPhaseIndex phase) const + { + switch (phase) { + case ECLPhaseIndex::Aqua: return this->pvtWat_ != nullptr; + case ECLPhaseIndex::Liquid: return this->pvtOil_ != nullptr; + case ECLPhaseIndex::Vapour: return this->pvtGas_ != nullptr; + } + + throw std::invalid_argument { + "phaseIsActive(): Invalid Phase Identifier" + }; + } + ECLFluxCalc::DynamicData ECLFluxCalc::phaseProperties(const ECLRestartData& rstrt, diff --git a/ThirdParty/custom-opm-flowdiag-app/opm-flowdiagnostics-applications/opm/utility/ECLFluxCalc.hpp b/ThirdParty/custom-opm-flowdiag-app/opm-flowdiagnostics-applications/opm/utility/ECLFluxCalc.hpp index 341f91326a..f12fd9d9d6 100644 --- a/ThirdParty/custom-opm-flowdiag-app/opm-flowdiagnostics-applications/opm/utility/ECLFluxCalc.hpp +++ b/ThirdParty/custom-opm-flowdiag-app/opm-flowdiagnostics-applications/opm/utility/ECLFluxCalc.hpp @@ -131,6 +131,8 @@ namespace Opm const DynamicData& dyn_data) const; + bool phaseIsActive(const ECLPhaseIndex phase) const; + DynamicData gasPVT(const ECLRestartData& rstrt, DynamicData&& dyn_data) const;