Merge pull request #1447 from akva2/simplify_tuning

changed: simplify Tuning handling
This commit is contained in:
Joakim Hove
2020-02-05 07:50:41 +01:00
committed by GitHub
10 changed files with 242 additions and 1047 deletions

View File

@@ -155,7 +155,7 @@ namespace Opm
const DynamicState<OilVaporizationProperties>& oilVapProps,
const Events& events,
const DynamicVector<Deck>& modifierDeck,
const Tuning& tuning,
const DynamicState<Tuning>& tuning,
const MessageLimits& messageLimits,
const Runspec& runspec,
const VFPProdMap& vfpProdTables,
@@ -232,7 +232,8 @@ namespace Opm
bool hasGroup(const std::string& groupName, std::size_t timeStep) const;
const Group& getGroup(const std::string& groupName, size_t timeStep) const;
const Tuning& getTuning() const;
const Tuning& getTuning(size_t timeStep) const;
const DynamicState<Tuning>& getTuning() const;
const MessageLimits& getMessageLimits() const;
void invalidNamePattern (const std::string& namePattern, const ParseContext& parseContext, ErrorGuard& errors, const DeckKeyword& keyword) const;
const GuideRateConfig& guideRateConfig(size_t timeStep) const;
@@ -285,7 +286,7 @@ namespace Opm
DynamicState< OilVaporizationProperties > m_oilvaporizationproperties;
Events m_events;
DynamicVector< Deck > m_modifierDeck;
Tuning m_tuning;
DynamicState<Tuning> m_tuning;
MessageLimits m_messageLimits;
Runspec m_runspec;
VFPProdMap vfpprod_tables;

View File

@@ -20,235 +20,96 @@
#ifndef OPM_TUNING_HPP
#define OPM_TUNING_HPP
#include <opm/parser/eclipse/Parser/ParserKeywords/T.hpp>
namespace Opm {
struct Tuning {
using TuningKw = ParserKeywords::TUNING;
template< typename > class DynamicState;
// Record1
double TSINIT = TuningKw::TSINIT::defaultValue * Metric::Time;
double TSMAXZ = TuningKw::TSMAXZ::defaultValue * Metric::Time;
double TSMINZ = TuningKw::TSMINZ::defaultValue * Metric::Time;
double TSMCHP = TuningKw::TSMCHP::defaultValue * Metric::Time;
double TSFMAX = TuningKw::TSFMAX::defaultValue;
double TSFMIN = TuningKw::TSFMIN::defaultValue;
double TFDIFF = TuningKw::TFDIFF::defaultValue;
double TSFCNV = TuningKw::TSFCNV::defaultValue;
double THRUPT = TuningKw::THRUPT::defaultValue;
double TMAXWC = 0.0;
bool TMAXWC_has_value = false;
class TimeMap;
// Record 2
double TRGTTE = TuningKw::TRGTTE::defaultValue;
double TRGCNV = TuningKw::TRGCNV::defaultValue;
double TRGMBE = TuningKw::TRGMBE::defaultValue;
double TRGLCV = TuningKw::TRGLCV::defaultValue;
double XXXTTE = TuningKw::XXXTTE::defaultValue;
double XXXCNV = TuningKw::XXXCNV::defaultValue;
double XXXMBE = TuningKw::XXXMBE::defaultValue;
double XXXLCV = TuningKw::XXXLCV::defaultValue;
double XXXWFL = TuningKw::XXXWFL::defaultValue;
double TRGFIP = TuningKw::TRGFIP::defaultValue;
double TRGSFT = 0.0;
bool TRGSFT_has_value = false;
double THIONX = TuningKw::THIONX::defaultValue;
double TRWGHT = TuningKw::TRWGHT::defaultValue;
class Tuning {
// Record 3
int NEWTMX = TuningKw::NEWTMX::defaultValue;
int NEWTMN = TuningKw::NEWTMN::defaultValue;
int LITMAX = TuningKw::LITMAX::defaultValue;
int LITMIN = TuningKw::LITMIN::defaultValue;
int MXWSIT = TuningKw::MXWSIT::defaultValue;
int MXWPIT = TuningKw::MXWPIT::defaultValue;
double DDPLIM = TuningKw::DDPLIM::defaultValue * Metric::Pressure;
double DDSLIM = TuningKw::DDSLIM::defaultValue;
double TRGDPR = TuningKw::TRGDPR::defaultValue * Metric::Pressure;
double XXXDPR = 0.0 * Metric::Pressure;
bool XXXDPR_has_value = false;
/*
When the TUNING keyword has occured in the Schedule section and
has been handled by the Schedule::handleTUNING() method,
the value for each TUNING keyword item is either
set from the keyword occurence or a default is set if specified in
the keyword description. Items that do not have a specified default
has got a separate <itemname>hasValue() method.
bool operator==(const Tuning& data) const {
return TSINIT == data.TSINIT &&
TSMAXZ == data.TSMAXZ &&
TSMINZ == data.TSMINZ &&
TSMCHP == data.TSMCHP &&
TSFMAX == data.TSFMAX &&
TSFMIN == data.TSFMIN &&
TSFCNV == data.TSFCNV &&
TFDIFF == data.TFDIFF &&
THRUPT == data.THRUPT &&
TMAXWC == data.TMAXWC &&
TMAXWC_has_value == data.TMAXWC_has_value &&
TRGTTE == data.TRGTTE &&
TRGCNV == data.TRGCNV &&
TRGMBE == data.TRGMBE &&
TRGLCV == data.TRGLCV &&
XXXTTE == data.XXXTTE &&
XXXCNV == data.XXXCNV &&
XXXMBE == data.XXXMBE &&
XXXLCV == data.XXXLCV &&
XXXWFL == data.XXXWFL &&
TRGFIP == data.TRGFIP &&
TRGSFT == data.TRGSFT &&
TRGSFT_has_value == data.TRGSFT_has_value &&
THIONX == data.THIONX &&
TRWGHT == data.TRWGHT &&
NEWTMX == data.NEWTMX &&
NEWTMN == data.NEWTMN &&
LITMAX == data.LITMAX &&
LITMIN == data.LITMIN &&
MXWSIT == data.MXWSIT &&
MXWPIT == data.MXWPIT &&
DDPLIM == data.DDPLIM &&
DDSLIM == data.DDSLIM &&
TRGDPR == data.TRGDPR &&
XXXDPR == data.XXXDPR &&
XXXDPR_has_value == data.XXXDPR_has_value;
}
Before any TUNING keyword has occured in the Schedule section,
the different TUNING keyword items has got hardcoded default values
(See Tuning constructor)
Hardcoded values are set as the same as specified in the keyword description,
or 0 if no default is specified in the description.
*/
public:
Tuning() = default;
explicit Tuning(const TimeMap& timemap);
Tuning(const DynamicState<double>& TSINIT,
const DynamicState<double>& TSMAXZ,
const DynamicState<double>& TSMINZ,
const DynamicState<double>& TSMCHP,
const DynamicState<double>& TSFMAX,
const DynamicState<double>& TSFMIN,
const DynamicState<double>& TSFCNV,
const DynamicState<double>& TFDIFF,
const DynamicState<double>& THRUPT,
const DynamicState<double>& TMAXWC,
const DynamicState<int>& TMAXWC_has_value,
const DynamicState<double>& TRGTTE,
const DynamicState<double>& TRGCNV,
const DynamicState<double>& TRGMBE,
const DynamicState<double>& TRGLCV,
const DynamicState<double>& XXXTTE,
const DynamicState<double>& XXXCNV,
const DynamicState<double>& XXXMBE,
const DynamicState<double>& XXXLCV,
const DynamicState<double>& XXXWFL,
const DynamicState<double>& TRGFIP,
const DynamicState<double>& TRGSFT,
const DynamicState<int>& TRGSFT_has_value,
const DynamicState<double>& THIONX,
const DynamicState<int>& TRWGHT,
const DynamicState<int>& NEWTMX,
const DynamicState<int>& NEWTMN,
const DynamicState<int>& LITMAX,
const DynamicState<int>& LITMIN,
const DynamicState<int>& MXWSIT,
const DynamicState<int>& MXWPIT,
const DynamicState<double>& DDPLIM,
const DynamicState<double>& DDSLIM,
const DynamicState<double>& TGRDPR,
const DynamicState<double>& XXXDPR,
const DynamicState<int>& XXXDPR_has_value,
const std::map<std::string, bool>& resetValue);
void setTuningInitialValue(const std::string& tuningItem, double value,bool resetVector);
void setTuningInitialValue(const std::string& tuningItem, int value, bool resetVector);
void getTuningItemValue(const std::string& tuningItem, size_t timestep, double& value);
void getTuningItemValue(const std::string& tuningItem, size_t timestep, int& value);
/* Record 1 */
double getTSINIT(size_t timestep) const;
double getTSMAXZ(size_t timestep) const;
double getTSMINZ(size_t timestep) const;
double getTSMCHP(size_t timestep) const;
double getTSFMAX(size_t timestep) const;
double getTSFMIN(size_t timestep) const;
double getTSFCNV(size_t timestep) const;
double getTFDIFF(size_t timestep) const;
double getTHRUPT(size_t timestep) const;
double getTMAXWC(size_t timestep) const;
bool getTMAXWChasValue(size_t timestep) const;
void setTSINIT(size_t timestep, double TSINIT);
void setTSMAXZ(size_t timestep, double TSMAXZ);
void setTSMINZ(size_t timestep, double TSMINZ);
void setTSMCHP(size_t timestep, double TSMCHP);
void setTSFMAX(size_t timestep, double TSFMAX);
void setTSFMIN(size_t timestep, double TSFMIN);
void setTSFCNV(size_t timestep, double TSFCNV);
void setTFDIFF(size_t timestep, double TFDIFF);
void setTHRUPT(size_t timestep, double THRUPT);
void setTMAXWC(size_t timestep, double TMAXWC);
/* Record 2 */
double getTRGTTE(size_t timestep) const;
double getTRGCNV(size_t timestep) const;
double getTRGMBE(size_t timestep) const;
double getTRGLCV(size_t timestep) const;
double getXXXTTE(size_t timestep) const;
double getXXXCNV(size_t timestep) const;
double getXXXMBE(size_t timestep) const;
double getXXXLCV(size_t timestep) const;
double getXXXWFL(size_t timestep) const;
double getTRGFIP(size_t timestep) const;
double getTRGSFT(size_t timestep) const;
bool getTRGSFThasValue(size_t timestep) const;
double getTHIONX(size_t timestep) const;
int getTRWGHT(size_t timestep) const;
void setTRGTTE(size_t timestep, double TRGTTE);
void setTRGCNV(size_t timestep, double TRGCNV);
void setTRGMBE(size_t timestep, double TRGMBE);
void setTRGLCV(size_t timestep, double TRGLCV);
void setXXXTTE(size_t timestep, double XXXTTE);
void setXXXCNV(size_t timestep, double XXXCNV);
void setXXXMBE(size_t timestep, double XXXMBE);
void setXXXLCV(size_t timestep, double XXXLCV);
void setXXXWFL(size_t timestep, double XXXWFL);
void setTRGFIP(size_t timestep, double TRGFIP);
void setTRGSFT(size_t timestep, double TRGFIP);
void setTHIONX(size_t timestep, double THIONX);
void setTRWGHT(size_t timestep, int TRWGHT);
/* Record 3 */
int getNEWTMX(size_t timestep) const;
int getNEWTMN(size_t timestep) const;
int getLITMAX(size_t timestep) const;
int getLITMIN(size_t timestep) const;
int getMXWSIT(size_t timestep) const;
int getMXWPIT(size_t timestep) const;
double getDDPLIM(size_t timestep) const;
double getDDSLIM(size_t timestep) const;
double getTRGDPR(size_t timestep) const;
double getXXXDPR(size_t timestep) const;
bool getXXXDPRhasValue(size_t timestep) const;
void setNEWTMX(size_t timestep, int NEWTMX);
void setNEWTMN(size_t timestep, int NEWTMN);
void setLITMAX(size_t timestep, int LITMAX);
void setLITMIN(size_t timestep, int LITMIN);
void setMXWSIT(size_t timestep, int MXWSIT);
void setMXWPIT(size_t timestep, int MXWPIT);
void setDDPLIM(size_t timestep, double DDPLIM);
void setDDSLIM(size_t timestep, double DDSLIM);
void setTRGDPR(size_t timestep, double TRGDPR);
void setXXXDPR(size_t timestep, double XXXDPR);
const DynamicState<double>& getTSINIT() const;
const DynamicState<double>& getTSMAXZ() const;
const DynamicState<double>& getTSMINZ() const;
const DynamicState<double>& getTSMCHP() const;
const DynamicState<double>& getTSFMAX() const;
const DynamicState<double>& getTSFMIN() const;
const DynamicState<double>& getTSFCNV() const;
const DynamicState<double>& getTFDIFF() const;
const DynamicState<double>& getTHRUPT() const;
const DynamicState<double>& getTMAXWC() const;
const DynamicState<int>& getTMAXWC_has_value() const;
const DynamicState<double>& getTRGTTE() const;
const DynamicState<double>& getTRGCNV() const;
const DynamicState<double>& getTRGMBE() const;
const DynamicState<double>& getTRGLCV() const;
const DynamicState<double>& getXXXTTE() const;
const DynamicState<double>& getXXXCNV() const;
const DynamicState<double>& getXXXMBE() const;
const DynamicState<double>& getXXXLCV() const;
const DynamicState<double>& getXXXWFL() const;
const DynamicState<double>& getTRGFIP() const;
const DynamicState<double>& getTRGSFT() const;
const DynamicState<int>& getTRGSFT_has_value() const;
const DynamicState<double>& getTHIONX() const;
const DynamicState<int>& getTRWGHT() const;
const DynamicState<int>& getNEWTMX() const;
const DynamicState<int>& getNEWTMN() const;
const DynamicState<int>& getLITMAX() const;
const DynamicState<int>& getLITMIN() const;
const DynamicState<int>& getMXWSIT() const;
const DynamicState<int>& getMXWPIT() const;
const DynamicState<double>& getDDPLIM() const;
const DynamicState<double>& getDDSLIM() const;
const DynamicState<double>& getTRGDPR() const;
const DynamicState<double>& getXXXDPR() const;
const DynamicState<int>& getXXXDPR_has_value() const;
const std::map<std::string,bool>& getResetValues() const;
bool operator==(const Tuning& data) const;
private:
/* Record1 */
DynamicState<double> m_TSINIT;
DynamicState<double> m_TSMAXZ;
DynamicState<double> m_TSMINZ;
DynamicState<double> m_TSMCHP;
DynamicState<double> m_TSFMAX;
DynamicState<double> m_TSFMIN;
DynamicState<double> m_TSFCNV;
DynamicState<double> m_TFDIFF;
DynamicState<double> m_THRUPT;
DynamicState<double> m_TMAXWC;
DynamicState<int> m_TMAXWC_has_value;
/* Record 2 */
DynamicState<double> m_TRGTTE;
DynamicState<double> m_TRGCNV;
DynamicState<double> m_TRGMBE;
DynamicState<double> m_TRGLCV;
DynamicState<double> m_XXXTTE;
DynamicState<double> m_XXXCNV;
DynamicState<double> m_XXXMBE;
DynamicState<double> m_XXXLCV;
DynamicState<double> m_XXXWFL;
DynamicState<double> m_TRGFIP;
DynamicState<double> m_TRGSFT;
DynamicState<int> m_TRGSFT_has_value;
DynamicState<double> m_THIONX;
DynamicState<int> m_TRWGHT;
/* Record 3 */
DynamicState<int> m_NEWTMX;
DynamicState<int> m_NEWTMN;
DynamicState<int> m_LITMAX;
DynamicState<int> m_LITMIN;
DynamicState<int> m_MXWSIT;
DynamicState<int> m_MXWPIT;
DynamicState<double> m_DDPLIM;
DynamicState<double> m_DDSLIM;
DynamicState<double> m_TRGDPR;
DynamicState<double> m_XXXDPR;
DynamicState<int> m_XXXDPR_has_value;
std::map<std::string, bool> m_ResetValue;
bool operator !=(const Tuning& data) const {
return !(*this == data);
}
};
} //namespace Opm