Merge pull request #2469 from atgeirr/optimize-for-large-nnc-case
Optimize further for large NNC case
This commit is contained in:
commit
dc207ae8c5
@ -34,7 +34,7 @@ namespace Opm {
|
||||
typedef std::vector< DeckItem >::const_iterator const_iterator;
|
||||
|
||||
DeckRecord() = default;
|
||||
DeckRecord( std::vector< DeckItem >&& );
|
||||
DeckRecord( std::vector< DeckItem >&& items, const bool check_for_duplicate_names = true );
|
||||
|
||||
static DeckRecord serializeObject();
|
||||
|
||||
|
@ -31,26 +31,28 @@
|
||||
namespace Opm {
|
||||
|
||||
|
||||
DeckRecord::DeckRecord( std::vector< DeckItem >&& items ) :
|
||||
DeckRecord::DeckRecord( std::vector< DeckItem >&& items, const bool check_for_duplicate_names ) :
|
||||
m_items( std::move( items ) ) {
|
||||
|
||||
std::unordered_set< std::string > names;
|
||||
for( const auto& item : this->m_items )
|
||||
names.insert( item.name() );
|
||||
if (check_for_duplicate_names) {
|
||||
std::unordered_set< std::string > names;
|
||||
for( const auto& item : this->m_items )
|
||||
names.insert( item.name() );
|
||||
|
||||
if( names.size() == this->m_items.size() )
|
||||
return;
|
||||
if( names.size() == this->m_items.size() )
|
||||
return;
|
||||
|
||||
names.clear();
|
||||
std::string msg = "Duplicate item names in DeckRecord:";
|
||||
for( const auto& item : this->m_items ) {
|
||||
if( names.count( item.name() ) != 0 )
|
||||
msg += std::string( " " ) += item.name();
|
||||
names.clear();
|
||||
std::string msg = "Duplicate item names in DeckRecord:";
|
||||
for( const auto& item : this->m_items ) {
|
||||
if( names.count( item.name() ) != 0 )
|
||||
msg += std::string( " " ) += item.name();
|
||||
|
||||
names.insert( item.name() );
|
||||
names.insert( item.name() );
|
||||
}
|
||||
|
||||
throw std::invalid_argument( msg );
|
||||
}
|
||||
|
||||
throw std::invalid_argument( msg );
|
||||
}
|
||||
|
||||
DeckRecord DeckRecord::serializeObject()
|
||||
|
@ -123,7 +123,7 @@ namespace {
|
||||
|
||||
DeckRecord ParserRecord::parse(const ParseContext& parseContext , ErrorGuard& errors , RawRecord& rawRecord, UnitSystem& active_unitsystem, UnitSystem& default_unitsystem, const KeywordLocation& location) const {
|
||||
std::vector< DeckItem > items;
|
||||
items.reserve( this->size() + 20 );
|
||||
items.reserve( this->size() );
|
||||
for( const auto& parserItem : *this )
|
||||
items.emplace_back( parserItem.scan( rawRecord, active_unitsystem, default_unitsystem ) );
|
||||
|
||||
@ -134,7 +134,7 @@ namespace {
|
||||
parseContext.handleError(ParseContext::PARSE_EXTRA_DATA , msg_format, location, errors);
|
||||
}
|
||||
|
||||
return { std::move( items ) };
|
||||
return { std::move( items ), false };
|
||||
}
|
||||
|
||||
bool ParserRecord::equal(const ParserRecord& other) const {
|
||||
|
Loading…
Reference in New Issue
Block a user