#12631 Refactors RFT readers to use unique_ptr

This commit is contained in:
Magne Sjaastad authored and GitHub committed 2025-07-16 13:10:47 +02:00
1 parent 61504636b2
commit 0d0c8f5505
18 files changed
+54 -37

No files matched your search

@@ -64,6 +64,8 @@ public:
return RiaDefines::ResultDataType::DOUBLE;
case RifEclipseKeywordValueCount::KeywordDataType::INTEGER:
return RiaDefines::ResultDataType::INTEGER;
case RifEclipseKeywordValueCount::KeywordDataType::UNKNOWN:
return RiaDefines::ResultDataType::UNKNOWN;
}
return RiaDefines::ResultDataType::UNKNOWN;
@@ -155,7 +155,7 @@ std::set<RifEclipseRftAddress> RifReaderEclipseRft::eclipseRftAddresses()
//--------------------------------------------------------------------------------------------------
void RifReaderEclipseRft::values( const RifEclipseRftAddress& rftAddress, std::vector<double>* values )
{
CVF_ASSERT( values );
if ( !values ) return;
if ( !m_ecl_rft_file )
{
@@ -24,8 +24,6 @@
#include <string>
#include <vector>
#include "cvfObject.h"
#include <QDateTime>
namespace caf
@@ -37,7 +35,7 @@ class VecIjk;
//
//
//==================================================================================================
class RifReaderEclipseRft : public RifReaderRftInterface, public cvf::Object
class RifReaderEclipseRft : public RifReaderRftInterface
{
public:
RifReaderEclipseRft( const QString& fileName );
@@ -23,8 +23,6 @@
#include <string>
#include <vector>
#include "cvfObject.h"
#include <QDateTime>
#include <QDir>
@@ -32,7 +30,7 @@
//
//
//==================================================================================================
class RifReaderFmuRft : public RifReaderRftInterface, public cvf::Object
class RifReaderFmuRft : public RifReaderRftInterface
{
private:
struct WellDate
@@ -55,6 +55,11 @@ RifReaderOpmRft::RifReaderOpmRft( const QString& fileName )
{
}
//--------------------------------------------------------------------------------------------------
/// This is required to avoid including the OPM library in the header file
//--------------------------------------------------------------------------------------------------
RifReaderOpmRft::~RifReaderOpmRft() = default;
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -21,8 +21,6 @@
#include "RifReaderEclipseRft.h"
#include "RifRftSegment.h"
#include "cvfObject.h"
#include <memory>
namespace Opm
@@ -33,11 +31,12 @@ namespace EclIO
} // namespace EclIO
} // namespace Opm
class RifReaderOpmRft : public RifReaderRftInterface, public cvf::Object
class RifReaderOpmRft : public RifReaderRftInterface
{
public:
RifReaderOpmRft( const QString& fileName );
RifReaderOpmRft( const QString& fileName, const QString& dataDeckFileName );
virtual ~RifReaderOpmRft();
std::set<RifEclipseRftAddress> eclipseRftAddresses() override;
void values( const RifEclipseRftAddress& rftAddress, std::vector<double>* values ) override;
@@ -35,7 +35,7 @@
//
//
//==================================================================================================
class RifReaderPressureDepthData : public RifReaderRftInterface, public cvf::Object
class RifReaderPressureDepthData : public RifReaderRftInterface
{
public:
RifReaderPressureDepthData( const QString& filePath );
@@ -26,6 +26,11 @@
#include "cafVecIjk.h"
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RifReaderRftInterface::~RifReaderRftInterface() = default;
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -36,6 +36,8 @@ class RigEclipseWellLogExtractor;
class RifReaderRftInterface
{
public:
virtual ~RifReaderRftInterface();
std::set<RifEclipseRftAddress> eclipseRftAddresses( const QString& wellName, const QDateTime& timeStep );
virtual std::set<RifEclipseRftAddress> eclipseRftAddresses() = 0;
virtual void values( const RifEclipseRftAddress& rftAddress, std::vector<double>* values ) = 0;
@@ -425,11 +425,11 @@ void RimEclipseResultCase::ensureRftDataIsImported()
{
if ( m_useOpmRftReader )
{
m_readerOpmRft = new RifReaderOpmRft( rftFileInfo.filePath() );
m_readerOpmRft = std::make_unique<RifReaderOpmRft>( rftFileInfo.filePath() );
}
else
{
m_readerEclipseRft = new RifReaderEclipseRft( rftFileInfo.filePath() );
m_readerEclipseRft = std::make_unique<RifReaderEclipseRft>( rftFileInfo.filePath() );
}
}
@@ -612,9 +612,9 @@ RifReaderRftInterface* RimEclipseResultCase::rftReader()
{
ensureRftDataIsImported();
if ( m_useOpmRftReader ) return m_readerOpmRft.p();
if ( m_useOpmRftReader ) return m_readerOpmRft.get();
return m_readerEclipseRft.p();
return m_readerEclipseRft.get();
}
//--------------------------------------------------------------------------------------------------
@@ -27,6 +27,8 @@
#include "cafFilePath.h"
#include "cafPdmProxyValueField.h"
#include <memory>
class RifReaderRftInterface;
class RifReaderEclipseRft;
class RifReaderOpmRft;
@@ -94,8 +96,8 @@ private:
private:
cvf::ref<RigFlowDiagSolverInterface> m_flowDagSolverInterface;
cvf::ref<RifReaderEclipseRft> m_readerEclipseRft;
cvf::ref<RifReaderOpmRft> m_readerOpmRft;
std::unique_ptr<RifReaderEclipseRft> m_readerEclipseRft;
std::unique_ptr<RifReaderOpmRft> m_readerOpmRft;
caf::PdmProxyValueField<caf::AppEnum<RiaDefines::EclipseUnitSystem>> m_unitSystem;
caf::PdmChildArrayField<RimFlowDiagSolution*> m_flowDiagSolutions;
@@ -57,7 +57,7 @@ void RimObservedFmuRftData::setDirectoryPath( const QString& path )
//--------------------------------------------------------------------------------------------------
void RimObservedFmuRftData::createRftReaderInterface()
{
m_fmuRftReader = new RifReaderFmuRft( m_directoryPath().path() );
m_fmuRftReader = std::make_unique<RifReaderFmuRft>( m_directoryPath().path() );
m_fmuRftReader->importData();
}
@@ -66,12 +66,12 @@ void RimObservedFmuRftData::createRftReaderInterface()
//--------------------------------------------------------------------------------------------------
RifReaderRftInterface* RimObservedFmuRftData::rftReader()
{
if ( m_fmuRftReader.isNull() )
if ( !m_fmuRftReader )
{
createRftReaderInterface();
}
return m_fmuRftReader.p();
return m_fmuRftReader.get();
}
//--------------------------------------------------------------------------------------------------
@@ -95,9 +95,9 @@ bool RimObservedFmuRftData::hasWell( const QString& wellPathName ) const
//--------------------------------------------------------------------------------------------------
std::vector<QString> RimObservedFmuRftData::wells() const
{
if ( m_fmuRftReader.p() )
if ( m_fmuRftReader )
{
std::set<QString> wellNames = const_cast<RifReaderFmuRft*>( m_fmuRftReader.p() )->wellNames();
std::set<QString> wellNames = m_fmuRftReader->wellNames();
return std::vector<QString>( wellNames.begin(), wellNames.end() );
}
return std::vector<QString>();
@@ -108,9 +108,9 @@ std::vector<QString> RimObservedFmuRftData::wells() const
//--------------------------------------------------------------------------------------------------
std::vector<QString> RimObservedFmuRftData::labels( const RifEclipseRftAddress& rftAddress )
{
if ( m_fmuRftReader.p() )
if ( m_fmuRftReader )
{
return const_cast<RifReaderFmuRft*>( m_fmuRftReader.p() )->labels( rftAddress );
return m_fmuRftReader->labels( rftAddress );
}
return {};
}
@@ -19,12 +19,15 @@
#pragma once
#include "RifReaderFmuRft.h"
#include "RimNamedObject.h"
#include "cafPdmField.h"
#include "cafPdmObject.h"
#include "cafPdmProxyValueField.h"
#include <memory>
class RimObservedFmuRftData : public RimNamedObject
{
CAF_PDM_HEADER_INIT;
@@ -44,7 +47,7 @@ protected:
void initAfterRead() override;
private:
cvf::ref<RifReaderFmuRft> m_fmuRftReader;
std::unique_ptr<RifReaderFmuRft> m_fmuRftReader;
caf::PdmField<caf::FilePath> m_directoryPath;
caf::PdmField<QString> m_directoryPath_OBSOLETE;
@@ -63,7 +63,7 @@ void RimPressureDepthData::setFilePath( const QString& path )
//--------------------------------------------------------------------------------------------------
void RimPressureDepthData::createRftReaderInterface()
{
m_fmuRftReader = new RifReaderPressureDepthData( m_filePath().path() );
m_fmuRftReader = std::make_unique<RifReaderPressureDepthData>( m_filePath().path() );
m_fmuRftReader->load();
}
@@ -72,12 +72,12 @@ void RimPressureDepthData::createRftReaderInterface()
//--------------------------------------------------------------------------------------------------
RifReaderRftInterface* RimPressureDepthData::rftReader()
{
if ( m_fmuRftReader.isNull() )
if ( !m_fmuRftReader )
{
createRftReaderInterface();
}
return m_fmuRftReader.p();
return m_fmuRftReader.get();
}
//--------------------------------------------------------------------------------------------------
@@ -101,9 +101,9 @@ bool RimPressureDepthData::hasWell( const QString& wellPathName ) const
//--------------------------------------------------------------------------------------------------
std::vector<QString> RimPressureDepthData::wellNames() const
{
if ( m_fmuRftReader.p() )
if ( m_fmuRftReader )
{
std::set<QString> wellNames = const_cast<RifReaderPressureDepthData*>( m_fmuRftReader.p() )->wellNames();
std::set<QString> wellNames = m_fmuRftReader->wellNames();
return std::vector<QString>( wellNames.begin(), wellNames.end() );
}
return {};
@@ -43,7 +43,7 @@ public:
std::vector<QString> wellNames() const;
private:
cvf::ref<RifReaderPressureDepthData> m_fmuRftReader;
std::unique_ptr<RifReaderPressureDepthData> m_fmuRftReader;
caf::PdmField<caf::FilePath> m_filePath;
caf::PdmProxyValueField<std::vector<QString>> m_wells;
@@ -215,13 +215,13 @@ RifSummaryReaderInterface* RimFileSummaryCase::findRelatedFilesAndCreateReader(
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RifReaderOpmRft* RimFileSummaryCase::createOpmRftReader( const QString& rftFileName, const QString& dataDeckFileName )
std::unique_ptr<RifReaderOpmRft> RimFileSummaryCase::createOpmRftReader( const QString& rftFileName, const QString& dataDeckFileName )
{
QFileInfo fi( rftFileName );
if ( fi.exists() )
{
return new RifReaderOpmRft( rftFileName, dataDeckFileName );
return std::make_unique<RifReaderOpmRft>( rftFileName, dataDeckFileName );
}
return nullptr;
@@ -293,11 +293,11 @@ RifSummaryReaderInterface* RimFileSummaryCase::summaryReader()
//--------------------------------------------------------------------------------------------------
RifReaderRftInterface* RimFileSummaryCase::rftReader()
{
if ( m_summaryEclipseRftReader.isNull() )
if ( !m_summaryEclipseRftReader )
{
createRftReaderInterface();
}
return m_summaryEclipseRftReader.p();
return m_summaryEclipseRftReader.get();
}
//--------------------------------------------------------------------------------------------------
@@ -22,6 +22,8 @@
#include "cafPdmField.h"
#include "cvfObject.h"
#include <memory>
class RifReaderRftInterface;
class RifReaderOpmRft;
class RifReaderEclipseSummary;
@@ -73,13 +75,13 @@ private:
QString additionalSummaryDataFilePath() const;
static QString createAdditionalSummaryFileName();
static RifReaderOpmRft* createOpmRftReader( const QString& rftFileName, const QString& dataDeckFileName );
static std::unique_ptr<RifReaderOpmRft> createOpmRftReader( const QString& rftFileName, const QString& dataDeckFileName );
private:
cvf::ref<RifSummaryReaderInterface> m_fileSummaryReader;
cvf::ref<RifCalculatedSummaryCurveReader> m_calculatedSummaryReader;
cvf::ref<RifMultipleSummaryReaders> m_multiSummaryReader;
cvf::ref<RifReaderOpmRft> m_summaryEclipseRftReader;
std::unique_ptr<RifReaderOpmRft> m_summaryEclipseRftReader;
caf::PdmField<bool> m_includeRestartFiles;
caf::PdmField<caf::FilePath> m_additionalSummaryFilePath;
@@ -23,6 +23,7 @@
#include <QDateTime>
#include <QString>
#include <memory>
#include <vector>
//--------------------------------------------------------------------------------------------------