From f9bbf34b9a703e8e9d692a38942045b4c9b65fdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B8rn=20Skille?= Date: Mon, 20 Jun 2022 14:21:05 +0200 Subject: [PATCH] Prevent data vector loading twice if same vector is defined twice in the vector list --- src/opm/io/eclipse/ExtESmry.cpp | 2 +- tests/test_ExtESmry.cpp | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/opm/io/eclipse/ExtESmry.cpp b/src/opm/io/eclipse/ExtESmry.cpp index bce2f2595..c3b9eeddb 100644 --- a/src/opm/io/eclipse/ExtESmry.cpp +++ b/src/opm/io/eclipse/ExtESmry.cpp @@ -531,7 +531,7 @@ void ExtESmry::loadData(const std::vector& stringVect) for (const auto& key: stringVect){ auto key_ind = m_keyword_index[0].at(key); - if (!m_vectorLoaded[key_ind]){ + if ((!m_vectorLoaded[key_ind]) && (std::find(keyIndexVect.begin(), keyIndexVect.end(), key_ind) == keyIndexVect.end() )){ keyIndexVect.push_back(key_ind); loadKeyIndex.push_back(keyCounter); } diff --git a/tests/test_ExtESmry.cpp b/tests/test_ExtESmry.cpp index e03fb52f0..dc775c6b3 100644 --- a/tests/test_ExtESmry.cpp +++ b/tests/test_ExtESmry.cpp @@ -227,6 +227,15 @@ BOOST_AUTO_TEST_CASE(TestExtESmry_1) { BOOST_CHECK_EQUAL(fopr3a.size(), fopr3b.size()); + ExtESmry esmry4("SPE1CASE1.ESMRY"); + + // vector list holding two elements of FOPR, should not be loaded twice + std::vector vect_list{"FOPR", "WBHP:PROD", "FOPR", "FGOR"}; + esmry4.loadData(vect_list); + auto fopr4a = esmry4.get("FOPR"); + auto fgor4a = esmry4.get("FGOR"); + + BOOST_CHECK_EQUAL(fopr4a.size(), fgor4a.size()); } BOOST_AUTO_TEST_CASE(TestExtESmry_2) { @@ -406,4 +415,3 @@ BOOST_AUTO_TEST_CASE(TestESmry_3) { for (size_t n = 63; n < fopt.size(); n++) BOOST_REQUIRE_CLOSE(fopt[n], fopt_rst_ref[n-63], 0.01); } -