Merge pull request #1537 from akva2/internaliz_shrate

Internalize SHRATE
This commit is contained in:
Arne Morten Kvarving
2020-03-06 09:58:42 +01:00
committed by GitHub
9 changed files with 44 additions and 111 deletions

View File

@@ -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

View File

@@ -24,7 +24,6 @@
#include <opm/parser/eclipse/EclipseState/InitConfig/Equil.hpp>
#include <opm/parser/eclipse/EclipseState/InitConfig/FoamConfig.hpp>
#include <opm/parser/eclipse/EclipseState/InitConfig/PolymerConfig.hpp>
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;

View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
#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

View File

@@ -127,6 +127,20 @@ struct PlyvmhTable : public FlatTable<PlyvmhRecord> {
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<ShrateRecord> {
using FlatTable< ShrateRecord >::FlatTable;
};
struct TlmixparRecord {
static constexpr std::size_t size = 2;

View File

@@ -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> 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<int, PlymwinjTable>& 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> jfunc;
DenT oilDenT;

View File

@@ -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 &&

View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
#include <opm/parser/eclipse/Deck/Deck.hpp>
#include <opm/parser/eclipse/Deck/DeckItem.hpp>
#include <opm/parser/eclipse/Deck/DeckKeyword.hpp>
#include <opm/parser/eclipse/Deck/DeckRecord.hpp>
#include <opm/parser/eclipse/EclipseState/InitConfig/PolymerConfig.hpp>
#include <opm/parser/eclipse/Parser/ParserKeywords/S.hpp>
namespace Opm
{
PolymerConfig::PolymerConfig(const Deck& deck) :
has_shrate(deck.hasKeyword<ParserKeywords::SHRATE>())
{
}
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

View File

@@ -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> 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<ParserKeywords::SHRATE>()) {
this->m_shrateTable = ShrateTable(deck.getKeyword("SHRATE"));
hasShrate = true;
}
if (deck.hasKeyword<ParserKeywords::TLMIXPAR>()) {
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<JFunc>(*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 &&

View File

@@ -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& );