mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#8210 Summary Import : Improve fallback strategy
This commit is contained in:
parent
d21be5823d
commit
defccca4be
@ -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
|
||||
|
||||
|
@ -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<RifOpmHdf5Summary>();
|
||||
|
||||
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<RifOpmCommonEclipseSummary>();
|
||||
|
||||
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<RifOpmHdf5Summary>();
|
||||
|
||||
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<RifOpmCommonEclipseSummary>();
|
||||
|
||||
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<RifEclEclipseSummary>();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user