Refactor enum for GuideRate target
This commit is contained in:
parent
e026660c80
commit
af72086db8
@ -26,8 +26,20 @@ namespace Opm {
|
||||
|
||||
class GuideRateModel {
|
||||
public:
|
||||
|
||||
enum class Target {
|
||||
OIL = 0,
|
||||
LIQ = 1,
|
||||
GAS = 2,
|
||||
RES = 3,
|
||||
COMB = 4,
|
||||
NONE = 5
|
||||
};
|
||||
|
||||
static Target TargetFromString(const std::string& s);
|
||||
|
||||
GuideRateModel(double time_interval_arg,
|
||||
GuideRateTarget phase_arg,
|
||||
Target target_arg,
|
||||
double A_arg,
|
||||
double B_arg,
|
||||
double C_arg,
|
||||
@ -50,7 +62,7 @@ private:
|
||||
be evaluated, due to a division by zero problem.
|
||||
*/
|
||||
double time_interval = 0;
|
||||
GuideRateTarget phase = GuideRateTarget::NONE;
|
||||
Target target = Target::NONE;
|
||||
double A = 0;
|
||||
double B = 0;
|
||||
double C = 0;
|
||||
|
@ -29,16 +29,6 @@ namespace Opm {
|
||||
|
||||
|
||||
|
||||
enum class GuideRateTarget {
|
||||
OIL = 0,
|
||||
LIQ = 1,
|
||||
GAS = 2,
|
||||
RES = 3,
|
||||
COMB = 4,
|
||||
NONE = 5
|
||||
};
|
||||
GuideRateTarget GuideRateTargetFromString(const std::string& s);
|
||||
|
||||
|
||||
namespace GroupProduction {
|
||||
|
||||
|
@ -24,18 +24,18 @@
|
||||
namespace Opm {
|
||||
|
||||
GuideRateModel::GuideRateModel(double time_interval_arg,
|
||||
GuideRateTarget phase_arg,
|
||||
double A_arg,
|
||||
double B_arg,
|
||||
double C_arg,
|
||||
double D_arg,
|
||||
double E_arg,
|
||||
double F_arg,
|
||||
bool allow_increase_arg,
|
||||
double damping_factor_arg,
|
||||
bool use_free_gas_arg) :
|
||||
Target target_arg,
|
||||
double A_arg,
|
||||
double B_arg,
|
||||
double C_arg,
|
||||
double D_arg,
|
||||
double E_arg,
|
||||
double F_arg,
|
||||
bool allow_increase_arg,
|
||||
double damping_factor_arg,
|
||||
bool use_free_gas_arg) :
|
||||
time_interval(time_interval_arg),
|
||||
phase(phase_arg),
|
||||
target(target_arg),
|
||||
A(A_arg),
|
||||
B(B_arg),
|
||||
C(C_arg),
|
||||
@ -84,7 +84,7 @@ double GuideRateModel::eval(double pot, double R1, double R2) const {
|
||||
|
||||
bool GuideRateModel::operator==(const GuideRateModel& other) const {
|
||||
return (this->time_interval == other.time_interval) &&
|
||||
(this->phase == other.phase) &&
|
||||
(this->target == other.target) &&
|
||||
(this->A == other.A) &&
|
||||
(this->B == other.B) &&
|
||||
(this->C == other.C) &&
|
||||
@ -100,4 +100,27 @@ bool GuideRateModel::operator!=(const GuideRateModel& other) const {
|
||||
return !(*this == other);
|
||||
}
|
||||
|
||||
|
||||
GuideRateModel::Target GuideRateModel::TargetFromString(const std::string& s) {
|
||||
if (s == "OIL")
|
||||
return Target::OIL;
|
||||
|
||||
if (s == "LIQ")
|
||||
return Target::LIQ;
|
||||
|
||||
if (s == "GAS")
|
||||
return Target::GAS;
|
||||
|
||||
if (s == "RES")
|
||||
return Target::RES;
|
||||
|
||||
if (s == "COMB")
|
||||
return Target::COMB;
|
||||
|
||||
if (s == "NONE")
|
||||
return Target::NONE;
|
||||
|
||||
throw std::invalid_argument("Could not convert: " + s + " to a valid Target enum value");
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1588,7 +1588,7 @@ namespace {
|
||||
const auto& record = keyword.getRecord(0);
|
||||
|
||||
double min_calc_delay = record.getItem<ParserKeywords::GUIDERAT::MIN_CALC_TIME>().getSIDouble(0);
|
||||
auto phase = GuideRateTargetFromString(record.getItem<ParserKeywords::GUIDERAT::NOMINATED_PHASE>().getTrimmedString(0));
|
||||
auto phase = GuideRateModel::TargetFromString(record.getItem<ParserKeywords::GUIDERAT::NOMINATED_PHASE>().getTrimmedString(0));
|
||||
double A = record.getItem<ParserKeywords::GUIDERAT::A>().get<double>(0);
|
||||
double B = record.getItem<ParserKeywords::GUIDERAT::B>().get<double>(0);
|
||||
double C = record.getItem<ParserKeywords::GUIDERAT::C>().get<double>(0);
|
||||
|
@ -137,26 +137,4 @@ namespace Opm {
|
||||
}
|
||||
|
||||
|
||||
|
||||
GuideRateTarget GuideRateTargetFromString(const std::string& s) {
|
||||
if (s == "OIL")
|
||||
return GuideRateTarget::OIL;
|
||||
|
||||
if (s == "LIQ")
|
||||
return GuideRateTarget::LIQ;
|
||||
|
||||
if (s == "GAS")
|
||||
return GuideRateTarget::GAS;
|
||||
|
||||
if (s == "RES")
|
||||
return GuideRateTarget::RES;
|
||||
|
||||
if (s == "COMB")
|
||||
return GuideRateTarget::COMB;
|
||||
|
||||
if (s == "NONE")
|
||||
return GuideRateTarget::NONE;
|
||||
|
||||
throw std::invalid_argument("Could not convert: " + s + " to a valid GuideRateTarget enum value");
|
||||
}
|
||||
}
|
||||
|
@ -299,9 +299,9 @@ BOOST_AUTO_TEST_CASE(createDeckWithGCONPROD) {
|
||||
|
||||
BOOST_AUTO_TEST_CASE(TESTGuideRateModel) {
|
||||
Opm::GuideRateModel grc_default;
|
||||
BOOST_CHECK_THROW(Opm::GuideRateModel(0.0,GuideRateTarget::NONE, -5,0,0,0,0,0,true,1,true), std::invalid_argument);
|
||||
BOOST_CHECK_THROW(Opm::GuideRateModel(0.0,GuideRateModel::Target::NONE, -5,0,0,0,0,0,true,1,true), std::invalid_argument);
|
||||
BOOST_CHECK_THROW(grc_default.eval(1,0.50,0.50), std::invalid_argument);
|
||||
|
||||
Opm::GuideRateModel grc_delay(10, GuideRateTarget::NONE, 1,1,0,0,0,0,true,1,true);
|
||||
Opm::GuideRateModel grc_delay(10, GuideRateModel::Target::NONE, 1,1,0,0,0,0,true,1,true);
|
||||
BOOST_CHECK_NO_THROW(grc_delay.eval(1.0, 0.5, 0.5));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user