From ef1e6d5fd8787226758dc491f26924d2f01af2f2 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Thu, 5 Mar 2020 13:23:09 +0100 Subject: [PATCH 1/2] Revert "added: PolymerConfig class" This reverts commit a984ca5beba6a57c4a04854d9fd057e2ecd183f0. --- CMakeLists_files.cmake | 2 - .../EclipseState/InitConfig/InitConfig.hpp | 5 -- .../EclipseState/InitConfig/PolymerConfig.hpp | 46 ----------------- .../EclipseState/InitConfig/InitConfig.cpp | 7 --- .../EclipseState/InitConfig/PolymerConfig.cpp | 51 ------------------- 5 files changed, 111 deletions(-) delete mode 100644 opm/parser/eclipse/EclipseState/InitConfig/PolymerConfig.hpp delete mode 100644 src/opm/parser/eclipse/EclipseState/InitConfig/PolymerConfig.cpp diff --git a/CMakeLists_files.cmake b/CMakeLists_files.cmake index 5af6ff8a2..0a9737641 100644 --- a/CMakeLists_files.cmake +++ b/CMakeLists_files.cmake @@ -80,7 +80,6 @@ if(ENABLE_ECL_INPUT) src/opm/parser/eclipse/EclipseState/InitConfig/Equil.cpp src/opm/parser/eclipse/EclipseState/InitConfig/FoamConfig.cpp src/opm/parser/eclipse/EclipseState/InitConfig/InitConfig.cpp - src/opm/parser/eclipse/EclipseState/InitConfig/PolymerConfig.cpp src/opm/parser/eclipse/EclipseState/IOConfig/IOConfig.cpp src/opm/parser/eclipse/EclipseState/IOConfig/RestartConfig.cpp src/opm/parser/eclipse/EclipseState/Runspec.cpp @@ -521,7 +520,6 @@ if(ENABLE_ECL_INPUT) opm/parser/eclipse/EclipseState/InitConfig/InitConfig.hpp opm/parser/eclipse/EclipseState/InitConfig/Equil.hpp opm/parser/eclipse/EclipseState/InitConfig/FoamConfig.hpp - opm/parser/eclipse/EclipseState/InitConfig/PolymerConfig.hpp opm/parser/eclipse/EclipseState/Util/Value.hpp opm/parser/eclipse/EclipseState/Util/IOrderSet.hpp opm/parser/eclipse/EclipseState/Util/OrderedMap.hpp diff --git a/opm/parser/eclipse/EclipseState/InitConfig/InitConfig.hpp b/opm/parser/eclipse/EclipseState/InitConfig/InitConfig.hpp index 0da459c98..6d0c7cab2 100644 --- a/opm/parser/eclipse/EclipseState/InitConfig/InitConfig.hpp +++ b/opm/parser/eclipse/EclipseState/InitConfig/InitConfig.hpp @@ -24,7 +24,6 @@ #include #include -#include namespace Opm { @@ -36,7 +35,6 @@ namespace Opm { InitConfig(); explicit InitConfig(const Deck& deck); InitConfig(const Equil& equil, const FoamConfig& foam, - const PolymerConfig& polymer, bool filleps, bool gravity, bool restartReq, int restartStep, const std::string& restartRootName); @@ -53,8 +51,6 @@ namespace Opm { bool hasFoamConfig() const; const FoamConfig& getFoamConfig() const; - const PolymerConfig& getPolymerConfig() const; - bool filleps() const { return this->m_filleps; @@ -65,7 +61,6 @@ namespace Opm { private: Equil equil; FoamConfig foamconfig; - PolymerConfig polymerconfig; bool m_filleps; bool m_gravity = true; diff --git a/opm/parser/eclipse/EclipseState/InitConfig/PolymerConfig.hpp b/opm/parser/eclipse/EclipseState/InitConfig/PolymerConfig.hpp deleted file mode 100644 index 89f410300..000000000 --- a/opm/parser/eclipse/EclipseState/InitConfig/PolymerConfig.hpp +++ /dev/null @@ -1,46 +0,0 @@ -/* - Copyright 2019 SINTEF Digital, Mathematics and Cybernetics. - - This file is part of the Open Porous Media project (OPM). - - OPM is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OPM is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with OPM. If not, see . -*/ - -#ifndef OPM_POLYMERCONFIG_HPP -#define OPM_POLYMERCONFIG_HPP - -namespace Opm -{ - -class Deck; -class DeckRecord; - -class PolymerConfig -{ -public: - PolymerConfig() = default; - explicit PolymerConfig(const Deck&); - PolymerConfig(bool shrate); - - bool shrate() const; - - bool operator==(const PolymerConfig& data) const; - -private: - bool has_shrate; -}; - -} // end namespace Opm - -#endif // OPM_POLYMERCONFIG_HPP diff --git a/src/opm/parser/eclipse/EclipseState/InitConfig/InitConfig.cpp b/src/opm/parser/eclipse/EclipseState/InitConfig/InitConfig.cpp index a05eee401..ce2b53796 100644 --- a/src/opm/parser/eclipse/EclipseState/InitConfig/InitConfig.cpp +++ b/src/opm/parser/eclipse/EclipseState/InitConfig/InitConfig.cpp @@ -79,12 +79,10 @@ namespace Opm { } InitConfig::InitConfig(const Equil& equils, const FoamConfig& foam, - const PolymerConfig& polymer, bool filleps, bool gravity, bool restartReq, int restartStep, const std::string& restartRootName) : equil(equils) , foamconfig(foam) - , polymerconfig(polymer) , m_filleps(filleps) , m_gravity(gravity) , m_restartRequested(restartReq) @@ -138,14 +136,9 @@ namespace Opm { return this->foamconfig; } - const PolymerConfig& InitConfig::getPolymerConfig() const { - return this->polymerconfig; - } - bool InitConfig::operator==(const InitConfig& data) const { return equil == data.equil && foamconfig == data.foamconfig && - polymerconfig == data.polymerconfig && m_filleps == data.m_filleps && m_gravity == data.m_gravity && m_restartRequested == data.m_restartRequested && diff --git a/src/opm/parser/eclipse/EclipseState/InitConfig/PolymerConfig.cpp b/src/opm/parser/eclipse/EclipseState/InitConfig/PolymerConfig.cpp deleted file mode 100644 index cbfe6125e..000000000 --- a/src/opm/parser/eclipse/EclipseState/InitConfig/PolymerConfig.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/* - Copyright 2020 SINTEF Digital, Mathematics and Cybernetics. - - This file is part of the Open Porous Media project (OPM). - - OPM is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OPM is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with OPM. If not, see . -*/ - -#include -#include -#include -#include -#include -#include - -namespace Opm -{ - -PolymerConfig::PolymerConfig(const Deck& deck) : - has_shrate(deck.hasKeyword()) -{ -} - -PolymerConfig::PolymerConfig(bool shrate) - : has_shrate(shrate) -{ -} - -bool -PolymerConfig::shrate() const { - return has_shrate; -} - -bool -PolymerConfig::operator==(const PolymerConfig& data) const -{ - return has_shrate == data.has_shrate; -} - -} // namespace Opm From 33ebaa87536aa2ef538927eca39e6f8bb6b0d139 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Thu, 5 Mar 2020 14:17:39 +0100 Subject: [PATCH 2/2] internalize SHRATE --- .../eclipse/EclipseState/Tables/FlatTable.hpp | 14 +++++++++++++ .../EclipseState/Tables/TableManager.hpp | 8 +++++++ .../EclipseState/Tables/TableManager.cpp | 21 +++++++++++++++++++ .../eclipse/EclipseState/Tables/Tables.cpp | 1 + 4 files changed, 44 insertions(+) diff --git a/opm/parser/eclipse/EclipseState/Tables/FlatTable.hpp b/opm/parser/eclipse/EclipseState/Tables/FlatTable.hpp index bca0f3edc..0eb42544a 100644 --- a/opm/parser/eclipse/EclipseState/Tables/FlatTable.hpp +++ b/opm/parser/eclipse/EclipseState/Tables/FlatTable.hpp @@ -127,6 +127,20 @@ struct PlyvmhTable : public FlatTable { using FlatTable< PlyvmhRecord >::FlatTable; }; +struct ShrateRecord { + static constexpr std::size_t size = 1; + + double rate; + + bool operator==(const ShrateRecord& data) const { + return rate == data.rate; + } +}; + +struct ShrateTable : public FlatTable { + using FlatTable< ShrateRecord >::FlatTable; +}; + struct TlmixparRecord { static constexpr std::size_t size = 2; diff --git a/opm/parser/eclipse/EclipseState/Tables/TableManager.hpp b/opm/parser/eclipse/EclipseState/Tables/TableManager.hpp index 30dde321d..90e033e60 100644 --- a/opm/parser/eclipse/EclipseState/Tables/TableManager.hpp +++ b/opm/parser/eclipse/EclipseState/Tables/TableManager.hpp @@ -73,6 +73,7 @@ namespace Opm { const PlyvmhTable& plyvmhTable, const RockTable& rockTable, const PlmixparTable& plmixparTable, + const ShrateTable& shrateTable, const TlmixparTable& tlmixparTable, const ViscrefTable& viscrefTable, const WatdentTable& watdentTable, @@ -89,6 +90,7 @@ namespace Opm { bool useImptvd, bool useEnptvd, bool useEqlnum, + bool useShrate, std::shared_ptr jfunc_param, const DenT& oilDenT, const DenT& gasDenT, @@ -183,6 +185,7 @@ namespace Opm { const RockTable& getRockTable() const; const ViscrefTable& getViscrefTable() const; const PlmixparTable& getPlmixparTable() const; + const ShrateTable& getShrateTable() const; const TlmixparTable& getTlmixparTable() const; const WatdentTable& getWatdentTable() const; const std::map& getPlymwinjTables() const; @@ -199,6 +202,9 @@ namespace Opm { /// deck has keyword "EQLNUM" --- Equilibriation region numbers bool useEqlnum() const; + /// deck has keyword "SHRATE" + bool useShrate() const; + /// deck has keyword "JFUNC" --- Use Leverett's J Function for capillary pressure bool useJFunc() const; @@ -432,6 +438,7 @@ namespace Opm { PlyvmhTable m_plyvmhTable; RockTable m_rockTable; PlmixparTable m_plmixparTable; + ShrateTable m_shrateTable; TlmixparTable m_tlmixparTable; ViscrefTable m_viscrefTable; WatdentTable m_watdentTable; @@ -450,6 +457,7 @@ namespace Opm { bool hasImptvd = false;// if deck has keyword IMPTVD bool hasEnptvd = false;// if deck has keyword ENPTVD bool hasEqlnum = false;// if deck has keyword EQLNUM + bool hasShrate = false;// if deck has keyword SHRATE std::shared_ptr jfunc; DenT oilDenT; diff --git a/src/opm/parser/eclipse/EclipseState/Tables/TableManager.cpp b/src/opm/parser/eclipse/EclipseState/Tables/TableManager.cpp index d23f6402f..05c71da6c 100644 --- a/src/opm/parser/eclipse/EclipseState/Tables/TableManager.cpp +++ b/src/opm/parser/eclipse/EclipseState/Tables/TableManager.cpp @@ -106,6 +106,7 @@ namespace Opm { const PlyvmhTable& plyvmhTable, const RockTable& rockTable, const PlmixparTable& plmixparTable, + const ShrateTable& shrateTable, const TlmixparTable& tlmixparTable, const ViscrefTable& viscrefTable, const WatdentTable& watdentTable, @@ -122,6 +123,7 @@ namespace Opm { bool useImptvd, bool useEnptvd, bool useEqlnum, + bool useShrate, std::shared_ptr jfunc_param, const DenT& oilDenT_, const DenT& gasDenT_, @@ -141,6 +143,7 @@ namespace Opm { m_plyvmhTable(plyvmhTable), m_rockTable(rockTable), m_plmixparTable(plmixparTable), + m_shrateTable(shrateTable), m_tlmixparTable(tlmixparTable), m_viscrefTable(viscrefTable), m_watdentTable(watdentTable), @@ -157,6 +160,7 @@ namespace Opm { hasImptvd(useImptvd), hasEnptvd(useEnptvd), hasEqlnum(useEqlnum), + hasShrate(useShrate), jfunc(std::move(jfunc_param)), oilDenT(oilDenT_), gasDenT(gasDenT_), @@ -245,6 +249,11 @@ namespace Opm { this->m_plmixparTable = PlmixparTable(deck.getKeyword("PLMIXPAR")); } + if (deck.hasKeyword()) { + this->m_shrateTable = ShrateTable(deck.getKeyword("SHRATE")); + hasShrate = true; + } + if (deck.hasKeyword()) { this->m_tlmixparTable = TlmixparTable(deck.getKeyword("TLMIXPAR")); } @@ -269,6 +278,7 @@ namespace Opm { m_plyvmhTable = data.m_plyvmhTable; m_densityTable = data.m_densityTable; m_plmixparTable = data.m_plmixparTable; + m_shrateTable = data.m_shrateTable; m_tlmixparTable = data.m_tlmixparTable; m_viscrefTable = data.m_viscrefTable; m_watdentTable = data.m_watdentTable; @@ -285,6 +295,7 @@ namespace Opm { hasImptvd = data.hasImptvd; hasEnptvd = data.hasEnptvd; hasEqlnum = data.hasEqlnum; + hasShrate = data.hasShrate; if (data.jfunc) jfunc = std::make_shared(*data.jfunc); m_rtemp = data.m_rtemp; @@ -1042,6 +1053,10 @@ namespace Opm { return m_plmixparTable; } + const ShrateTable& TableManager::getShrateTable() const { + return m_shrateTable; + } + const TlmixparTable& TableManager::getTlmixparTable() const { return m_tlmixparTable; } @@ -1084,6 +1099,10 @@ namespace Opm { return hasEqlnum; } + bool TableManager::useShrate() const { + return hasShrate; + } + bool TableManager::useJFunc() const { if (jfunc) return true; @@ -1126,6 +1145,7 @@ namespace Opm { m_densityTable == data.m_densityTable && m_plmixparTable == data.m_plmixparTable && m_plyvmhTable == data.m_plyvmhTable && + m_shrateTable == data.m_shrateTable && m_tlmixparTable == data.m_tlmixparTable && m_viscrefTable == data.m_viscrefTable && m_watdentTable == data.m_watdentTable && @@ -1142,6 +1162,7 @@ namespace Opm { hasImptvd == data.hasImptvd && hasEnptvd == data.hasEnptvd && hasEqlnum == data.hasEqlnum && + hasShrate == data.hasShrate && gasDenT == data.gasDenT && oilDenT == data.oilDenT && watDenT == data.watDenT && diff --git a/src/opm/parser/eclipse/EclipseState/Tables/Tables.cpp b/src/opm/parser/eclipse/EclipseState/Tables/Tables.cpp index b50dfb228..1ba61b66e 100644 --- a/src/opm/parser/eclipse/EclipseState/Tables/Tables.cpp +++ b/src/opm/parser/eclipse/EclipseState/Tables/Tables.cpp @@ -1340,6 +1340,7 @@ template FlatTable< ROCKRecord >::FlatTable( const DeckKeyword& ); template FlatTable< PlyvmhRecord >::FlatTable( const DeckKeyword& ); template FlatTable< VISCREFRecord >::FlatTable( const DeckKeyword& ); template FlatTable< PlmixparRecord>::FlatTable( const DeckKeyword& ); +template FlatTable< ShrateRecord >::FlatTable( const DeckKeyword& ); template FlatTable< TlmixparRecord>::FlatTable( const DeckKeyword& ); template FlatTable< WATDENTRecord >::FlatTable( const DeckKeyword& );