From 7f41349b5c8a6f25ddd00b02e09242ff8b03d758 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Thu, 24 Feb 2022 08:20:43 +0100 Subject: [PATCH] #8582 Eclipse Case : Make it possible to access RFT data without grid data --- .../ProjectDataModel/RimEclipseResultCase.cpp | 49 ++++++++++++------- .../ProjectDataModel/RimEclipseResultCase.h | 2 + 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.cpp b/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.cpp index 704a1517c9..5d64d76437 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.cpp @@ -72,6 +72,7 @@ RimEclipseResultCase::RimEclipseResultCase() : m_gridAndWellDataIsReadFromFile( false ) , m_activeCellInfoIsReadFromFile( false ) , m_useOpmRftReader( true ) + , m_rftDataIsReadFromFile( false ) { CAF_PDM_InitScriptableObject( "Eclipse Case", ":/Case48x48.png", "", "The Regular Eclipse Results Case" ); @@ -205,23 +206,7 @@ bool RimEclipseResultCase::importGridAndResultMetaData( bool showTimeStepFilter m_gridAndWellDataIsReadFromFile = true; m_activeCellInfoIsReadFromFile = true; - QFileInfo eclipseCaseFileInfo( gridFileName() ); - QString rftFileName = eclipseCaseFileInfo.path() + "/" + eclipseCaseFileInfo.completeBaseName() + ".RFT"; - QFileInfo rftFileInfo( rftFileName ); - - if ( rftFileInfo.exists() ) - { - RiaLogging::info( QString( "RFT file found" ) ); - - if ( m_useOpmRftReader ) - { - m_readerOpmRft = new RifReaderOpmRft( rftFileInfo.filePath() ); - } - else - { - m_readerEclipseRft = new RifReaderEclipseRft( rftFileInfo.filePath() ); - } - } + ensureRftDataIsImported(); if ( m_flowDiagSolutions.empty() ) { @@ -358,6 +343,34 @@ void RimEclipseResultCase::loadAndUpdateSourSimData() } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimEclipseResultCase::ensureRftDataIsImported() +{ + if ( m_rftDataIsReadFromFile ) return; + + QFileInfo eclipseCaseFileInfo( gridFileName() ); + QString rftFileName = eclipseCaseFileInfo.path() + "/" + eclipseCaseFileInfo.completeBaseName() + ".RFT"; + QFileInfo rftFileInfo( rftFileName ); + + if ( rftFileInfo.exists() ) + { + RiaLogging::info( QString( "RFT file found" ) ); + + if ( m_useOpmRftReader ) + { + m_readerOpmRft = new RifReaderOpmRft( rftFileInfo.filePath() ); + } + else + { + m_readerEclipseRft = new RifReaderEclipseRft( rftFileInfo.filePath() ); + } + } + + m_rftDataIsReadFromFile = true; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -535,6 +548,8 @@ RigFlowDiagSolverInterface* RimEclipseResultCase::flowDiagSolverInterface() //-------------------------------------------------------------------------------------------------- RifReaderRftInterface* RimEclipseResultCase::rftReader() { + ensureRftDataIsImported(); + if ( m_useOpmRftReader ) return m_readerOpmRft.p(); return m_readerEclipseRft.p(); diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.h b/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.h index cdaad13290..0c1b77bc89 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.h +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.h @@ -81,6 +81,7 @@ protected: private: void loadAndUpdateSourSimData(); + void ensureRftDataIsImported(); private: cvf::ref createMockModel( QString modelName ); @@ -100,4 +101,5 @@ private: bool m_gridAndWellDataIsReadFromFile; bool m_activeCellInfoIsReadFromFile; bool m_useOpmRftReader; + bool m_rftDataIsReadFromFile; };