diff --git a/opm/parser/eclipse/EclipseState/Schedule/SummaryState.hpp b/opm/parser/eclipse/EclipseState/Schedule/SummaryState.hpp index 3b602803f..a8cb6b9e2 100644 --- a/opm/parser/eclipse/EclipseState/Schedule/SummaryState.hpp +++ b/opm/parser/eclipse/EclipseState/Schedule/SummaryState.hpp @@ -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); diff --git a/python/cxx/summary_state.cpp b/python/cxx/summary_state.cpp index 6299bc4a4..e9ce2b2a4 100644 --- a/python/cxx/summary_state.cpp +++ b/python/cxx/summary_state.cpp @@ -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(&SummaryState::has_well_var, py::const_)) + .def("has_group_var", py::overload_cast(&SummaryState::has_group_var, py::const_)) .def("__getitem__", py::overload_cast(&SummaryState::get, py::const_)); } diff --git a/src/opm/parser/eclipse/EclipseState/Schedule/SummaryState.cpp b/src/opm/parser/eclipse/EclipseState/Schedule/SummaryState.cpp index 24b560252..be8445b82 100644 --- a/src/opm/parser/eclipse/EclipseState/Schedule/SummaryState.cpp +++ b/src/opm/parser/eclipse/EclipseState/Schedule/SummaryState.cpp @@ -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); } diff --git a/tests/test_Summary.cpp b/tests/test_Summary.cpp index 8137a6233..f30638e30 100755 --- a/tests/test_Summary.cpp +++ b/tests/test_Summary.cpp @@ -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);