Skip to content

Commit

Permalink
Reduce memory use for summary address object
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
magnesj authored Aug 21, 2023
1 parent 1b886c1 commit 96b3bef
Show file tree
Hide file tree
Showing 70 changed files with 1,253 additions and 1,039 deletions.
38 changes: 19 additions & 19 deletions ApplicationLibCode/Application/Tools/RiaOptionItemFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,65 +55,65 @@ 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

QString iconText;

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;
}

Expand Down
4 changes: 2 additions & 2 deletions ApplicationLibCode/Application/Tools/RiaOptionItemFactory.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

#pragma once

#include "RifEclipseSummaryAddress.h"
#include "RifEclipseSummaryAddressDefines.h"

#include "cafPdmUiItem.h"

Expand All @@ -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 );
};
49 changes: 26 additions & 23 deletions ApplicationLibCode/Application/Tools/RiaSummaryAddressAnalyzer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@

#include <QString>

using namespace RifEclipseSummaryAddressDefines;

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
Expand Down Expand Up @@ -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 );
}
Expand Down Expand Up @@ -236,68 +238,68 @@ 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 )
{
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 )
{
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 )
{
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 )
{
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 )
{
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 )
{
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 )
{
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 )
Expand All @@ -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;

Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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 )
{
Expand Down Expand Up @@ -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 );
Expand Down
19 changes: 10 additions & 9 deletions ApplicationLibCode/Application/Tools/RiaSummaryAddressAnalyzer.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,17 +60,18 @@ class RiaSummaryAddressAnalyzer
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;
Expand All @@ -80,8 +81,8 @@ class RiaSummaryAddressAnalyzer

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 );

Expand All @@ -102,5 +103,5 @@ class RiaSummaryAddressAnalyzer
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;
};
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ QString RicSaveMultiPlotTemplateFeature::createTextFromObject( RimSummaryMultiPl
}

replaceStrings( sourceStrings,
dummy.keywordForCategory( RifEclipseSummaryAddress::SUMMARY_WELL ),
dummy.keywordForCategory( RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_WELL ),
RicSummaryPlotTemplateTools::placeholderTextForWell(),
objectAsText );
}
Expand All @@ -233,7 +233,7 @@ QString RicSaveMultiPlotTemplateFeature::createTextFromObject( RimSummaryMultiPl
}

replaceStrings( sourceStrings,
dummy.keywordForCategory( RifEclipseSummaryAddress::SUMMARY_GROUP ),
dummy.keywordForCategory( RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_GROUP ),
RicSummaryPlotTemplateTools::placeholderTextForGroup(),
objectAsText );
}
Expand All @@ -251,8 +251,8 @@ QString RicSaveMultiPlotTemplateFeature::createTextFromObject( RimSummaryMultiPl
// Encode placeholder index. Use negative values below -1 to represent a placeholder index
int index = -( i + 2 );

QString fieldKeyword = dummy.keywordForCategory( RifEclipseSummaryAddress::SUMMARY_REGION );
QString sourceString = QString( "<%1>%2</%1>" ).arg( fieldKeyword ).arg( regionNumbers[i] );
QString fieldKeyword = dummy.keywordForCategory( RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_REGION );
QString sourceString = QString( "<%1>%2</%1>" ).arg( fieldKeyword ).arg( regionNumbers[i] );
QString replacementTextWithIndex = QString( "<%1>%2</%1>" ).arg( fieldKeyword ).arg( index );

objectAsText.replace( sourceString, replacementTextWithIndex );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

#include "cafCmdFeature.h"

#include "RifEclipseSummaryAddress.h"
#include "RifEclipseSummaryAddressDefines.h"

#include <set>

Expand All @@ -37,7 +37,8 @@ class RicNewSummaryTableFeature : public caf::CmdFeature
void setupActionLook( QAction* actionToSetup ) override;

private:
const std::set<RifEclipseSummaryAddress::SummaryVarCategory> m_enabledCategories = { RifEclipseSummaryAddress::SUMMARY_WELL,
RifEclipseSummaryAddress::SUMMARY_REGION,
RifEclipseSummaryAddress::SUMMARY_GROUP };
const std::set<RifEclipseSummaryAddressDefines::SummaryVarCategory> m_enabledCategories =
{ RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_WELL,
RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_REGION,
RifEclipseSummaryAddressDefines::SummaryVarCategory::SUMMARY_GROUP };
};
Loading

0 comments on commit 96b3bef

Please sign in to comment.