mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-09 23:16:00 -06:00
#7912 Summary Data Import : Update to ESMRY format
This commit is contained in:
parent
d1463645d0
commit
f699f5f6b8
@ -52,7 +52,7 @@ void RiaPreferencesSummary::SummaryReaderModeType::setUp()
|
||||
{
|
||||
addItem( RiaPreferencesSummary::SummaryReaderMode::LIBECL, "LIBECL", "UNSMRY (libecl)" );
|
||||
addItem( RiaPreferencesSummary::SummaryReaderMode::HDF5_OPM_COMMON, "HDF5_OPM_COMMON", "h5 (HDF5)" );
|
||||
addItem( RiaPreferencesSummary::SummaryReaderMode::OPM_COMMON, "OPM_COMMON", "LODSMRY (opm-common)" );
|
||||
addItem( RiaPreferencesSummary::SummaryReaderMode::OPM_COMMON, "OPM_COMMON", "ESMRY (opm-common)" );
|
||||
setDefault( RiaPreferencesSummary::SummaryReaderMode::HDF5_OPM_COMMON );
|
||||
}
|
||||
} // namespace caf
|
||||
@ -110,23 +110,23 @@ RiaPreferencesSummary::RiaPreferencesSummary()
|
||||
"Semicolon separated list of filters used to create curves in new summary plots",
|
||||
"" );
|
||||
|
||||
CAF_PDM_InitField( &m_createOptimizedSummaryDataFile,
|
||||
CAF_PDM_InitField( &m_createEnhancedSummaryDataFile,
|
||||
"createOptimizedSummaryDataFile",
|
||||
false,
|
||||
"Create LODSMRY Summary Files",
|
||||
"Create ESMRY Summary Files",
|
||||
"",
|
||||
"If not present, create summary file with extension '*.LODSMRY'",
|
||||
"If not present, create summary file with extension '*.ESMRY'",
|
||||
"" );
|
||||
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_createOptimizedSummaryDataFile );
|
||||
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_createEnhancedSummaryDataFile );
|
||||
|
||||
CAF_PDM_InitField( &m_useOptimizedSummaryDataFile,
|
||||
CAF_PDM_InitField( &m_useEnhancedSummaryDataFile,
|
||||
"useOptimizedSummaryDataFile",
|
||||
true,
|
||||
"Use LODSMRY Summary Files",
|
||||
"Use ESMRY Files",
|
||||
"",
|
||||
"If present, import summary files with extension '*.LODSMRY'",
|
||||
"If present, import summary files with extension '*.ESMRY'",
|
||||
"" );
|
||||
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_useOptimizedSummaryDataFile );
|
||||
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_useEnhancedSummaryDataFile );
|
||||
|
||||
CAF_PDM_InitField( &m_createH5SummaryDataFile,
|
||||
"createH5SummaryDataFile",
|
||||
@ -194,17 +194,17 @@ RiaPreferencesSummary::SummaryReaderMode RiaPreferencesSummary::summaryDataReade
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RiaPreferencesSummary::useOptimizedSummaryDataFiles() const
|
||||
bool RiaPreferencesSummary::useEnhancedSummaryDataFiles() const
|
||||
{
|
||||
return m_useOptimizedSummaryDataFile();
|
||||
return m_useEnhancedSummaryDataFile();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RiaPreferencesSummary::createOptimizedSummaryDataFiles() const
|
||||
bool RiaPreferencesSummary::createEnhancedSummaryDataFiles() const
|
||||
{
|
||||
return m_createOptimizedSummaryDataFile();
|
||||
return m_createEnhancedSummaryDataFile();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -341,8 +341,8 @@ void RiaPreferencesSummary::defineUiOrdering( QString uiConfigName, caf::PdmUiOr
|
||||
|
||||
if ( m_summaryReader == SummaryReaderMode::OPM_COMMON )
|
||||
{
|
||||
uiOrdering.add( &m_useOptimizedSummaryDataFile );
|
||||
uiOrdering.add( &m_createOptimizedSummaryDataFile );
|
||||
uiOrdering.add( &m_useEnhancedSummaryDataFile );
|
||||
uiOrdering.add( &m_createEnhancedSummaryDataFile );
|
||||
}
|
||||
else if ( m_summaryReader == SummaryReaderMode::HDF5_OPM_COMMON )
|
||||
{
|
||||
|
@ -60,8 +60,8 @@ public:
|
||||
static RiaPreferencesSummary* current();
|
||||
|
||||
SummaryReaderMode summaryDataReader() const;
|
||||
bool useOptimizedSummaryDataFiles() const;
|
||||
bool createOptimizedSummaryDataFiles() const;
|
||||
bool useEnhancedSummaryDataFiles() const;
|
||||
bool createEnhancedSummaryDataFiles() const;
|
||||
|
||||
bool createH5SummaryDataFiles() const;
|
||||
bool checkH5SummaryDataTimeStamp() const;
|
||||
@ -98,8 +98,8 @@ private:
|
||||
caf::PdmField<bool> m_showSummaryTimeAsLongString;
|
||||
caf::PdmField<bool> m_useMultipleThreadsWhenLoadingSummaryCases;
|
||||
|
||||
caf::PdmField<bool> m_createOptimizedSummaryDataFile;
|
||||
caf::PdmField<bool> m_useOptimizedSummaryDataFile;
|
||||
caf::PdmField<bool> m_createEnhancedSummaryDataFile;
|
||||
caf::PdmField<bool> m_useEnhancedSummaryDataFile;
|
||||
|
||||
caf::PdmField<bool> m_createH5SummaryDataFile;
|
||||
caf::PdmField<bool> m_checkH5FileTimeStamp;
|
||||
|
@ -26,56 +26,55 @@
|
||||
#ifdef USE_OPENMP
|
||||
#include <omp.h>
|
||||
#endif
|
||||
#include "QFileInfo"
|
||||
|
||||
size_t RifOpmCommonEclipseSummary::sm_createdLodFileCount = 0;
|
||||
#include <QFileInfo>
|
||||
|
||||
size_t RifOpmCommonEclipseSummary::sm_createdEsmryFileCount = 0;
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RifOpmCommonEclipseSummary::RifOpmCommonEclipseSummary()
|
||||
: m_useLodsmryFiles( false )
|
||||
, m_createLodsmryFiles( false )
|
||||
: m_useEsmryFiles( false )
|
||||
, m_createEsmryFiles( false )
|
||||
{
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RifOpmCommonEclipseSummary::~RifOpmCommonEclipseSummary()
|
||||
RifOpmCommonEclipseSummary::~RifOpmCommonEclipseSummary() = default;
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RifOpmCommonEclipseSummary::useEnhancedSummaryFiles( bool enable )
|
||||
{
|
||||
m_useEsmryFiles = enable;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RifOpmCommonEclipseSummary::useLodsmaryFiles( bool enable )
|
||||
void RifOpmCommonEclipseSummary::createEnhancedSummaryFiles( bool enable )
|
||||
{
|
||||
m_useLodsmryFiles = enable;
|
||||
m_createEsmryFiles = enable;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RifOpmCommonEclipseSummary::createLodsmaryFiles( bool enable )
|
||||
void RifOpmCommonEclipseSummary::resetEnhancedSummaryFileCount()
|
||||
{
|
||||
m_createLodsmryFiles = enable;
|
||||
sm_createdEsmryFileCount = 0;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RifOpmCommonEclipseSummary::resetLodCount()
|
||||
size_t RifOpmCommonEclipseSummary::numberOfEnhancedSummaryFileCreated()
|
||||
{
|
||||
sm_createdLodFileCount = 0;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
size_t RifOpmCommonEclipseSummary::numberOfLodFilesCreated()
|
||||
{
|
||||
return sm_createdLodFileCount;
|
||||
return sm_createdEsmryFileCount;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -85,9 +84,9 @@ bool RifOpmCommonEclipseSummary::open( const QString& headerFileName,
|
||||
bool includeRestartFiles,
|
||||
RiaThreadSafeLogger* threadSafeLogger )
|
||||
{
|
||||
if ( m_createLodsmryFiles )
|
||||
if ( m_createEsmryFiles )
|
||||
{
|
||||
auto candidateFileName = extendedSummaryFilename( headerFileName );
|
||||
auto candidateFileName = enhancedSummaryFilename( headerFileName );
|
||||
if ( !QFileInfo::exists( candidateFileName ) )
|
||||
{
|
||||
try
|
||||
@ -97,7 +96,7 @@ bool RifOpmCommonEclipseSummary::open( const QString& headerFileName,
|
||||
|
||||
temporarySummaryFile->make_esmry_file();
|
||||
|
||||
RifOpmCommonEclipseSummary::increaseLodFileCount();
|
||||
RifOpmCommonEclipseSummary::increaseEsmryFileCount();
|
||||
}
|
||||
catch ( std::exception& e )
|
||||
{
|
||||
@ -110,9 +109,9 @@ bool RifOpmCommonEclipseSummary::open( const QString& headerFileName,
|
||||
}
|
||||
}
|
||||
|
||||
if ( !openESmryFile( headerFileName, includeRestartFiles, threadSafeLogger ) ) return false;
|
||||
if ( !openFileReader( headerFileName, includeRestartFiles, threadSafeLogger ) ) return false;
|
||||
|
||||
if ( !m_eSmry && !m_exteSmry ) return false;
|
||||
if ( !m_standardReader && !m_enhancedReader ) return false;
|
||||
|
||||
buildMetaData();
|
||||
|
||||
@ -132,19 +131,19 @@ const std::vector<time_t>& RifOpmCommonEclipseSummary::timeSteps( const RifEclip
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RifOpmCommonEclipseSummary::values( const RifEclipseSummaryAddress& resultAddress, std::vector<double>* values ) const
|
||||
{
|
||||
auto it = m_adrToKeyword.find( resultAddress );
|
||||
if ( it != m_adrToKeyword.end() )
|
||||
auto it = m_summaryAddressToKeywordMap.find( resultAddress );
|
||||
if ( it != m_summaryAddressToKeywordMap.end() )
|
||||
{
|
||||
auto keyword = it->second;
|
||||
if ( m_exteSmry )
|
||||
if ( m_enhancedReader )
|
||||
{
|
||||
auto fileValues = m_exteSmry->get( keyword );
|
||||
auto fileValues = m_enhancedReader->get( keyword );
|
||||
values->insert( values->begin(), fileValues.begin(), fileValues.end() );
|
||||
}
|
||||
|
||||
if ( m_eSmry )
|
||||
if ( m_standardReader )
|
||||
{
|
||||
auto fileValues = m_eSmry->get( keyword );
|
||||
auto fileValues = m_standardReader->get( keyword );
|
||||
values->insert( values->begin(), fileValues.begin(), fileValues.end() );
|
||||
}
|
||||
return true;
|
||||
@ -158,17 +157,17 @@ bool RifOpmCommonEclipseSummary::values( const RifEclipseSummaryAddress& resultA
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::string RifOpmCommonEclipseSummary::unitName( const RifEclipseSummaryAddress& resultAddress ) const
|
||||
{
|
||||
auto it = m_adrToKeyword.find( resultAddress );
|
||||
if ( it != m_adrToKeyword.end() )
|
||||
auto it = m_summaryAddressToKeywordMap.find( resultAddress );
|
||||
if ( it != m_summaryAddressToKeywordMap.end() )
|
||||
{
|
||||
auto keyword = it->second;
|
||||
if ( m_exteSmry )
|
||||
if ( m_enhancedReader )
|
||||
{
|
||||
return m_exteSmry->get_unit( keyword );
|
||||
return m_enhancedReader->get_unit( keyword );
|
||||
}
|
||||
if ( m_eSmry )
|
||||
if ( m_standardReader )
|
||||
{
|
||||
return m_eSmry->get_unit( keyword );
|
||||
return m_standardReader->get_unit( keyword );
|
||||
}
|
||||
}
|
||||
|
||||
@ -192,16 +191,16 @@ void RifOpmCommonEclipseSummary::buildMetaData()
|
||||
std::vector<Opm::time_point> dates;
|
||||
std::vector<std::string> keywords;
|
||||
|
||||
if ( m_exteSmry )
|
||||
if ( m_enhancedReader )
|
||||
{
|
||||
dates = m_exteSmry->dates();
|
||||
keywords = m_exteSmry->keywordList();
|
||||
dates = m_enhancedReader->dates();
|
||||
keywords = m_enhancedReader->keywordList();
|
||||
}
|
||||
|
||||
if ( m_eSmry )
|
||||
if ( m_standardReader )
|
||||
{
|
||||
dates = m_eSmry->dates();
|
||||
keywords = m_eSmry->keywordList();
|
||||
dates = m_standardReader->dates();
|
||||
keywords = m_standardReader->keywordList();
|
||||
}
|
||||
|
||||
for ( const auto& d : dates )
|
||||
@ -212,23 +211,24 @@ void RifOpmCommonEclipseSummary::buildMetaData()
|
||||
|
||||
auto [addresses, addressMap] = RifOpmCommonSummaryTools::buildMetaDataKeyword( keywords );
|
||||
|
||||
m_allResultAddresses = addresses;
|
||||
m_adrToKeyword = addressMap;
|
||||
m_allResultAddresses = addresses;
|
||||
m_summaryAddressToKeywordMap = addressMap;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RifOpmCommonEclipseSummary::openESmryFile( const QString& headerFileName,
|
||||
bool includeRestartFiles,
|
||||
RiaThreadSafeLogger* threadSafeLogger )
|
||||
bool RifOpmCommonEclipseSummary::openFileReader( const QString& headerFileName,
|
||||
bool includeRestartFiles,
|
||||
RiaThreadSafeLogger* threadSafeLogger )
|
||||
{
|
||||
if ( m_useLodsmryFiles )
|
||||
if ( m_useEsmryFiles )
|
||||
{
|
||||
try
|
||||
{
|
||||
auto candidateFileName = extendedSummaryFilename( headerFileName );
|
||||
m_exteSmry = std::make_unique<Opm::EclIO::ExtESmry>( candidateFileName.toStdString(), includeRestartFiles );
|
||||
auto candidateFileName = enhancedSummaryFilename( headerFileName );
|
||||
m_enhancedReader =
|
||||
std::make_unique<Opm::EclIO::ExtESmry>( candidateFileName.toStdString(), includeRestartFiles );
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -240,7 +240,7 @@ bool RifOpmCommonEclipseSummary::openESmryFile( const QString& headerFileN
|
||||
|
||||
try
|
||||
{
|
||||
m_eSmry = std::make_unique<Opm::EclIO::ESmry>( headerFileName.toStdString(), includeRestartFiles );
|
||||
m_standardReader = std::make_unique<Opm::EclIO::ESmry>( headerFileName.toStdString(), includeRestartFiles );
|
||||
}
|
||||
catch ( std::exception& e )
|
||||
{
|
||||
@ -257,17 +257,17 @@ bool RifOpmCommonEclipseSummary::openESmryFile( const QString& headerFileN
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RifOpmCommonEclipseSummary::increaseLodFileCount()
|
||||
void RifOpmCommonEclipseSummary::increaseEsmryFileCount()
|
||||
{
|
||||
// This function can be called from a parallel loop, make it thread safe
|
||||
#pragma omp critical
|
||||
sm_createdLodFileCount++;
|
||||
sm_createdEsmryFileCount++;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RifOpmCommonEclipseSummary::extendedSummaryFilename( const QString& headerFileName )
|
||||
QString RifOpmCommonEclipseSummary::enhancedSummaryFilename( const QString& headerFileName )
|
||||
{
|
||||
QString s( headerFileName );
|
||||
return s.replace( ".SMSPEC", ".ESMRY" );
|
||||
|
@ -67,11 +67,11 @@ public:
|
||||
RifOpmCommonEclipseSummary();
|
||||
~RifOpmCommonEclipseSummary() override;
|
||||
|
||||
void useLodsmaryFiles( bool enable );
|
||||
void createLodsmaryFiles( bool enable );
|
||||
void useEnhancedSummaryFiles( bool enable );
|
||||
void createEnhancedSummaryFiles( bool enable );
|
||||
|
||||
static void resetLodCount();
|
||||
static size_t numberOfLodFilesCreated();
|
||||
static void resetEnhancedSummaryFileCount();
|
||||
static size_t numberOfEnhancedSummaryFileCreated();
|
||||
|
||||
bool open( const QString& headerFileName, bool includeRestartFiles, RiaThreadSafeLogger* threadSafeLogger );
|
||||
|
||||
@ -82,21 +82,20 @@ public:
|
||||
|
||||
private:
|
||||
void buildMetaData();
|
||||
bool openESmryFile( const QString& headerFileName, bool includeRestartFiles, RiaThreadSafeLogger* threadSafeLogger );
|
||||
bool openFileReader( const QString& headerFileName, bool includeRestartFiles, RiaThreadSafeLogger* threadSafeLogger );
|
||||
|
||||
static void increaseLodFileCount();
|
||||
static QString extendedSummaryFilename( const QString& headerFileName );
|
||||
static void increaseEsmryFileCount();
|
||||
static QString enhancedSummaryFilename( const QString& headerFileName );
|
||||
|
||||
private:
|
||||
std::unique_ptr<Opm::EclIO::ESmry> m_eSmry;
|
||||
std::unique_ptr<Opm::EclIO::ExtESmry> m_exteSmry;
|
||||
std::unique_ptr<Opm::EclIO::ESmry> m_standardReader;
|
||||
std::unique_ptr<Opm::EclIO::ExtESmry> m_enhancedReader;
|
||||
|
||||
std::vector<std::string> m_eSmryKeywords;
|
||||
std::map<RifEclipseSummaryAddress, std::string> m_adrToKeyword;
|
||||
std::map<RifEclipseSummaryAddress, std::string> m_summaryAddressToKeywordMap;
|
||||
std::vector<time_t> m_timeSteps;
|
||||
|
||||
static size_t sm_createdLodFileCount;
|
||||
static size_t sm_createdEsmryFileCount;
|
||||
|
||||
bool m_useLodsmryFiles;
|
||||
bool m_createLodsmryFiles;
|
||||
bool m_useEsmryFiles;
|
||||
bool m_createEsmryFiles;
|
||||
};
|
||||
|
@ -97,8 +97,8 @@ bool RifReaderEclipseSummary::open( const QString& headerFileName, RiaThreadSafe
|
||||
{
|
||||
auto opmCommonReader = std::make_unique<RifOpmCommonEclipseSummary>();
|
||||
|
||||
opmCommonReader->useLodsmaryFiles( prefSummary->useOptimizedSummaryDataFiles() );
|
||||
opmCommonReader->createLodsmaryFiles( prefSummary->createOptimizedSummaryDataFiles() );
|
||||
opmCommonReader->useEnhancedSummaryFiles( prefSummary->useEnhancedSummaryDataFiles() );
|
||||
opmCommonReader->createEnhancedSummaryFiles( prefSummary->createEnhancedSummaryDataFiles() );
|
||||
isValid = opmCommonReader->open( headerFileName, false, threadSafeLogger );
|
||||
|
||||
if ( isValid )
|
||||
|
@ -484,7 +484,7 @@ void RimSummaryCaseMainCollection::loadFileSummaryCaseData( std::vector<RimFileS
|
||||
|
||||
caf::ProgressInfo progInfo( fileSummaryCases.size(), "Loading Summary Cases" );
|
||||
|
||||
RifOpmCommonEclipseSummary::resetLodCount();
|
||||
RifOpmCommonEclipseSummary::resetEnhancedSummaryFileCount();
|
||||
|
||||
RiaThreadSafeLogger threadSafeLogger;
|
||||
|
||||
@ -508,11 +508,11 @@ void RimSummaryCaseMainCollection::loadFileSummaryCaseData( std::vector<RimFileS
|
||||
RiaLogging::info( txt );
|
||||
}
|
||||
|
||||
auto numberOfLodFilesCreated = RifOpmCommonEclipseSummary::numberOfLodFilesCreated();
|
||||
if ( numberOfLodFilesCreated > 0 )
|
||||
auto numberOfEsmryFilesCreated = RifOpmCommonEclipseSummary::numberOfEnhancedSummaryFileCreated();
|
||||
if ( numberOfEsmryFilesCreated > 0 )
|
||||
{
|
||||
RiaLogging::info( QString( "Optimized Summary Reader : Converted and created %1 '*.LODSMRY' files on disk." )
|
||||
.arg( numberOfLodFilesCreated ) );
|
||||
RiaLogging::info(
|
||||
QString( "Summary Files : Converted and created %1 '*.ESMRY' files on disk." ).arg( numberOfEsmryFilesCreated ) );
|
||||
}
|
||||
|
||||
// This loop is not thread safe, use serial loop
|
||||
|
Loading…
Reference in New Issue
Block a user