mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Merge pull request #5032 from OPM/summary-cache-improvements
Summary cache improvements
This commit is contained in:
commit
ef2d7eca0c
@ -84,5 +84,4 @@ void RicSummaryCurveCreatorDialog::slotDialogFinished()
|
||||
{
|
||||
plotwindow->cleanUpTemporaryWidgets();
|
||||
}
|
||||
RifReaderEclipseSummary::purgeCache();
|
||||
}
|
||||
|
@ -570,14 +570,6 @@ void RifReaderEclipseSummary::markForCachePurge( const RifEclipseSummaryAddress&
|
||||
m_valuesCache->markAddressForPurge( address );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RifReaderEclipseSummary::purgeCache()
|
||||
{
|
||||
ValuesCache::purge();
|
||||
}
|
||||
|
||||
#if 0
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
@ -597,26 +589,17 @@ void RifReaderEclipseSummary::populateVectorFromStringList(stringlist_type* stri
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const std::vector<double> RifReaderEclipseSummary::ValuesCache::EMPTY_VECTOR;
|
||||
std::set<RifReaderEclipseSummary::ValuesCache*> RifReaderEclipseSummary::ValuesCache::m_instances;
|
||||
const std::vector<double> RifReaderEclipseSummary::ValuesCache::EMPTY_VECTOR;
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RifReaderEclipseSummary::ValuesCache::ValuesCache()
|
||||
{
|
||||
// Register instance
|
||||
m_instances.insert( this );
|
||||
}
|
||||
RifReaderEclipseSummary::ValuesCache::ValuesCache() {}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RifReaderEclipseSummary::ValuesCache::~ValuesCache()
|
||||
{
|
||||
// Deregister instance
|
||||
m_instances.erase( this );
|
||||
}
|
||||
RifReaderEclipseSummary::ValuesCache::~ValuesCache() {}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
@ -648,15 +631,6 @@ void RifReaderEclipseSummary::ValuesCache::markAddressForPurge( const RifEclipse
|
||||
m_purgeList.insert( address );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RifReaderEclipseSummary::ValuesCache::purge()
|
||||
{
|
||||
for ( auto instance : m_instances )
|
||||
instance->purgeData();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -84,8 +84,7 @@ public:
|
||||
return m_warnings;
|
||||
}
|
||||
|
||||
void markForCachePurge( const RifEclipseSummaryAddress& address ) override;
|
||||
static void purgeCache();
|
||||
void markForCachePurge( const RifEclipseSummaryAddress& address ) override;
|
||||
|
||||
private:
|
||||
int timeStepCount() const;
|
||||
@ -122,15 +121,12 @@ private:
|
||||
void insertValues( const RifEclipseSummaryAddress& address, const std::vector<double>& values );
|
||||
const std::vector<double>& getValues( const RifEclipseSummaryAddress& address ) const;
|
||||
void markAddressForPurge( const RifEclipseSummaryAddress& address );
|
||||
static void purge();
|
||||
|
||||
private:
|
||||
void purgeData();
|
||||
|
||||
std::map<const RifEclipseSummaryAddress, std::vector<double>> m_cachedValues;
|
||||
std::set<RifEclipseSummaryAddress> m_purgeList;
|
||||
|
||||
static std::set<ValuesCache*> m_instances;
|
||||
};
|
||||
|
||||
std::unique_ptr<ValuesCache> m_valuesCache;
|
||||
|
@ -44,6 +44,8 @@ RimFileSummaryCase::RimFileSummaryCase()
|
||||
CAF_PDM_InitField( &m_includeRestartFiles, "IncludeRestartFiles", false, "Include Restart Files", "", "", "" );
|
||||
|
||||
m_includeRestartFiles.uiCapability()->setUiHidden( true );
|
||||
|
||||
m_summaryFileReader = new RifReaderEclipseSummary;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -83,8 +85,12 @@ void RimFileSummaryCase::updateFilePathsFromProjectPath( const QString& newProje
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimFileSummaryCase::createSummaryReaderInterface()
|
||||
{
|
||||
m_summaryFileReader = RimFileSummaryCase::findRelatedFilesAndCreateReader( this->summaryHeaderFilename(),
|
||||
m_includeRestartFiles );
|
||||
if ( !m_summaryFileReader->open( this->summaryHeaderFilename(), m_includeRestartFiles ) )
|
||||
{
|
||||
RiaLogging::warning( QString( "Failed to open summary file %1" ).arg( this->summaryHeaderFilename() ) );
|
||||
|
||||
m_summaryFileReader = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -99,25 +105,6 @@ void RimFileSummaryCase::createRftReaderInterface()
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RifReaderEclipseSummary* RimFileSummaryCase::findRelatedFilesAndCreateReader( const QString& headerFileName,
|
||||
bool includeRestartFiles )
|
||||
{
|
||||
RifReaderEclipseSummary* summaryFileReader = new RifReaderEclipseSummary;
|
||||
|
||||
if ( !summaryFileReader->open( headerFileName, includeRestartFiles ) )
|
||||
{
|
||||
RiaLogging::warning( QString( "Failed to open summary file %1" ).arg( headerFileName ) );
|
||||
|
||||
delete summaryFileReader;
|
||||
summaryFileReader = nullptr;
|
||||
}
|
||||
|
||||
return summaryFileReader;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -50,9 +50,7 @@ public:
|
||||
|
||||
void setIncludeRestartFiles( bool includeRestartFiles );
|
||||
|
||||
static RifReaderEclipseSummary* findRelatedFilesAndCreateReader( const QString& headerFileName,
|
||||
bool includeRestartFiles );
|
||||
static RifReaderEclipseRft* findRftDataAndCreateReader( const QString& headerFileName );
|
||||
static RifReaderEclipseRft* findRftDataAndCreateReader( const QString& headerFileName );
|
||||
|
||||
private:
|
||||
cvf::ref<RifReaderEclipseSummary> m_summaryFileReader;
|
||||
|
@ -52,6 +52,8 @@ RimGridSummaryCase::RimGridSummaryCase()
|
||||
|
||||
CAF_PDM_InitField( &m_includeRestartFiles, "IncludeRestartFiles", false, "Include Restart Files", "", "", "" );
|
||||
m_includeRestartFiles.uiCapability()->setUiHidden( true );
|
||||
|
||||
m_summaryFileReader = new RifReaderEclipseSummary;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -173,8 +175,10 @@ void RimGridSummaryCase::updateFilePathsFromProjectPath( const QString& newProje
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimGridSummaryCase::createSummaryReaderInterface()
|
||||
{
|
||||
m_summaryFileReader = RimFileSummaryCase::findRelatedFilesAndCreateReader( this->summaryHeaderFilename(),
|
||||
m_includeRestartFiles );
|
||||
if ( !m_summaryFileReader->open( this->summaryHeaderFilename(), m_includeRestartFiles ) )
|
||||
{
|
||||
m_summaryFileReader = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -399,6 +399,7 @@ void RimSummaryCaseMainCollection::loadFileSummaryCaseData( std::vector<RimFileS
|
||||
{
|
||||
// Use openMP when reading file summary case meta data. Avoid using the virtual interface of base class
|
||||
// RimSummaryCase, as it is difficult to make sure all variants of the leaf classes are thread safe.
|
||||
// Only open the summary file reader in parallel loop to reduce risk of multithreading issues
|
||||
|
||||
#pragma omp parallel for
|
||||
for ( int cIdx = 0; cIdx < static_cast<int>( fileSummaryCases.size() ); ++cIdx )
|
||||
@ -407,6 +408,14 @@ void RimSummaryCaseMainCollection::loadFileSummaryCaseData( std::vector<RimFileS
|
||||
if ( fileSummaryCase )
|
||||
{
|
||||
fileSummaryCase->createSummaryReaderInterface();
|
||||
}
|
||||
}
|
||||
|
||||
for ( int cIdx = 0; cIdx < static_cast<int>( fileSummaryCases.size() ); ++cIdx )
|
||||
{
|
||||
RimFileSummaryCase* fileSummaryCase = fileSummaryCases[cIdx];
|
||||
if ( fileSummaryCase )
|
||||
{
|
||||
fileSummaryCase->createRftReaderInterface();
|
||||
addCaseRealizationParametersIfFound( *fileSummaryCase, fileSummaryCase->summaryHeaderFilename() );
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user