Avoid crash for summary file with no time steps

Do not try to create ESMRY file if there are no time steps in the summary data
Do not try to read "TIME" record if no time steps are present
This commit is contained in:
Magne Sjaastad 2023-12-08 13:40:16 +01:00
parent 681acfb0e0
commit f00553d399
4 changed files with 32 additions and 7 deletions

View File

@ -111,7 +111,10 @@ bool RifOpmCommonEclipseSummary::open( const QString& fileName, bool includeRest
{
auto temporarySummaryFile = std::make_unique<Opm::EclIO::ESmry>( 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 );

View File

@ -16,6 +16,7 @@
#include "opm/io/eclipse/ExtESmry.hpp"
#include <QDebug>
#include <QFile>
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 );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------