SummaryConfig::merge
Combine two Summary configs, essentially concatenating the underlying vectors.
This commit is contained in:
parent
ffc94fc0b2
commit
4f8ad8a533
@ -392,4 +392,20 @@ namespace {
|
||||
return this->keywords.cend();
|
||||
}
|
||||
|
||||
SummaryConfig& SummaryConfig::merge( const SummaryConfig& other ) {
|
||||
this->keywords.insert( this->keywords.end(),
|
||||
other.keywords.begin(),
|
||||
other.keywords.end() );
|
||||
return *this;
|
||||
}
|
||||
|
||||
SummaryConfig& SummaryConfig::merge( SummaryConfig&& other ) {
|
||||
auto begin = std::make_move_iterator( other.keywords.begin() );
|
||||
auto end = std::make_move_iterator( other.keywords.end() );
|
||||
this->keywords.insert( this->keywords.end(), begin, end );
|
||||
other.keywords.clear();
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -47,6 +47,9 @@ namespace Opm {
|
||||
const_iterator begin() const;
|
||||
const_iterator end() const;
|
||||
|
||||
SummaryConfig& merge( const SummaryConfig& );
|
||||
SummaryConfig& merge( SummaryConfig&& );
|
||||
|
||||
private:
|
||||
std::vector< ERT::smspec_node > keywords;
|
||||
};
|
||||
|
@ -187,6 +187,51 @@ BOOST_AUTO_TEST_CASE(completions) {
|
||||
BOOST_CHECK_EQUAL_COLLECTIONS(
|
||||
keywords.begin(), keywords.end(),
|
||||
names.begin(), names.end() );
|
||||
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( merge ) {
|
||||
const auto input1 = "WWCT\n/\n";
|
||||
auto summary1 = createSummary( input1 );
|
||||
|
||||
const auto keywords = { "FOPT", "WWCT", "WWCT", "WWCT", "WWCT" };
|
||||
const auto wells = { "PRODUCER", "WX2", "W_1", "W_3" };
|
||||
|
||||
const auto input2 = "FOPT\n";
|
||||
const auto summary2 = createSummary( input2 );
|
||||
|
||||
summary1.merge( summary2 );
|
||||
const auto kw_names = sorted_keywords( summary1 );
|
||||
const auto well_names = sorted_names( summary1 );
|
||||
|
||||
BOOST_CHECK_EQUAL_COLLECTIONS(
|
||||
keywords.begin(), keywords.end(),
|
||||
kw_names.begin(), kw_names.end() );
|
||||
|
||||
BOOST_CHECK_EQUAL_COLLECTIONS(
|
||||
wells.begin(), wells.end(),
|
||||
well_names.begin(), well_names.end() );
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE( merge_move ) {
|
||||
const auto input = "WWCT\n/\n";
|
||||
auto summary = createSummary( input );
|
||||
|
||||
const auto keywords = { "FOPT", "WWCT", "WWCT", "WWCT", "WWCT" };
|
||||
const auto wells = { "PRODUCER", "WX2", "W_1", "W_3" };
|
||||
|
||||
summary.merge( createSummary( "FOPT\n" ) );
|
||||
|
||||
const auto kw_names = sorted_keywords( summary );
|
||||
const auto well_names = sorted_names( summary );
|
||||
|
||||
BOOST_CHECK_EQUAL_COLLECTIONS(
|
||||
keywords.begin(), keywords.end(),
|
||||
kw_names.begin(), kw_names.end() );
|
||||
|
||||
BOOST_CHECK_EQUAL_COLLECTIONS(
|
||||
wells.begin(), wells.end(),
|
||||
well_names.begin(), well_names.end() );
|
||||
}
|
||||
|
||||
constexpr auto ALL_keywords = {
|
||||
|
Loading…
Reference in New Issue
Block a user