mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Reduce memory use for summary address object
* Use one common variable for object name, use three ints * Move enums to separate file * Refactor use of enums * Move implementation to cpp * Refactor includes
This commit is contained in:
@@ -18,6 +18,8 @@
|
||||
|
||||
#include "RiuSummaryQuantityNameInfoProvider.h"
|
||||
|
||||
#include "RifEclipseSummaryAddress.h"
|
||||
|
||||
#include <regex>
|
||||
#include <sstream>
|
||||
|
||||
@@ -62,36 +64,36 @@ RiuSummaryQuantityNameInfoProvider* RiuSummaryQuantityNameInfoProvider::instance
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RifEclipseSummaryAddress::SummaryVarCategory RiuSummaryQuantityNameInfoProvider::identifyCategory( const std::string& vectorName )
|
||||
RifEclipseSummaryAddressDefines::SummaryVarCategory RiuSummaryQuantityNameInfoProvider::identifyCategory( const std::string& vectorName )
|
||||
{
|
||||
// Try to an exact match on the vector name first in the vector table.
|
||||
bool exactMatch = true;
|
||||
auto exactCategory = categoryFromVectorName( vectorName, exactMatch );
|
||||
if ( exactCategory != RifEclipseSummaryAddress::SummaryVarCategory::SUMMARY_INVALID ) return exactCategory;
|
||||
if ( exactCategory != RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_INVALID ) return exactCategory;
|
||||
|
||||
if ( vectorName.size() < 3 || vectorName.size() > 8 ) return RifEclipseSummaryAddress::SummaryVarCategory::SUMMARY_INVALID;
|
||||
if ( vectorName.size() < 3 || vectorName.size() > 8 ) return RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_INVALID;
|
||||
|
||||
// Try to match the base vector name with more heuristics
|
||||
auto strippedQuantityName = RifEclipseSummaryAddress::baseVectorName( vectorName );
|
||||
|
||||
// First, try to lookup vector in vector table
|
||||
auto category = categoryFromVectorName( strippedQuantityName );
|
||||
if ( category != RifEclipseSummaryAddress::SummaryVarCategory::SUMMARY_INVALID ) return category;
|
||||
if ( category != RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_INVALID ) return category;
|
||||
|
||||
switch ( strippedQuantityName[0] )
|
||||
{
|
||||
case 'A':
|
||||
return RifEclipseSummaryAddress::SummaryVarCategory::SUMMARY_AQUIFER;
|
||||
return RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_AQUIFER;
|
||||
case 'B':
|
||||
return RifEclipseSummaryAddress::SummaryVarCategory::SUMMARY_BLOCK;
|
||||
return RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_BLOCK;
|
||||
case 'F':
|
||||
return RifEclipseSummaryAddress::SummaryVarCategory::SUMMARY_FIELD;
|
||||
return RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_FIELD;
|
||||
case 'N':
|
||||
return RifEclipseSummaryAddress::SummaryVarCategory::SUMMARY_NETWORK;
|
||||
return RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_NETWORK;
|
||||
case 'S':
|
||||
return RifEclipseSummaryAddress::SummaryVarCategory::SUMMARY_WELL_SEGMENT;
|
||||
return RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_WELL_SEGMENT;
|
||||
case 'W':
|
||||
return RifEclipseSummaryAddress::SummaryVarCategory::SUMMARY_WELL;
|
||||
return RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_WELL;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -99,26 +101,26 @@ RifEclipseSummaryAddress::SummaryVarCategory RiuSummaryQuantityNameInfoProvider:
|
||||
if ( strippedQuantityName[0] == 'R' )
|
||||
{
|
||||
if ( ParseHelpers::is_region_to_region( strippedQuantityName ) )
|
||||
return RifEclipseSummaryAddress::SummaryVarCategory::SUMMARY_REGION_2_REGION;
|
||||
return RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_REGION_2_REGION;
|
||||
|
||||
return RifEclipseSummaryAddress::SUMMARY_REGION;
|
||||
return RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_REGION;
|
||||
}
|
||||
|
||||
// Then check LGR categories
|
||||
std::string firstTwoLetters = strippedQuantityName.substr( 0, 2 );
|
||||
|
||||
if ( firstTwoLetters == "LB" ) return RifEclipseSummaryAddress::SummaryVarCategory::SUMMARY_BLOCK_LGR;
|
||||
if ( firstTwoLetters == "LC" ) return RifEclipseSummaryAddress::SummaryVarCategory::SUMMARY_WELL_COMPLETION_LGR;
|
||||
if ( firstTwoLetters == "LW" ) return RifEclipseSummaryAddress::SummaryVarCategory::SUMMARY_WELL_LGR;
|
||||
if ( firstTwoLetters == "LB" ) return RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_BLOCK_LGR;
|
||||
if ( firstTwoLetters == "LC" ) return RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_WELL_COMPLETION_LGR;
|
||||
if ( firstTwoLetters == "LW" ) return RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_WELL_LGR;
|
||||
|
||||
return RifEclipseSummaryAddress::SummaryVarCategory::SUMMARY_INVALID;
|
||||
return RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_INVALID;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RifEclipseSummaryAddress::SummaryVarCategory RiuSummaryQuantityNameInfoProvider::categoryFromVectorName( const std::string& vectorName,
|
||||
bool exactMatch ) const
|
||||
RifEclipseSummaryAddressDefines::SummaryVarCategory
|
||||
RiuSummaryQuantityNameInfoProvider::categoryFromVectorName( const std::string& vectorName, bool exactMatch ) const
|
||||
{
|
||||
auto info = quantityInfo( vectorName, exactMatch );
|
||||
|
||||
@@ -183,7 +185,8 @@ RiuSummaryQuantityNameInfoProvider::RiuSummaryQuantityInfo RiuSummaryQuantityNam
|
||||
std::string RiuSummaryQuantityNameInfoProvider::longNameFromVectorName( const std::string& vectorName, bool returnVectorNameIfNotFound ) const
|
||||
{
|
||||
auto info = quantityInfo( vectorName );
|
||||
return info.category != RifEclipseSummaryAddress::SUMMARY_INVALID || !returnVectorNameIfNotFound ? info.longName : vectorName;
|
||||
return info.category != RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_INVALID || !returnVectorNameIfNotFound ? info.longName
|
||||
: vectorName;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -209,7 +212,7 @@ RiuSummaryQuantityNameInfoProvider::RiuSummaryQuantityNameInfoProvider()
|
||||
std::unordered_map<std::string, RiuSummaryQuantityNameInfoProvider::RiuSummaryQuantityInfo>
|
||||
RiuSummaryQuantityNameInfoProvider::createInfoForEclipseKeywords()
|
||||
{
|
||||
using A = RifEclipseSummaryAddress;
|
||||
using A = RifEclipseSummaryAddressDefines::SummaryVarCategory;
|
||||
|
||||
std::unordered_map<std::string, RiuSummaryQuantityInfo> info;
|
||||
|
||||
@@ -2139,7 +2142,7 @@ std::unordered_map<std::string, RiuSummaryQuantityNameInfoProvider::RiuSummaryQu
|
||||
std::unordered_map<std::string, RiuSummaryQuantityNameInfoProvider::RiuSummaryQuantityInfo>
|
||||
RiuSummaryQuantityNameInfoProvider::createInfoFor6xKeywords()
|
||||
{
|
||||
using A = RifEclipseSummaryAddress;
|
||||
using A = RifEclipseSummaryAddressDefines::SummaryVarCategory;
|
||||
|
||||
std::unordered_map<std::string, RiuSummaryQuantityInfo> info;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user