#2555. Add summary restart file import dialog

This commit is contained in:
Bjørn Erik Jensen
2018-03-15 14:23:48 +01:00
parent a833b5a2d7
commit 208d738846
12 changed files with 483 additions and 62 deletions

View File

@@ -65,6 +65,7 @@ ${CMAKE_CURRENT_LIST_DIR}/RicGridStatisticsDialog.h
${CMAKE_CURRENT_LIST_DIR}/RicShowGridStatisticsFeature.h
${CMAKE_CURRENT_LIST_DIR}/RicFileHierarchyDialog.h
${CMAKE_CURRENT_LIST_DIR}/RicSummaryCaseRestartDialog.h
)
@@ -128,6 +129,7 @@ ${CMAKE_CURRENT_LIST_DIR}/RicGridStatisticsDialog.cpp
${CMAKE_CURRENT_LIST_DIR}/RicShowGridStatisticsFeature.cpp
${CMAKE_CURRENT_LIST_DIR}/RicFileHierarchyDialog.cpp
${CMAKE_CURRENT_LIST_DIR}/RicSummaryCaseRestartDialog.cpp
)
@@ -142,6 +144,7 @@ ${SOURCE_GROUP_SOURCE_FILES}
list(APPEND QT_MOC_HEADERS
${CMAKE_CURRENT_LIST_DIR}/RicGridStatisticsDialog.h
${CMAKE_CURRENT_LIST_DIR}/RicFileHierarchyDialog.h
${CMAKE_CURRENT_LIST_DIR}/RicSummaryCaseRestartDialog.h
)
source_group( "CommandFeature" FILES ${SOURCE_GROUP_HEADER_FILES} ${SOURCE_GROUP_SOURCE_FILES} ${CMAKE_CURRENT_LIST_DIR}/CMakeLists_files.cmake )

View File

@@ -21,6 +21,8 @@
#include "RiaApplication.h"
#include "RiaPreferences.h"
#include "RicSummaryCaseRestartDialog.h"
#include "RimGridSummaryCase.h"
#include "RimMainPlotCollection.h"
#include "RimOilField.h"
@@ -32,8 +34,6 @@
#include "RiuMainPlotWindow.h"
#include "RiuMainWindow.h"
#include "SummaryPlotCommands/RicNewSummaryPlotFeature.h"
#include <QAction>
#include <QFileDialog>
@@ -99,19 +99,23 @@ bool RicImportSummaryCaseFeature::createAndAddSummaryCaseFromFile(const QString&
RimSummaryCaseMainCollection* sumCaseColl = proj->activeOilField() ? proj->activeOilField()->summaryCaseMainCollection() : nullptr;
if (!sumCaseColl) return false;
RimSummaryCase* sumCase = sumCaseColl->createAndAddSummaryCaseFromFileName(fileName);
sumCaseColl->updateAllRequiredEditors();
RicSummaryCaseRestartDialogResult result = RicSummaryCaseRestartDialog::openDialog(fileName);
RiuMainPlotWindow* mainPlotWindow = app->getOrCreateAndShowMainPlotWindow();
if (mainPlotWindow)
if (result.ok)
{
mainPlotWindow->selectAsCurrentItem(sumCase);
RimSummaryCase* sumCase = sumCaseColl->createAndAddSummaryCaseFromFileName(fileName, result.option == RicSummaryCaseRestartDialog::READ_ALL);
sumCaseColl->updateAllRequiredEditors();
mainPlotWindow->updateSummaryPlotToolBar();
RiuMainPlotWindow* mainPlotWindow = app->getOrCreateAndShowMainPlotWindow();
if (mainPlotWindow)
{
mainPlotWindow->selectAsCurrentItem(sumCase);
mainPlotWindow->updateSummaryPlotToolBar();
}
app->addToRecentFiles(fileName);
}
app->addToRecentFiles(fileName);
return true;
}

View File

@@ -22,6 +22,7 @@
#include "RiaPreferences.h"
#include "RicFileHierarchyDialog.h"
#include "RicSummaryCaseRestartDialog.h"
#include "RimGridSummaryCase.h"
#include "RimMainPlotCollection.h"
@@ -108,19 +109,23 @@ bool RicImportSummaryCasesFeature::createAndAddSummaryCaseFromFile(const QString
RimSummaryCaseMainCollection* sumCaseColl = proj->activeOilField() ? proj->activeOilField()->summaryCaseMainCollection() : nullptr;
if (!sumCaseColl) return false;
RimSummaryCase* sumCase = sumCaseColl->createAndAddSummaryCaseFromFileName(fileName);
sumCaseColl->updateAllRequiredEditors();
RicSummaryCaseRestartDialogResult result = RicSummaryCaseRestartDialog::openDialog(fileName);
RiuMainPlotWindow* mainPlotWindow = app->getOrCreateAndShowMainPlotWindow();
if (mainPlotWindow)
if (result.ok)
{
mainPlotWindow->selectAsCurrentItem(sumCase);
RimSummaryCase* sumCase = sumCaseColl->createAndAddSummaryCaseFromFileName(fileName, result.option == RicSummaryCaseRestartDialog::READ_ALL);
sumCaseColl->updateAllRequiredEditors();
mainPlotWindow->updateSummaryPlotToolBar();
RiuMainPlotWindow* mainPlotWindow = app->getOrCreateAndShowMainPlotWindow();
if (mainPlotWindow)
{
mainPlotWindow->selectAsCurrentItem(sumCase);
mainPlotWindow->updateSummaryPlotToolBar();
}
app->addToRecentFiles(fileName);
}
app->addToRecentFiles(fileName);
return true;
}

View File

@@ -0,0 +1,193 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2017- Statoil ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#include "RicSummaryCaseRestartDialog.h"
#include "ExportCommands/RicSnapshotViewToClipboardFeature.h"
#include "ExportCommands/RicSnapshotViewToFileFeature.h"
#include "ExportCommands/RicSnapshotFilenameGenerator.h"
#include "RiaApplication.h"
#include "RifReaderEclipseSummary.h"
#include "RimEclipseView.h"
#include "Rim3dOverlayInfoConfig.h"
#include "RimTools.h"
#include "RiuMainPlotWindow.h"
#include "RiuSummaryQwtPlot.h"
#include "RiuTools.h"
#include <QVBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QTextEdit>
#include <QDialogButtonBox>
#include <QPushButton>
#include <QRadioButton>
#include <QToolBar>
#include <QAction>
#include <QFileDialog>
#include <QGroupBox>
#include <QListWidget>
#include <QAbstractItemView>
#include <QMenu>
#include <QDateTime>
#include <vector>
#include <time.h>
#include <thread>
#define DEFAULT_DIALOG_WIDTH 550
#define DEFAULT_DIALOG_INIT_HEIGHT 150
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RicSummaryCaseRestartDialog::RicSummaryCaseRestartDialog(QWidget* parent)
: QDialog(parent, RiuTools::defaultDialogFlags())
{
// Create widgets
m_readAllRadioButton = new QRadioButton(this);
m_notReadRadionButton = new QRadioButton(this);
m_separateCasesRadionButton = new QRadioButton(this);
m_buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
// Connect to signals
connect(m_buttons, SIGNAL(accepted()), this, SLOT(slotDialogOkClicked()));
connect(m_buttons, SIGNAL(rejected()), this, SLOT(slotDialogCancelClicked()));
// Set widget properties
m_readAllRadioButton->setText("Import All Restart Files");
m_notReadRadionButton->setText("Do Not Import Restart Files");
m_separateCasesRadionButton->setText("Import Restart Files as Separate Cases");
// Define layout
QVBoxLayout* dialogLayout = new QVBoxLayout();
QGroupBox* filesGroup = new QGroupBox("Found Restart Files");
m_filesGridLayout = new QGridLayout();
filesGroup->setLayout(m_filesGridLayout);
QGroupBox* optionsGroup = new QGroupBox("Read Options");
QVBoxLayout* optionsLayout = new QVBoxLayout();
optionsLayout->addWidget(m_readAllRadioButton);
optionsLayout->addWidget(m_notReadRadionButton);
optionsLayout->addWidget(m_separateCasesRadionButton);
optionsGroup->setLayout(optionsLayout);
dialogLayout->addWidget(filesGroup);
dialogLayout->addWidget(optionsGroup);
dialogLayout->addWidget(m_buttons);
setLayout(dialogLayout);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RicSummaryCaseRestartDialog::~RicSummaryCaseRestartDialog()
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const QString& summaryHeaderFile, QWidget *parent)
{
RicSummaryCaseRestartDialog dialog(parent);
dialog.setWindowTitle("Summary Case Restart Files");
dialog.m_readAllRadioButton->setChecked(true);
std::vector<RifRestartFileInfo> files = dialog.getRestartFiles(summaryHeaderFile);
for (const auto& file : files)
{
dialog.appendToFileList(file);
}
// If no restart files are found, do not show dialog
if (files.empty())
{
return RicSummaryCaseRestartDialogResult(true, READ_ALL);
}
dialog.resize(DEFAULT_DIALOG_WIDTH, DEFAULT_DIALOG_INIT_HEIGHT);
dialog.exec();
return RicSummaryCaseRestartDialogResult(dialog.result() == QDialog::Accepted, dialog.selectedOption());
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RicSummaryCaseRestartDialog::ReadOptions RicSummaryCaseRestartDialog::selectedOption() const
{
return
m_notReadRadionButton->isChecked() ? NOT_READ :
m_separateCasesRadionButton->isChecked() ? SEPARATE_CASES :
READ_ALL;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicSummaryCaseRestartDialog::appendToFileList(const RifRestartFileInfo& fileInfo)
{
QDateTime startDate = QDateTime::fromTime_t(fileInfo.startDate);
QString startDateString = startDate.toString(RimTools::dateFormatString());
QDateTime endDate = QDateTime::fromTime_t(fileInfo.endDate);
QString endDateString = endDate.toString(RimTools::dateFormatString());
int rowCount = m_filesGridLayout->rowCount();
QLabel* fileNameLabel = new QLabel();
QLabel* dateLabel = new QLabel();
fileNameLabel->setText(QFileInfo(fileInfo.fileName).fileName());
dateLabel->setText(startDateString + " - " + endDateString);
fileNameLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
m_filesGridLayout->addWidget(fileNameLabel, rowCount, 0);
m_filesGridLayout->addWidget(dateLabel, rowCount, 1);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RifRestartFileInfo> RicSummaryCaseRestartDialog::getRestartFiles(const QString& summaryHeaderFile)
{
RifReaderEclipseSummary reader;
return reader.getRestartFiles(summaryHeaderFile);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicSummaryCaseRestartDialog::slotDialogOkClicked()
{
accept();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicSummaryCaseRestartDialog::slotDialogCancelClicked()
{
reject();
}

View File

@@ -0,0 +1,88 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2017- Statoil ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "Rim3dOverlayInfoConfig.h"
#include "RifReaderEclipseSummary.h"
#include "cafPdmPointer.h"
#include <QDialog>
class QLabel;
class QRadioButton;
class QLineEdit;
class QTextEdit;
class QDialogButtonBox;
class QPushButton;
class QMainWindow;
class QListWidget;
class QGridLayout;
class RicSummaryCaseRestartDialogResult;
//==================================================================================================
///
//==================================================================================================
class RicSummaryCaseRestartDialog : public QDialog
{
Q_OBJECT
public:
enum ReadOptions { READ_ALL, NOT_READ, SEPARATE_CASES };
RicSummaryCaseRestartDialog(QWidget* parent);
~RicSummaryCaseRestartDialog();
static RicSummaryCaseRestartDialogResult openDialog(const QString& summaryHeaderFile, QWidget *parent = nullptr);
ReadOptions selectedOption() const;
private:
void appendToFileList(const RifRestartFileInfo& fileInfo);
std::vector<RifRestartFileInfo> getRestartFiles(const QString& summaryHeaderFile);
private slots:
void slotDialogOkClicked();
void slotDialogCancelClicked();
private:
QGridLayout * m_filesGridLayout;
QRadioButton* m_readAllRadioButton;
QRadioButton* m_notReadRadionButton;
QRadioButton* m_separateCasesRadionButton;
QDialogButtonBox* m_buttons;
};
//==================================================================================================
///
//==================================================================================================
class RicSummaryCaseRestartDialogResult
{
public:
RicSummaryCaseRestartDialogResult(bool ok,
RicSummaryCaseRestartDialog::ReadOptions option) :
ok(ok), option(option) {}
bool ok;
RicSummaryCaseRestartDialog::ReadOptions option;
};

View File

@@ -18,8 +18,8 @@
#include "RifReaderEclipseSummary.h"
#include "RiaStringEncodingTools.h"
#include "ert/ecl/ecl_sum.h"
#include "RifReaderEclipseOutput.h"
#include "RifEclipseSummaryTools.h"
#include <string>
#include <assert.h>
@@ -27,8 +27,62 @@
#include <QDateTime>
#include <QString>
#include <QStringList>
#include "ert/ecl/smspec_node.h"
#include <QDir>
#include "ert/ecl/ecl_sum.h"
#include "ert/ecl/smspec_node.h"
#include "ert/ecl/ecl_file.h"
#include "ert/ecl/ecl_kw_magic.h"
#include "ert/ecl/ecl_kw.h"
std::vector<time_t> getTimeSteps(ecl_sum_type* ecl_sum)
{
std::vector<time_t> timeSteps;
for (int time_index = 0; time_index < ecl_sum_get_data_length(ecl_sum); time_index++)
{
time_t sim_time = ecl_sum_iget_sim_time(ecl_sum, time_index);
timeSteps.push_back(sim_time);
}
return timeSteps;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
ecl_sum_type* openEclSum(const QString& inHeaderFileName, bool includeRestartFiles)
{
QString headerFileName;
QStringList dataFileNames;
QString nativeHeaderFileName = QDir::toNativeSeparators(inHeaderFileName);
RifEclipseSummaryTools::findSummaryFiles(nativeHeaderFileName, &headerFileName, &dataFileNames);
if (headerFileName.isEmpty() || dataFileNames.size() == 0) return nullptr;
assert(!headerFileName.isEmpty());
assert(dataFileNames.size() > 0);
stringlist_type* dataFiles = stringlist_alloc_new();
for (int i = 0; i < dataFileNames.size(); i++)
{
stringlist_append_copy(dataFiles, RiaStringEncodingTools::toNativeEncoded(dataFileNames[i]).data());
}
std::string itemSeparatorInVariableNames = ":";
ecl_sum_type* ecl_sum = ecl_sum_fread_alloc(RiaStringEncodingTools::toNativeEncoded(headerFileName).data(), dataFiles, itemSeparatorInVariableNames.data(), includeRestartFiles);
stringlist_free(dataFiles);
return ecl_sum;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void closeEclSum(ecl_sum_type* ecl_sum)
{
if(ecl_sum) ecl_sum_free(ecl_sum);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -54,36 +108,17 @@ RifReaderEclipseSummary::~RifReaderEclipseSummary()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RifReaderEclipseSummary::open(const QString& headerFileName, const QStringList& dataFileNames)
bool RifReaderEclipseSummary::open(const QString& headerFileName, bool includeRestartFiles)
{
assert(m_ecl_sum == NULL);
if (headerFileName.isEmpty() || dataFileNames.size() == 0) return false;
assert(!headerFileName.isEmpty());
assert(dataFileNames.size() > 0);
stringlist_type* dataFiles = stringlist_alloc_new();
for (int i = 0; i < dataFileNames.size(); i++)
{
stringlist_append_copy(dataFiles, RiaStringEncodingTools::toNativeEncoded(dataFileNames[i]).data());
}
std::string itemSeparatorInVariableNames = ":";
m_ecl_sum = ecl_sum_fread_alloc(RiaStringEncodingTools::toNativeEncoded(headerFileName).data(), dataFiles, itemSeparatorInVariableNames.data(), false);
stringlist_free(dataFiles);
m_ecl_sum = openEclSum(headerFileName, includeRestartFiles);
if (m_ecl_sum)
{
m_timeSteps.clear();
m_ecl_SmSpec = ecl_sum_get_smspec(m_ecl_sum);
for ( int time_index = 0; time_index < timeStepCount(); time_index++ )
{
time_t sim_time = ecl_sum_iget_sim_time(m_ecl_sum, time_index);
m_timeSteps.push_back(sim_time);
}
m_timeSteps = getTimeSteps(m_ecl_sum);
buildMetaData();
@@ -93,6 +128,24 @@ bool RifReaderEclipseSummary::open(const QString& headerFileName, const QStringL
return false;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RifRestartFileInfo> RifReaderEclipseSummary::getRestartFiles(const QString& headerFileName)
{
std::vector<RifRestartFileInfo> restartFiles;
RifRestartFileInfo currFile;
currFile.fileName = headerFileName;
while(!currFile.fileName.isEmpty())
{
currFile = getRestartFile(currFile.fileName);
if (!currFile.fileName.isEmpty())
restartFiles.push_back(currFile);
}
return restartFiles;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -326,6 +379,57 @@ void RifReaderEclipseSummary::buildMetaData()
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
time_t getStartDate(ecl_file_type * header)
{
time_t startDate = 0;
ecl_kw_type *startdat = ecl_file_iget_named_kw(header, STARTDAT_KW, 0);
if (startdat)
{
int * date = ecl_kw_get_int_ptr(startdat);
startDate = ecl_util_make_date(date[STARTDAT_DAY_INDEX],
date[STARTDAT_MONTH_INDEX],
date[STARTDAT_YEAR_INDEX]);
}
return startDate;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RifRestartFileInfo RifReaderEclipseSummary::getRestartFile(const QString& headerFileName)
{
RifRestartFileInfo restartFile;
ecl_sum_type* ecl_sum = openEclSum(headerFileName, true);
const ecl_smspec_type* smspec = ecl_sum ? ecl_sum_get_smspec(ecl_sum) : nullptr;
const char* rstCase = smspec ? ecl_smspec_get_restart_case(smspec) : nullptr;
QString restartCase = rstCase? RiaStringEncodingTools::fromNativeEncoded(rstCase) : "";
closeEclSum(ecl_sum);
if (!restartCase.isEmpty())
{
QString path = QFileInfo(headerFileName).dir().path();
QString restartBase = QDir(restartCase).dirName();
char* smspec_header = ecl_util_alloc_exfilename(path.toStdString().data(), restartBase.toStdString().data(), ECL_SUMMARY_HEADER_FILE, false /*unformatted*/, 0);
restartFile.fileName = QDir::toNativeSeparators(RiaStringEncodingTools::fromNativeEncoded(smspec_header));
util_safe_free(smspec_header);
ecl_sum = openEclSum(headerFileName, false);
std::vector<time_t> timeSteps = getTimeSteps(ecl_sum);
if (timeSteps.size() > 0)
{
restartFile.startDate = timeSteps.front();
restartFile.endDate = timeSteps.back();
}
closeEclSum(ecl_sum);
}
return restartFile;
}
//--------------------------------------------------------------------------------------------------
///

View File

@@ -21,13 +21,29 @@
#include "RifEclipseSummaryAddress.h"
#include "RifSummaryReaderInterface.h"
#include <QString>
#include <string>
#include <vector>
#include <map>
class QString;
class QStringList;
//==================================================================================================
//
//
//==================================================================================================
class RifRestartFileInfo
{
public:
RifRestartFileInfo() : startDate(0), endDate(0) {}
QString fileName;
time_t startDate;
time_t endDate;
};
//==================================================================================================
//
//
@@ -38,7 +54,9 @@ public:
RifReaderEclipseSummary();
~RifReaderEclipseSummary();
bool open(const QString& headerFileName, const QStringList& dataFileNames);
bool open(const QString& headerFileName, bool includeRestartFiles);
std::vector<RifRestartFileInfo> getRestartFiles(const QString& headerFileName);
virtual const std::vector<time_t>& timeSteps(const RifEclipseSummaryAddress& resultAddress) const override;
@@ -49,6 +67,7 @@ private:
int timeStepCount() const;
int indexFromAddress(const RifEclipseSummaryAddress& resultAddress) const;
void buildMetaData();
RifRestartFileInfo getRestartFile(const QString& headerFileName);
private:
// Taken from ecl_sum.h

View File

@@ -39,9 +39,17 @@ CAF_PDM_SOURCE_INIT(RimFileSummaryCase,"FileSummaryCase");
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimFileSummaryCase::RimFileSummaryCase()
RimFileSummaryCase::RimFileSummaryCase() : m_includeRestartFiles(false)
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimFileSummaryCase::RimFileSummaryCase(bool includeRestartFiles)
{
m_includeRestartFiles = includeRestartFiles;
}
//--------------------------------------------------------------------------------------------------
@@ -83,22 +91,17 @@ void RimFileSummaryCase::updateFilePathsFromProjectPath(const QString & newProje
//--------------------------------------------------------------------------------------------------
void RimFileSummaryCase::createSummaryReaderInterface()
{
m_summaryFileReader = RimFileSummaryCase::findRelatedFilesAndCreateReader(this->summaryHeaderFilename());
m_summaryFileReader = RimFileSummaryCase::findRelatedFilesAndCreateReader(this->summaryHeaderFilename(), m_includeRestartFiles);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RifReaderEclipseSummary* RimFileSummaryCase::findRelatedFilesAndCreateReader(const QString& headerFileName)
RifReaderEclipseSummary* RimFileSummaryCase::findRelatedFilesAndCreateReader(const QString& headerFileName, bool includeRestartFiles)
{
QString headerFileNameStd;
QStringList dataFileNames;
QString nativeSumHeadFileName = QDir::toNativeSeparators(headerFileName);
RifEclipseSummaryTools::findSummaryFiles(nativeSumHeadFileName, &headerFileNameStd, &dataFileNames);
RifReaderEclipseSummary* summaryFileReader = new RifReaderEclipseSummary;
if (!summaryFileReader->open(headerFileNameStd, dataFileNames))
if (!summaryFileReader->open(headerFileName, includeRestartFiles))
{
RiaLogging::warning(QString("Failed to open summary file %1").arg(headerFileName));

View File

@@ -34,6 +34,7 @@ class RimFileSummaryCase: public RimSummaryCase
CAF_PDM_HEADER_INIT;
public:
RimFileSummaryCase();
RimFileSummaryCase(bool includeRestartFiles);
virtual ~RimFileSummaryCase();
virtual QString summaryHeaderFilename() const override;
@@ -43,8 +44,9 @@ public:
virtual void createSummaryReaderInterface() override;
virtual RifSummaryReaderInterface* summaryReader() override;
static RifReaderEclipseSummary* findRelatedFilesAndCreateReader(const QString& headerFileName);
static RifReaderEclipseSummary* findRelatedFilesAndCreateReader(const QString& headerFileName, bool includeRestartFiles);
private:
cvf::ref<RifReaderEclipseSummary> m_summaryFileReader;
bool m_includeRestartFiles;
};

View File

@@ -175,7 +175,7 @@ void RimGridSummaryCase::updateFilePathsFromProjectPath(const QString & newProje
//--------------------------------------------------------------------------------------------------
void RimGridSummaryCase::createSummaryReaderInterface()
{
m_summaryFileReader = RimFileSummaryCase::findRelatedFilesAndCreateReader(this->summaryHeaderFilename());
m_summaryFileReader = RimFileSummaryCase::findRelatedFilesAndCreateReader(this->summaryHeaderFilename(), true /* read restart files */);
}
//--------------------------------------------------------------------------------------------------

View File

@@ -282,9 +282,9 @@ RimSummaryCase* RimSummaryCaseMainCollection::createAndAddSummaryCaseFromEclipse
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimSummaryCase* RimSummaryCaseMainCollection::createAndAddSummaryCaseFromFileName(const QString& fileName)
RimSummaryCase* RimSummaryCaseMainCollection::createAndAddSummaryCaseFromFileName(const QString& fileName, bool includeRestartFiles)
{
RimFileSummaryCase* newSumCase = new RimFileSummaryCase();
RimFileSummaryCase* newSumCase = new RimFileSummaryCase(includeRestartFiles);
this->m_cases.push_back(newSumCase);
newSumCase->setSummaryHeaderFileName(fileName);

View File

@@ -45,7 +45,7 @@ public:
void createSummaryCasesFromRelevantEclipseResultCases();
RimSummaryCase* createAndAddSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase);
RimSummaryCase* createAndAddSummaryCaseFromFileName(const QString& fileName);
RimSummaryCase* createAndAddSummaryCaseFromFileName(const QString& fileName, bool includeRestartFiles);
RimSummaryCase* findSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase) const;
RimSummaryCase* findSummaryCaseFromFileName(const QString& fileName) const;