From defccca4be8788fb99c379296a2ec53cdbc2ef39 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Thu, 28 Oct 2021 10:11:51 +0200 Subject: [PATCH] #8210 Summary Import : Improve fallback strategy --- .../Application/RiaPreferencesSummary.cpp | 2 +- .../FileInterface/RifReaderEclipseSummary.cpp | 105 ++++++++++++------ 2 files changed, 71 insertions(+), 36 deletions(-) diff --git a/ApplicationLibCode/Application/RiaPreferencesSummary.cpp b/ApplicationLibCode/Application/RiaPreferencesSummary.cpp index 1d8390eea9..9e5294e78c 100644 --- a/ApplicationLibCode/Application/RiaPreferencesSummary.cpp +++ b/ApplicationLibCode/Application/RiaPreferencesSummary.cpp @@ -53,7 +53,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", "ESMRY (opm-common)" ); - setDefault( RiaPreferencesSummary::SummaryReaderMode::HDF5_OPM_COMMON ); + setDefault( RiaPreferencesSummary::SummaryReaderMode::OPM_COMMON ); } } // namespace caf diff --git a/ApplicationLibCode/FileInterface/RifReaderEclipseSummary.cpp b/ApplicationLibCode/FileInterface/RifReaderEclipseSummary.cpp index e5d472d1e0..c4cdf56630 100644 --- a/ApplicationLibCode/FileInterface/RifReaderEclipseSummary.cpp +++ b/ApplicationLibCode/FileInterface/RifReaderEclipseSummary.cpp @@ -60,54 +60,89 @@ bool RifReaderEclipseSummary::open( const QString& headerFileName, RiaThreadSafe { bool isValid = false; - // Try to create readers. If HDF5 or Opm readers fails to create, use libecl reader + // Create reader as specified by the user using the following fallback strategy + // + // ESMRY + // - if h5 file is present on disk + // - use h5 reader + // - else + // - create ESMRY file if defined in preference + // - use ESMRY reader + // - if no reader has been created, fallback to libecl + // + // H5 + // - if h5 file is present on disk + // - use h5 reader + // - else + // - create h5 file if defined in preference + // - use h5 reader + // - if no reader has been created, fallback to libecl + // + // For all import modes, use libecl to read data if no data is imported with ESMRY or h5 RiaPreferencesSummary* prefSummary = RiaPreferencesSummary::current(); - if ( prefSummary->summaryDataReader() == RiaPreferencesSummary::SummaryReaderMode::HDF5_OPM_COMMON ) + if ( prefSummary->summaryDataReader() == RiaPreferencesSummary::SummaryReaderMode::HDF5_OPM_COMMON || + prefSummary->summaryDataReader() == RiaPreferencesSummary::SummaryReaderMode::OPM_COMMON ) { -#ifdef USE_HDF5 - if ( prefSummary->createH5SummaryDataFiles() ) + bool h5FileFound = false; { QFileInfo fi( headerFileName ); - QString h5FilenameCandidate = fi.absolutePath() + "/" + fi.baseName() + ".h5"; + QString basenameNoExtension = fi.absolutePath() + "/" + fi.baseName(); - size_t createdH5FileCount = 0; - RifHdf5SummaryExporter::ensureHdf5FileIsCreated( headerFileName.toStdString(), - h5FilenameCandidate.toStdString(), - createdH5FileCount ); + QString h5FileName = basenameNoExtension + ".h5"; - if ( createdH5FileCount > 0 ) + h5FileFound = QFile::exists( h5FileName ); + } + + if ( h5FileFound || + ( prefSummary->summaryDataReader() == RiaPreferencesSummary::SummaryReaderMode::HDF5_OPM_COMMON ) ) + { +#ifdef USE_HDF5 + if ( prefSummary->createH5SummaryDataFiles() ) { - QString txt = QString( "Created %1 " ).arg( h5FilenameCandidate ); - if ( threadSafeLogger ) threadSafeLogger->info( txt ); + QFileInfo fi( headerFileName ); + QString h5FilenameCandidate = fi.absolutePath() + "/" + fi.baseName() + ".h5"; + + size_t createdH5FileCount = 0; + RifHdf5SummaryExporter::ensureHdf5FileIsCreated( headerFileName.toStdString(), + h5FilenameCandidate.toStdString(), + createdH5FileCount ); + + if ( createdH5FileCount > 0 ) + { + QString txt = QString( "Created %1 " ).arg( h5FilenameCandidate ); + if ( threadSafeLogger ) threadSafeLogger->info( txt ); + } + } + + auto hdfReader = std::make_unique(); + + isValid = hdfReader->open( headerFileName, false, threadSafeLogger ); + if ( isValid ) + { + m_summaryReader = std::move( hdfReader ); + } +#endif + } + + if ( !isValid && prefSummary->summaryDataReader() == RiaPreferencesSummary::SummaryReaderMode::OPM_COMMON ) + { + auto opmCommonReader = std::make_unique(); + + opmCommonReader->useEnhancedSummaryFiles( prefSummary->useEnhancedSummaryDataFiles() ); + opmCommonReader->createEnhancedSummaryFiles( prefSummary->createEnhancedSummaryDataFiles() ); + isValid = opmCommonReader->open( headerFileName, false, threadSafeLogger ); + + if ( isValid ) + { + m_summaryReader = std::move( opmCommonReader ); } } - - auto hdfReader = std::make_unique(); - - isValid = hdfReader->open( headerFileName, false, threadSafeLogger ); - if ( isValid ) - { - m_summaryReader = std::move( hdfReader ); - } -#endif - } - else if ( prefSummary->summaryDataReader() == RiaPreferencesSummary::SummaryReaderMode::OPM_COMMON ) - { - auto opmCommonReader = std::make_unique(); - - opmCommonReader->useEnhancedSummaryFiles( prefSummary->useEnhancedSummaryDataFiles() ); - opmCommonReader->createEnhancedSummaryFiles( prefSummary->createEnhancedSummaryDataFiles() ); - isValid = opmCommonReader->open( headerFileName, false, threadSafeLogger ); - - if ( isValid ) - { - m_summaryReader = std::move( opmCommonReader ); - } } - if ( !isValid || prefSummary->summaryDataReader() == RiaPreferencesSummary::SummaryReaderMode::LIBECL ) + // If no summary reader has been created, always try to read data using libecl + if ( !isValid ) { auto libeclReader = std::make_unique();