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:
Magne Sjaastad
2023-08-21 07:12:08 +02:00
committed by GitHub
parent 1b886c1a1e
commit 96b3bef878
70 changed files with 1252 additions and 1038 deletions

View File

@@ -55,9 +55,9 @@ void RiaOptionItemFactory::appendOptionItemsForEnsembleCurveSets( QList<caf::Pdm
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmOptionItemInfo RiaOptionItemFactory::optionItemFromSummaryType( RifEclipseSummaryAddress::SummaryVarCategory summaryType )
caf::PdmOptionItemInfo RiaOptionItemFactory::optionItemFromSummaryType( RifEclipseSummaryAddressDefines::SummaryVarCategory summaryType )
{
auto uiText = caf::AppEnum<RifEclipseSummaryAddress::SummaryVarCategory>::uiText( summaryType );
auto uiText = caf::AppEnum<RifEclipseSummaryAddressDefines::SummaryVarCategory>::uiText( summaryType );
// Use icons from https://github.com/equinor/webviz-subsurface-components
@@ -65,55 +65,55 @@ caf::PdmOptionItemInfo RiaOptionItemFactory::optionItemFromSummaryType( RifEclip
switch ( summaryType )
{
case RifEclipseSummaryAddress::SUMMARY_INVALID:
case RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_INVALID:
iconText = ":/summary/components/images/invalid.svg";
break;
case RifEclipseSummaryAddress::SUMMARY_FIELD:
case RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_FIELD:
iconText = ":/summary/components/images/field.svg";
break;
case RifEclipseSummaryAddress::SUMMARY_AQUIFER:
case RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_AQUIFER:
iconText = ":/summary/components/images/aquifer.svg";
break;
case RifEclipseSummaryAddress::SUMMARY_NETWORK:
case RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_NETWORK:
iconText = ":/summary/components/images/network.svg";
break;
case RifEclipseSummaryAddress::SUMMARY_MISC:
case RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_MISC:
iconText = ":/summary/components/images/misc.svg";
break;
case RifEclipseSummaryAddress::SUMMARY_REGION:
case RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_REGION:
iconText = ":/summary/components/images/region.svg";
break;
case RifEclipseSummaryAddress::SUMMARY_REGION_2_REGION:
case RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_REGION_2_REGION:
iconText = ":/summary/components/images/region-region.svg";
break;
case RifEclipseSummaryAddress::SUMMARY_GROUP:
case RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_GROUP:
iconText = ":/summary/components/images/group.svg";
break;
case RifEclipseSummaryAddress::SUMMARY_WELL:
case RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_WELL:
iconText = ":/summary/components/images/well.svg";
break;
case RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION:
case RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_WELL_COMPLETION:
iconText = ":/summary/components/images/well-completion.svg";
break;
case RifEclipseSummaryAddress::SUMMARY_WELL_LGR:
case RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_WELL_LGR:
iconText = ":/summary/components/images/well.svg";
break;
case RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION_LGR:
case RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_WELL_COMPLETION_LGR:
iconText = ":/summary/components/images/well-completion.svg";
break;
case RifEclipseSummaryAddress::SUMMARY_WELL_SEGMENT:
case RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_WELL_SEGMENT:
iconText = ":/summary/components/images/segment.svg";
break;
case RifEclipseSummaryAddress::SUMMARY_BLOCK:
case RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_BLOCK:
iconText = ":/summary/components/images/block.svg";
break;
case RifEclipseSummaryAddress::SUMMARY_BLOCK_LGR:
case RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_BLOCK_LGR:
iconText = ":/summary/components/images/block.svg";
break;
case RifEclipseSummaryAddress::SUMMARY_IMPORTED:
case RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_IMPORTED:
iconText = ":/summary/components/images/others.svg";
break;
case RifEclipseSummaryAddress::SUMMARY_ENSEMBLE_STATISTICS:
case RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_ENSEMBLE_STATISTICS:
break;
}

View File

@@ -18,7 +18,7 @@
#pragma once
#include "RifEclipseSummaryAddress.h"
#include "RifEclipseSummaryAddressDefines.h"
#include "cafPdmUiItem.h"
@@ -31,5 +31,5 @@ class RiaOptionItemFactory
public:
static void appendOptionItemFromViewNameAndCaseName( Rim3dView* view, QList<caf::PdmOptionItemInfo>* optionItems );
static void appendOptionItemsForEnsembleCurveSets( QList<caf::PdmOptionItemInfo>* options );
static caf::PdmOptionItemInfo optionItemFromSummaryType( RifEclipseSummaryAddress::SummaryVarCategory summaryType );
static caf::PdmOptionItemInfo optionItemFromSummaryType( RifEclipseSummaryAddressDefines::SummaryVarCategory summaryType );
};

View File

@@ -26,6 +26,8 @@
#include <QString>
using namespace RifEclipseSummaryAddressDefines;
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -203,7 +205,7 @@ std::set<int> RiaSummaryAddressAnalyzer::aquifers() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::set<RifEclipseSummaryAddress::SummaryVarCategory> RiaSummaryAddressAnalyzer::categories() const
std::set<RifEclipseSummaryAddressDefines::SummaryVarCategory> RiaSummaryAddressAnalyzer::categories() const
{
return keysInMap( m_categories );
}
@@ -236,12 +238,12 @@ std::vector<std::vector<RifEclipseSummaryAddress>> RiaSummaryAddressAnalyzer::ad
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<QString> RiaSummaryAddressAnalyzer::identifierTexts( RifEclipseSummaryAddress::SummaryVarCategory category,
const std::string& secondaryIdentifier ) const
std::vector<QString> RiaSummaryAddressAnalyzer::identifierTexts( RifEclipseSummaryAddressDefines::SummaryVarCategory category,
const std::string& secondaryIdentifier ) const
{
std::vector<QString> identifierStrings;
if ( category == RifEclipseSummaryAddress::SUMMARY_REGION )
if ( category == SummaryVarCategory::SUMMARY_REGION )
{
auto keys = keysInMap( m_regionNumbers );
for ( const auto& key : keys )
@@ -249,7 +251,7 @@ std::vector<QString> RiaSummaryAddressAnalyzer::identifierTexts( RifEclipseSumma
identifierStrings.push_back( QString::number( key ) );
}
}
else if ( category == RifEclipseSummaryAddress::SUMMARY_WELL )
else if ( category == SummaryVarCategory::SUMMARY_WELL )
{
auto keys = keysInMap( m_wellNames );
for ( const auto& key : keys )
@@ -257,7 +259,7 @@ std::vector<QString> RiaSummaryAddressAnalyzer::identifierTexts( RifEclipseSumma
identifierStrings.push_back( QString::fromStdString( key ) );
}
}
else if ( category == RifEclipseSummaryAddress::SUMMARY_GROUP )
else if ( category == SummaryVarCategory::SUMMARY_GROUP )
{
auto keys = keysInMap( m_groupNames );
for ( const auto& key : keys )
@@ -265,7 +267,7 @@ std::vector<QString> RiaSummaryAddressAnalyzer::identifierTexts( RifEclipseSumma
identifierStrings.push_back( QString::fromStdString( key ) );
}
}
else if ( category == RifEclipseSummaryAddress::SUMMARY_NETWORK )
else if ( category == SummaryVarCategory::SUMMARY_NETWORK )
{
auto keys = keysInMap( m_networkNames );
for ( const auto& key : keys )
@@ -273,7 +275,7 @@ std::vector<QString> RiaSummaryAddressAnalyzer::identifierTexts( RifEclipseSumma
identifierStrings.push_back( QString::fromStdString( key ) );
}
}
else if ( category == RifEclipseSummaryAddress::SUMMARY_BLOCK )
else if ( category == SummaryVarCategory::SUMMARY_BLOCK )
{
auto keys = keysInMap( m_blocks );
for ( const auto& key : keys )
@@ -281,7 +283,7 @@ std::vector<QString> RiaSummaryAddressAnalyzer::identifierTexts( RifEclipseSumma
identifierStrings.push_back( QString::fromStdString( key ) );
}
}
else if ( category == RifEclipseSummaryAddress::SUMMARY_WELL_SEGMENT )
else if ( category == SummaryVarCategory::SUMMARY_WELL_SEGMENT )
{
auto segmentNumbers = wellSegmentNumbers( secondaryIdentifier );
for ( const auto& segment : segmentNumbers )
@@ -289,7 +291,7 @@ std::vector<QString> RiaSummaryAddressAnalyzer::identifierTexts( RifEclipseSumma
identifierStrings.push_back( QString::number( segment ) );
}
}
else if ( category == RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION )
else if ( category == SummaryVarCategory::SUMMARY_WELL_COMPLETION )
{
auto connections = wellCompletions( secondaryIdentifier );
for ( const auto& conn : connections )
@@ -297,7 +299,7 @@ std::vector<QString> RiaSummaryAddressAnalyzer::identifierTexts( RifEclipseSumma
identifierStrings.push_back( QString::fromStdString( conn ) );
}
}
else if ( category == RifEclipseSummaryAddress::SUMMARY_AQUIFER )
else if ( category == SummaryVarCategory::SUMMARY_AQUIFER )
{
auto keys = keysInMap( m_aquifers );
for ( const auto& key : keys )
@@ -312,8 +314,9 @@ std::vector<QString> RiaSummaryAddressAnalyzer::identifierTexts( RifEclipseSumma
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RifEclipseSummaryAddress> RiaSummaryAddressAnalyzer::addressesForCategory( const std::set<RifEclipseSummaryAddress>& addresses,
RifEclipseSummaryAddress::SummaryVarCategory category )
std::vector<RifEclipseSummaryAddress>
RiaSummaryAddressAnalyzer::addressesForCategory( const std::set<RifEclipseSummaryAddress>& addresses,
RifEclipseSummaryAddressDefines::SummaryVarCategory category )
{
std::vector<RifEclipseSummaryAddress> filteredAddresses;
@@ -347,7 +350,7 @@ std::string RiaSummaryAddressAnalyzer::correspondingHistorySummaryCurveName( con
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::set<std::string> RiaSummaryAddressAnalyzer::vectorNamesForCategory( RifEclipseSummaryAddress::SummaryVarCategory category )
std::set<std::string> RiaSummaryAddressAnalyzer::vectorNamesForCategory( RifEclipseSummaryAddressDefines::SummaryVarCategory category )
{
auto it = m_categories.find( category );
if ( it != m_categories.end() ) return it->second;
@@ -454,32 +457,32 @@ void RiaSummaryAddressAnalyzer::analyzeSingleAddress( const RifEclipseSummaryAdd
m_regionNumbers.insert( { address.regionNumber(), address } );
}
if ( address.category() == RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION )
if ( address.category() == SummaryVarCategory::SUMMARY_WELL_COMPLETION )
{
auto wellNameAndCompletion = std::make_pair( wellName, address.blockAsString() );
m_wellCompletions.insert( wellNameAndCompletion );
}
else if ( address.category() == RifEclipseSummaryAddress::SUMMARY_WELL_SEGMENT )
else if ( address.category() == SummaryVarCategory::SUMMARY_WELL_SEGMENT )
{
auto wellNameAndSegment = std::make_pair( wellName, address.wellSegmentNumber() );
m_wellSegmentNumbers.insert( wellNameAndSegment );
}
else if ( address.category() == RifEclipseSummaryAddress::SUMMARY_BLOCK )
else if ( address.category() == SummaryVarCategory::SUMMARY_BLOCK )
{
auto text = address.blockAsString();
m_blocks.insert( { text, address } );
}
else if ( address.category() == RifEclipseSummaryAddress::SUMMARY_AQUIFER )
else if ( address.category() == SummaryVarCategory::SUMMARY_AQUIFER )
{
m_aquifers.insert( { address.aquiferNumber(), address } );
}
else if ( address.category() == RifEclipseSummaryAddress::SUMMARY_FIELD || address.category() == RifEclipseSummaryAddress::SUMMARY_MISC )
else if ( address.category() == SummaryVarCategory::SUMMARY_FIELD || address.category() == SummaryVarCategory::SUMMARY_MISC )
{
m_otherCategory.push_back( address );
}
if ( address.category() != RifEclipseSummaryAddress::SUMMARY_INVALID )
if ( address.category() != SummaryVarCategory::SUMMARY_INVALID )
{
if ( m_categories.count( address.category() ) == 0 )
{
@@ -519,10 +522,10 @@ std::set<int> RiaSummaryAddressAnalyzer::keysInMap( const std::multimap<int, Rif
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::set<RifEclipseSummaryAddress::SummaryVarCategory>
RiaSummaryAddressAnalyzer::keysInMap( const std::map<RifEclipseSummaryAddress::SummaryVarCategory, std::set<std::string>>& map )
std::set<RifEclipseSummaryAddressDefines::SummaryVarCategory>
RiaSummaryAddressAnalyzer::keysInMap( const std::map<RifEclipseSummaryAddressDefines::SummaryVarCategory, std::set<std::string>>& map )
{
std::set<RifEclipseSummaryAddress::SummaryVarCategory> keys;
std::set<RifEclipseSummaryAddressDefines::SummaryVarCategory> keys;
for ( const auto& [key, value] : map )
{
keys.insert( key );

View File

@@ -60,17 +60,18 @@ public:
std::set<std::string> blocks() const;
std::set<int> aquifers() const;
std::set<RifEclipseSummaryAddress::SummaryVarCategory> categories() const;
std::vector<std::vector<RifEclipseSummaryAddress>> addressesGroupedByObject() const;
std::set<RifEclipseSummaryAddressDefines::SummaryVarCategory> categories() const;
std::vector<std::vector<RifEclipseSummaryAddress>> addressesGroupedByObject() const;
std::vector<QString> identifierTexts( RifEclipseSummaryAddress::SummaryVarCategory category, const std::string& secondaryIdentifier ) const;
std::vector<QString> identifierTexts( RifEclipseSummaryAddressDefines::SummaryVarCategory category,
const std::string& secondaryIdentifier ) const;
static std::vector<RifEclipseSummaryAddress> addressesForCategory( const std::set<RifEclipseSummaryAddress>& addresses,
RifEclipseSummaryAddress::SummaryVarCategory category );
static std::vector<RifEclipseSummaryAddress> addressesForCategory( const std::set<RifEclipseSummaryAddress>& addresses,
RifEclipseSummaryAddressDefines::SummaryVarCategory category );
static std::string correspondingHistorySummaryCurveName( const std::string& curveName );
std::set<std::string> vectorNamesForCategory( RifEclipseSummaryAddress::SummaryVarCategory category );
std::set<std::string> vectorNamesForCategory( RifEclipseSummaryAddressDefines::SummaryVarCategory category );
private:
void assignCategoryToQuantities() const;
@@ -80,8 +81,8 @@ private:
static std::set<std::string> keysInMap( const std::multimap<std::string, RifEclipseSummaryAddress>& map );
static std::set<int> keysInMap( const std::multimap<int, RifEclipseSummaryAddress>& map );
static std::set<RifEclipseSummaryAddress::SummaryVarCategory>
keysInMap( const std::map<RifEclipseSummaryAddress::SummaryVarCategory, std::set<std::string>>& map );
static std::set<RifEclipseSummaryAddressDefines::SummaryVarCategory>
keysInMap( const std::map<RifEclipseSummaryAddressDefines::SummaryVarCategory, std::set<std::string>>& map );
static std::vector<std::vector<RifEclipseSummaryAddress>> valuesInMap( const std::multimap<std::string, RifEclipseSummaryAddress>& map );
@@ -102,5 +103,5 @@ private:
std::multimap<std::string, RifEclipseSummaryAddress> m_blocks;
std::multimap<int, RifEclipseSummaryAddress> m_aquifers;
std::map<RifEclipseSummaryAddress::SummaryVarCategory, std::set<std::string>> m_categories;
std::map<RifEclipseSummaryAddressDefines::SummaryVarCategory, std::set<std::string>> m_categories;
};