Minor HDF adjustments (#7577)

* #7575 Summary HDF : Do not import summary if no UNSRMY file is found
* #7575 Summary HDF : Add optional check on time stamp of h5 file
* Use std::filesystem to check file access
* Do not keep h5 file open
This commit is contained in:
Magne Sjaastad
2021-04-16 10:52:30 +02:00
committed by GitHub
parent a44378e2f5
commit 52799e8b4c
15 changed files with 353 additions and 361 deletions

View File

@@ -106,6 +106,25 @@ bool RiaEclipseFileNameTools::isSummarySpecFile( const QString& fileName )
return hasMatchingSuffix( fileName, EclipseFileType::ECLIPSE_SMSPEC );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RiaEclipseFileNameTools::isSummaryDataFilePresent( const QString& smspecFileName )
{
QFileInfo fi( smspecFileName );
{
QString candidateFileName = fi.absolutePath() + '/' + fi.baseName() + ".UNSMRY";
if ( QFile::exists( candidateFileName ) ) return true;
}
{
QString candidateFileName = fi.absolutePath() + '/' + fi.baseName() + ".FUNSMRY";
if ( QFile::exists( candidateFileName ) ) return true;
}
return false;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -52,6 +52,7 @@ public:
static bool isProjectFile( const QString& fileName );
static bool isGridFile( const QString& fileName );
static bool isSummarySpecFile( const QString& fileName );
static bool isSummaryDataFilePresent( const QString& smspecFileName );
private:
QString relatedFilePath( EclipseFileType fileType ) const;

View File

@@ -235,51 +235,6 @@ RiaPreferences::RiaPreferences()
CAF_PDM_InitField( &loadAndShowSoil, "loadAndShowSoil", true, "Load and Show SOIL", "", "", "" );
loadAndShowSoil.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
/*
CAF_PDM_InitFieldNoDefault( &summaryRestartFilesShowImportDialog,
"summaryRestartFilesShowImportDialog",
"Show Import Dialog",
"",
"",
"" );
CAF_PDM_InitField( &summaryImportMode,
"summaryImportMode",
SummaryRestartFilesImportModeType( RiaPreferences::SummaryRestartFilesImportMode::IMPORT ),
"Default Summary Import Option",
"",
"",
"" );
CAF_PDM_InitField( &gridImportMode,
"gridImportMode",
SummaryRestartFilesImportModeType( RiaPreferences::SummaryRestartFilesImportMode::NOT_IMPORT
), "Default Grid Import Option",
"",
"",
"" );
CAF_PDM_InitField( &summaryEnsembleImportMode,
"summaryEnsembleImportMode",
SummaryRestartFilesImportModeType( RiaPreferences::SummaryRestartFilesImportMode::IMPORT ),
"Default Ensemble Summary Import Option",
"",
"",
"" );
CAF_PDM_InitField( &defaultSummaryHistoryCurveStyle,
"defaultSummaryHistoryCurveStyle",
SummaryHistoryCurveStyleModeType( RiaPreferences::SummaryHistoryCurveStyleMode::SYMBOLS ),
"Default Curve Style for History Vectors",
"",
"",
"" );
CAF_PDM_InitField( &defaultSummaryCurvesTextFilter,
"defaultSummaryCurvesTextFilter",
QString( "FOPT" ),
"Default Summary Curves",
"",
"Semicolon separated list of filters used to create curves in new summary plots",
"" );
*/
CAF_PDM_InitFieldNoDefault( &m_holoLensExportFolder, "holoLensExportFolder", "HoloLens Export Folder", "", "", "" );
m_holoLensExportFolder.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::TOP );
m_holoLensExportFolder.uiCapability()->setUiEditorTypeName( caf::PdmUiFilePathEditor::uiEditorTypeName() );
@@ -338,27 +293,6 @@ RiaPreferences::RiaPreferences()
m_searchPlotTemplateFoldersRecursively.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
CAF_PDM_InitFieldNoDefault( &m_defaultPlotTemplate, "defaultPlotTemplate", "Default Plot Template", "", "", "" );
// m_plotTemplateFolders.uiCapability()->setUiEditorTypeName( caf::PdmUiFilePathEditor::uiEditorTypeName() );
/*
CAF_PDM_InitField( &m_showSummaryTimeAsLongString,
"showSummaryTimeAsLongString",
false,
"Show resample time text as long time text (2010-11-21 23:15:00)",
"",
"",
"" );
m_showSummaryTimeAsLongString.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
CAF_PDM_InitField( &m_useMultipleThreadsWhenLoadingSummaryData,
"useMultipleThreadsWhenLoadingSummaryData",
false,
"Use multiple threads when loading summary data",
"",
"",
"" );
m_useMultipleThreadsWhenLoadingSummaryData.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
*/
CAF_PDM_InitFieldNoDefault( &m_pageSize, "pageSize", "Page Size", "", "", "" );
CAF_PDM_InitFieldNoDefault( &m_pageOrientation, "pageOrientation", "Page Orientation", "", "", "" );
@@ -520,26 +454,6 @@ void RiaPreferences::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering&
m_readerSettings->uiOrdering( uiConfigName, *newCaseBehaviourGroup );
m_summaryPreferences->appendRestartFileGroup( uiOrdering );
/*
caf::PdmUiGroup* restartBehaviourGroup = uiOrdering.addNewGroup( "Origin Files" );
restartBehaviourGroup->add( &summaryRestartFilesShowImportDialog );
{
caf::PdmUiGroup* group = restartBehaviourGroup->addNewGroup( "Origin Summary Files" );
group->add( &summaryImportMode );
}
{
caf::PdmUiGroup* group = restartBehaviourGroup->addNewGroup( "Origin Grid Files" );
group->add( &gridImportMode );
}
{
caf::PdmUiGroup* group = restartBehaviourGroup->addNewGroup( "Origin Ensemble Summary Files" );
group->add( &summaryEnsembleImportMode );
}
*/
}
else if ( uiConfigName == RiaPreferences::tabNamePlotting() )
{
@@ -547,12 +461,6 @@ void RiaPreferences::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering&
uiOrdering.add( &m_timeFormat );
summaryPreferences()->appendItemsToPlottingGroup( uiOrdering );
/*
uiOrdering.add( &defaultSummaryCurvesTextFilter );
uiOrdering.add( &defaultSummaryHistoryCurveStyle );
uiOrdering.add( &m_showSummaryTimeAsLongString );
uiOrdering.add( &m_useMultipleThreadsWhenLoadingSummaryData );
*/
caf::PdmUiGroup* group = uiOrdering.addNewGroup( "Plot Templates" );
group->add( &m_plotTemplateFolders );
@@ -577,21 +485,9 @@ void RiaPreferences::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering&
m_pageBottomMargin.uiCapability()->setUiName( "Bottom Margin" + unitLabel );
{
caf::PdmUiGroup* group = uiOrdering.addNewGroup( "[BETA] Optimized Summary Reader" );
group->setCollapsedByDefault( true );
caf::PdmUiGroup* group = uiOrdering.addNewGroup( "Summary Data Import" );
m_summaryPreferences()->uiOrdering( uiConfigName, *group );
// group->add( &m_summaryReader );
//
// if ( m_summaryReader == SummaryReaderMode::OPM_COMMON )
// {
// group->add( &m_createOptimizedSummaryDataFile );
// group->add( &m_useOptimizedSummaryDataFile );
// }
// else if ( m_summaryReader == SummaryReaderMode::HDF5_OPM_COMMON )
// {
// group->add( &m_createH5SummaryDataFile );
// }
}
}
@@ -657,30 +553,6 @@ QList<caf::PdmOptionItemInfo> RiaPreferences::calculateValueOptions( const caf::
QList<caf::PdmOptionItemInfo> options;
*useOptionsOnly = true;
/*
if ( fieldNeedingOptions == &gridImportMode )
{
// Manual option handling in order to one only a subset of the enum values
SummaryRestartFilesImportModeType skip( RiaPreferences::SummaryRestartFilesImportMode::NOT_IMPORT );
SummaryRestartFilesImportModeType separate( RiaPreferences::SummaryRestartFilesImportMode::SEPARATE_CASES );
options.push_back(
caf::PdmOptionItemInfo( skip.uiText(), RiaPreferences::SummaryRestartFilesImportMode::NOT_IMPORT ) );
options.push_back( caf::PdmOptionItemInfo( separate.uiText(),
RiaPreferences::SummaryRestartFilesImportMode::SEPARATE_CASES ) );
}
else if ( fieldNeedingOptions == &summaryEnsembleImportMode )
{
// Manual option handling in order to one only a subset of the enum values
SummaryRestartFilesImportModeType skip( RiaPreferences::SummaryRestartFilesImportMode::NOT_IMPORT );
SummaryRestartFilesImportModeType allowImport( RiaPreferences::SummaryRestartFilesImportMode::IMPORT );
options.push_back(
caf::PdmOptionItemInfo( skip.uiText(), RiaPreferences::SummaryRestartFilesImportMode::NOT_IMPORT ) );
options.push_back(
caf::PdmOptionItemInfo( allowImport.uiText(), RiaPreferences::SummaryRestartFilesImportMode::IMPORT ) );
}
*/
if ( fieldNeedingOptions == &m_dateFormat )
{
for ( auto dateFormat : RiaQDateTimeTools::supportedDateFormats() )
@@ -1022,22 +894,6 @@ void RiaPreferences::setDefaultPlotTemplatePath( const QString& templatePath )
m_defaultPlotTemplate = templatePath;
}
// -------------------------------------------------------------------------------------------------- /
// --------------------------------------------------------------------------------------------------bool
// RiaPreferences::showSummaryTimeAsLongString()
// const
// {
// return m_showSummaryTimeAsLongString;
// }
//
// -------------------------------------------------------------------------------------------------- /
// --------------------------------------------------------------------------------------------------bool
// RiaPreferences::useMultipleThreadsWhenReadingSummaryData()
// const
// {
// return m_useMultipleThreadsWhenLoadingSummaryData;
// }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -50,10 +50,10 @@ void RiaPreferencesSummary::SummaryHistoryCurveStyleModeType::setUp()
template <>
void RiaPreferencesSummary::SummaryReaderModeType::setUp()
{
addItem( RiaPreferencesSummary::SummaryReaderMode::LIBECL, "LIBECL", "Default Reader (ecl)" );
addItem( RiaPreferencesSummary::SummaryReaderMode::HDF5_OPM_COMMON, "HDF5_OPM_COMMON", "[BETA] H5 Reader (HDF5 Eclipse)" );
addItem( RiaPreferencesSummary::SummaryReaderMode::OPM_COMMON, "OPM_COMMON", "[BETA] Performance Reader (omp-common)" );
setDefault( RiaPreferencesSummary::SummaryReaderMode::LIBECL );
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)" );
setDefault( RiaPreferencesSummary::SummaryReaderMode::HDF5_OPM_COMMON );
}
} // namespace caf
@@ -109,40 +109,49 @@ RiaPreferencesSummary::RiaPreferencesSummary()
CAF_PDM_InitField( &m_createOptimizedSummaryDataFile,
"createOptimizedSummaryDataFile",
true,
"Create Optimized Summary Data Files [BETA]",
false,
"Create LODSMRY Summary Files",
"",
"If not present, create optimized file with extension '*.LODSMRY'",
"If not present, create summary file with extension '*.LODSMRY'",
"" );
m_createOptimizedSummaryDataFile.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
CAF_PDM_InitField( &m_useOptimizedSummaryDataFile,
"useOptimizedSummaryDataFile",
true,
"Use Optimized Summary Data Files [BETA]",
"Use LODSMRY Summary Files",
"",
"If not present, read optimized file with extension '*.LODSMRY'",
"If present, import summary files with extension '*.LODSMRY'",
"" );
m_useOptimizedSummaryDataFile.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
CAF_PDM_InitField( &m_createH5SummaryDataFile,
"createH5SummaryDataFile",
false,
"Create H5 Summary Data Files [BETA]",
"Create h5 Summary Files",
"",
"If not present, create summary file with extension '*.H5'",
"If not present, create summary file with extension '*.h5'",
"" );
m_createH5SummaryDataFile.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
CAF_PDM_InitField( &m_checkH5FileTimeStamp,
"checkH5FileTimeStamp",
false,
"Check File Timestamp",
"",
"Compare timestamp of h5 and SMSPEC, and recreate h5 when required",
"" );
m_checkH5FileTimeStamp.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
CAF_PDM_InitField( &m_createH5SummaryFileThreadCount,
"createH5SummaryFileThreadCount",
4,
"H5 Summary Data Creation Thread Count [BETA]",
1,
"h5 Summary Export Thread Count",
"",
"",
"" );
CAF_PDM_InitFieldNoDefault( &m_summaryReader, "summaryReaderType", "Summary Data File Reader", "", "", "" );
CAF_PDM_InitFieldNoDefault( &m_summaryReader, "summaryReaderType", "File Format", "", "", "" );
CAF_PDM_InitField( &m_showSummaryTimeAsLongString,
"showSummaryTimeAsLongString",
@@ -156,7 +165,7 @@ RiaPreferencesSummary::RiaPreferencesSummary()
CAF_PDM_InitField( &m_useMultipleThreadsWhenLoadingSummaryData,
"useMultipleThreadsWhenLoadingSummaryData",
false,
"Use multiple threads when loading summary data",
"Use Multiple Threads for Import of Summary Files",
"",
"",
"" );
@@ -203,6 +212,14 @@ bool RiaPreferencesSummary::createH5SummaryDataFiles() const
return m_createH5SummaryDataFile();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RiaPreferencesSummary::checkH5SummaryDataTimeStamp() const
{
return m_checkH5FileTimeStamp;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -248,6 +265,70 @@ void RiaPreferencesSummary::appendItemsToPlottingGroup( caf::PdmUiOrdering& uiOr
uiOrdering.add( &m_useMultipleThreadsWhenLoadingSummaryData );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RiaPreferencesSummary::showSummaryTimeAsLongString() const
{
return m_showSummaryTimeAsLongString;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RiaPreferencesSummary::useMultipleThreadsWhenLoadingSummaryData() const
{
return m_useMultipleThreadsWhenLoadingSummaryData;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RiaPreferencesSummary::summaryRestartFilesShowImportDialog() const
{
return m_summaryRestartFilesShowImportDialog;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiaPreferencesSummary::SummaryRestartFilesImportMode RiaPreferencesSummary::summaryImportMode() const
{
return m_summaryImportMode();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiaPreferencesSummary::SummaryRestartFilesImportMode RiaPreferencesSummary::gridImportMode() const
{
return m_gridImportMode();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiaPreferencesSummary::SummaryRestartFilesImportMode RiaPreferencesSummary::summaryEnsembleImportMode() const
{
return m_summaryEnsembleImportMode();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiaPreferencesSummary::defaultSummaryCurvesTextFilter() const
{
return m_defaultSummaryCurvesTextFilter;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiaPreferencesSummary::SummaryHistoryCurveStyleMode RiaPreferencesSummary::defaultSummaryHistoryCurveStyle() const
{
return m_defaultSummaryHistoryCurveStyle();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -257,7 +338,7 @@ void RiaPreferencesSummary::defineEditorAttribute( const caf::PdmFieldHandle* fi
{
if ( field == &m_createOptimizedSummaryDataFile || field == &m_showSummaryTimeAsLongString ||
field == &m_useMultipleThreadsWhenLoadingSummaryData || field == &m_summaryRestartFilesShowImportDialog ||
field == &m_useOptimizedSummaryDataFile || field == &m_createH5SummaryDataFile )
field == &m_useOptimizedSummaryDataFile || field == &m_createH5SummaryDataFile || field == &m_checkH5FileTimeStamp )
{
auto myAttr = dynamic_cast<caf::PdmUiCheckBoxEditorAttribute*>( attribute );
if ( myAttr )
@@ -276,13 +357,18 @@ void RiaPreferencesSummary::defineUiOrdering( QString uiConfigName, caf::PdmUiOr
if ( m_summaryReader == SummaryReaderMode::OPM_COMMON )
{
uiOrdering.add( &m_createOptimizedSummaryDataFile );
uiOrdering.add( &m_useOptimizedSummaryDataFile );
uiOrdering.add( &m_createOptimizedSummaryDataFile );
}
else if ( m_summaryReader == SummaryReaderMode::HDF5_OPM_COMMON )
{
uiOrdering.add( &m_createH5SummaryDataFile );
uiOrdering.add( &m_createH5SummaryFileThreadCount );
uiOrdering.add( &m_checkH5FileTimeStamp );
if ( RiaApplication::instance()->enableDevelopmentFeatures() )
{
uiOrdering.add( &m_createH5SummaryFileThreadCount );
}
}
uiOrdering.skipRemainingFields();
@@ -301,10 +387,10 @@ QList<caf::PdmOptionItemInfo>
{
std::vector<SummaryReaderMode> availableModes;
availableModes.push_back( SummaryReaderMode::LIBECL );
#ifdef USE_HDF5
availableModes.push_back( SummaryReaderMode::HDF5_OPM_COMMON );
#endif // USE_HDF5
availableModes.push_back( SummaryReaderMode::LIBECL );
availableModes.push_back( SummaryReaderMode::OPM_COMMON );
for ( auto enumValue : availableModes )

View File

@@ -64,21 +64,22 @@ public:
bool createOptimizedSummaryDataFiles() const;
bool createH5SummaryDataFiles() const;
bool checkH5SummaryDataTimeStamp() const;
int createH5SummaryDataThreadCount() const;
void appendRestartFileGroup( caf::PdmUiOrdering& uiOrdering ) const;
void appendItemsToPlottingGroup( caf::PdmUiOrdering& uiOrdering ) const;
bool showSummaryTimeAsLongString() const { return m_showSummaryTimeAsLongString; }
bool useMultipleThreadsWhenLoadingSummaryData() const { return m_useMultipleThreadsWhenLoadingSummaryData; }
bool summaryRestartFilesShowImportDialog() const { return m_summaryRestartFilesShowImportDialog; }
bool showSummaryTimeAsLongString() const;
bool useMultipleThreadsWhenLoadingSummaryData() const;
bool summaryRestartFilesShowImportDialog() const;
SummaryRestartFilesImportMode summaryImportMode() const { return m_summaryImportMode(); }
SummaryRestartFilesImportMode gridImportMode() const { return m_gridImportMode(); }
SummaryRestartFilesImportMode summaryEnsembleImportMode() const { return m_summaryEnsembleImportMode(); }
QString defaultSummaryCurvesTextFilter() const { return m_defaultSummaryCurvesTextFilter; }
SummaryRestartFilesImportMode summaryImportMode() const;
SummaryRestartFilesImportMode gridImportMode() const;
SummaryRestartFilesImportMode summaryEnsembleImportMode() const;
QString defaultSummaryCurvesTextFilter() const;
SummaryHistoryCurveStyleMode defaultSummaryHistoryCurveStyle() const { return m_defaultSummaryHistoryCurveStyle(); }
SummaryHistoryCurveStyleMode defaultSummaryHistoryCurveStyle() const;
void defineEditorAttribute( const caf::PdmFieldHandle* field,
QString uiConfigName,
@@ -105,6 +106,7 @@ private:
caf::PdmField<bool> m_useOptimizedSummaryDataFile;
caf::PdmField<bool> m_createH5SummaryDataFile;
caf::PdmField<bool> m_checkH5FileTimeStamp;
caf::PdmField<int> m_createH5SummaryFileThreadCount;
caf::PdmField<SummaryReaderModeType> m_summaryReader;