diff --git a/ApplicationLibCode/FileInterface/RifOpmCommonSummary.cpp b/ApplicationLibCode/FileInterface/RifOpmCommonSummary.cpp index 4c8227c1aa..6b411262b9 100644 --- a/ApplicationLibCode/FileInterface/RifOpmCommonSummary.cpp +++ b/ApplicationLibCode/FileInterface/RifOpmCommonSummary.cpp @@ -111,7 +111,10 @@ bool RifOpmCommonEclipseSummary::open( const QString& fileName, bool includeRest { auto temporarySummaryFile = std::make_unique( smspecFileName.toStdString(), includeRestartFiles ); - temporarySummaryFile->make_esmry_file(); + if ( temporarySummaryFile->numberOfTimeSteps() > 0 ) + { + temporarySummaryFile->make_esmry_file(); + } RifOpmCommonEclipseSummary::increaseEsmryFileCount(); } @@ -214,15 +217,22 @@ void RifOpmCommonEclipseSummary::buildMetaData() if ( m_enhancedReader ) { - keywords = m_enhancedReader->keywordList(); - startOfSimulation = m_enhancedReader->startdate(); - daysSinceStartOfSimulation = m_enhancedReader->get( "TIME" ); + keywords = m_enhancedReader->keywordList(); + startOfSimulation = m_enhancedReader->startdate(); + + if ( m_enhancedReader->numberOfTimeSteps() > 0 ) + { + daysSinceStartOfSimulation = m_enhancedReader->get( "TIME" ); + } } else if ( m_standardReader ) { - keywords = m_standardReader->keywordList(); - startOfSimulation = m_standardReader->startdate(); - daysSinceStartOfSimulation = m_standardReader->get( "TIME" ); + keywords = m_standardReader->keywordList(); + startOfSimulation = m_standardReader->startdate(); + if ( m_standardReader->numberOfTimeSteps() > 0 ) + { + daysSinceStartOfSimulation = m_standardReader->get( "TIME" ); + } } const auto startAsTimeT = std::chrono::system_clock::to_time_t( startOfSimulation ); diff --git a/ApplicationLibCode/UnitTests/TestData/SummaryData/empty-file/BLASTO_PRED-19.SMSPEC b/ApplicationLibCode/UnitTests/TestData/SummaryData/empty-file/BLASTO_PRED-19.SMSPEC new file mode 100644 index 0000000000..5e7d5ef53b Binary files /dev/null and b/ApplicationLibCode/UnitTests/TestData/SummaryData/empty-file/BLASTO_PRED-19.SMSPEC differ diff --git a/ApplicationLibCode/UnitTests/TestData/SummaryData/empty-file/BLASTO_PRED-19.UNSMRY b/ApplicationLibCode/UnitTests/TestData/SummaryData/empty-file/BLASTO_PRED-19.UNSMRY new file mode 100644 index 0000000000..53ce7ac5ec Binary files /dev/null and b/ApplicationLibCode/UnitTests/TestData/SummaryData/empty-file/BLASTO_PRED-19.UNSMRY differ diff --git a/ApplicationLibCode/UnitTests/opm-summary-Test.cpp b/ApplicationLibCode/UnitTests/opm-summary-Test.cpp index 5c9b6ab0a6..88abcce1c0 100644 --- a/ApplicationLibCode/UnitTests/opm-summary-Test.cpp +++ b/ApplicationLibCode/UnitTests/opm-summary-Test.cpp @@ -16,6 +16,7 @@ #include "opm/io/eclipse/ExtESmry.hpp" #include +#include static const QString H5_TEST_DATA_DIRECTORY = QString( "%1/h5-file/" ).arg( TEST_DATA_DIR ); @@ -295,6 +296,20 @@ TEST( OpmSummaryTests, OpmComputeSegmentTopology ) } } +TEST( OpmSummaryTests, OpenEmptySummaryFile ) +{ + QString SUMMARY_TEST_DATA_DIRECTORY = QString( "%1/SummaryData/empty-file/" ).arg( TEST_DATA_DIR ); + QString rootPath = SUMMARY_TEST_DATA_DIRECTORY + "BLASTO_PRED-19"; + QString smspecFilePath = rootPath + ".SMSPEC"; + + Opm::EclIO::ESmry eSmry( smspecFilePath.toStdString() ); + + // Test to verify that is is possible to read an empty summary file + // eSmry.make_esmry_file() will fail if the summary file is empty + + EXPECT_TRUE( eSmry.numberOfTimeSteps() == 0 ); +} + //-------------------------------------------------------------------------------------------------- /// //--------------------------------------------------------------------------------------------------