Add SummaryState functions has_well_var() and has_group_var()

This commit is contained in:
Joakim Hove 2020-10-15 11:29:48 +02:00
parent 6e82f3cb7a
commit 0cdfdca0f7
4 changed files with 16 additions and 3 deletions

View File

@ -82,7 +82,9 @@ public:
bool has(const std::string& key) const;
bool has_well_var(const std::string& well, const std::string& var) const;
bool has_well_var(const std::string& var) const;
bool has_group_var(const std::string& group, const std::string& var) const;
bool has_group_var(const std::string& var) const;
void update(const std::string& key, double value);
void update_well_var(const std::string& well, const std::string& var, double value);

View File

@ -52,7 +52,7 @@ void python::common::export_SummaryState(py::module& module) {
.def_property_readonly("groups", groups)
.def_property_readonly("wells", wells)
.def("__contains__", &SummaryState::has)
.def("has_well_var", &SummaryState::has_well_var)
.def("has_group_var", &SummaryState::has_group_var)
.def("has_well_var", py::overload_cast<const std::string&, const std::string&>(&SummaryState::has_well_var, py::const_))
.def("has_group_var", py::overload_cast<const std::string&, const std::string&>(&SummaryState::has_group_var, py::const_))
.def("__getitem__", py::overload_cast<const std::string&>(&SummaryState::get, py::const_));
}

View File

@ -228,6 +228,10 @@ namespace {
return has_var(this->well_values, var, well);
}
bool SummaryState::has_well_var(const std::string& var) const {
return this->well_values.count(var) != 0;
}
double SummaryState::get_well_var(const std::string& well, const std::string& var) const {
return this->well_values.at(var).at(well);
}
@ -243,6 +247,10 @@ namespace {
return has_var(this->group_values, var, group);
}
bool SummaryState::has_group_var(const std::string& var) const {
return this->group_values.count(var) != 0;
}
double SummaryState::get_group_var(const std::string& group, const std::string& var) const {
return this->group_values.at(var).at(group);
}

View File

@ -1884,7 +1884,8 @@ BOOST_AUTO_TEST_CASE(Test_SummaryState) {
BOOST_CHECK_EQUAL( wopr_wells.size() , 0U);
BOOST_CHECK_EQUAL( st.get_well_var("OP99", "WWCT", 0.50), 0.50);
BOOST_CHECK( st.has_well_var("WWCT") );
BOOST_CHECK( !st.has_well_var("NO_SUCH_VARIABLE") );
const auto& wwct_wells = st.wells("WWCT");
BOOST_CHECK_EQUAL( wwct_wells.size(), 2U);
@ -1896,6 +1897,8 @@ BOOST_AUTO_TEST_CASE(Test_SummaryState) {
BOOST_CHECK_EQUAL( st.get_group_var("G1", "GWCT"), 0.25);
BOOST_CHECK_EQUAL( st.get_group_var("G1", "GWCT"), st.get("GWCT:G1"));
BOOST_CHECK_EQUAL( st.get_group_var("G99", "GWCT", 1.00), 1.00);
BOOST_CHECK( !st.has_group_var("NO_SUCH_VARIABLE"));
BOOST_CHECK( st.has_group_var("GWCT"));
const auto& gopr_groups = st.groups("GOPR");
BOOST_CHECK_EQUAL( gopr_groups.size() , 0U);