From c8ff9503a289eb40c39aa299b4386644b3a3c0f3 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Thu, 5 Mar 2020 09:13:03 +0100 Subject: [PATCH] fixed: update FoamConfig defaults Foam cases should run without FOAMOPTS available. That means we need to default the mobility model to a valid value. This also adds enum value 'FUNC' and handles setting the default model if only transport phase is unspecified. --- .../eclipse/EclipseState/InitConfig/FoamConfig.hpp | 6 +++--- .../eclipse/EclipseState/InitConfig/FoamConfig.cpp | 11 ++++++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/opm/parser/eclipse/EclipseState/InitConfig/FoamConfig.hpp b/opm/parser/eclipse/EclipseState/InitConfig/FoamConfig.hpp index 7e59ba071..a94ba8ab1 100644 --- a/opm/parser/eclipse/EclipseState/InitConfig/FoamConfig.hpp +++ b/opm/parser/eclipse/EclipseState/InitConfig/FoamConfig.hpp @@ -66,8 +66,8 @@ class FoamConfig { public: enum class MobilityModel { - INVALID, - TAB + TAB, + FUNC }; FoamConfig() = default; @@ -94,7 +94,7 @@ public: private: std::vector data_; Phase transport_phase_ = Phase::GAS; - MobilityModel mobility_model_ = MobilityModel::INVALID; + MobilityModel mobility_model_ = MobilityModel::TAB; }; } // end namespace Opm diff --git a/src/opm/parser/eclipse/EclipseState/InitConfig/FoamConfig.cpp b/src/opm/parser/eclipse/EclipseState/InitConfig/FoamConfig.cpp index 15ded8df1..0d1e42c5d 100644 --- a/src/opm/parser/eclipse/EclipseState/InitConfig/FoamConfig.cpp +++ b/src/opm/parser/eclipse/EclipseState/InitConfig/FoamConfig.cpp @@ -132,8 +132,17 @@ FoamConfig::FoamConfig(const Deck& deck) // do not store any data related to it. const auto& kw_foamopts = deck.getKeyword(); transport_phase_ = get_phase(kw_foamopts.getRecord(0).getItem(0).get(0)); - if (kw_foamopts.getRecord(0).getItem(1).get(0) == "TAB") { + std::string mobModel = kw_foamopts.getRecord(0).getItem(1).get(0); + if (mobModel.empty()) { + if (transport_phase_ == Phase::GAS) { + mobility_model_ = MobilityModel::TAB; + } else if (transport_phase_ == Phase::WATER) { + mobility_model_ = MobilityModel::FUNC; + } + } else if (mobModel == "TAB") { mobility_model_ = MobilityModel::TAB; + } else if (mobModel == "FUNC") { + mobility_model_ = MobilityModel::FUNC; } } if (deck.hasKeyword()) {