mirror of
https://github.com/OPM/ResInsight.git
synced 2026-09-03 20:53:13 -05:00
@@ -1860,7 +1860,7 @@ bool RiaApplication::openFile(const QString& fileName)
|
||||
}
|
||||
else if (fileName.contains(".egrid", Qt::CaseInsensitive) || fileName.contains(".grid", Qt::CaseInsensitive))
|
||||
{
|
||||
loadingSucceded = RiaImportEclipseCaseTools::openEclipseCaseFromFile(fileName);
|
||||
loadingSucceded = !RiaImportEclipseCaseTools::openEclipseCasesFromFile(QStringList({ fileName })).isEmpty();
|
||||
}
|
||||
else if (fileName.contains(".grdecl", Qt::CaseInsensitive))
|
||||
{
|
||||
|
||||
@@ -103,6 +103,7 @@ RiaPreferences::RiaPreferences(void)
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&summaryRestartFilesShowImportDialog, "summaryRestartFilesShowImportDialog", "Show Import Dialog", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&summaryRestartFilesImportMode, "summaryRestartFilesImportMode", "Default Import Mode", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&importRestartGridCaseFiles, "importRestartGridCaseFiles", "Import Restart Grid Cases", "", "", "");
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_readerSettings, "readerSettings", "Reader Settings", "", "", "");
|
||||
m_readerSettings = new RifReaderSettings;
|
||||
|
||||
@@ -82,6 +82,7 @@ public: // Pdm Fields
|
||||
|
||||
caf::PdmField<bool> summaryRestartFilesShowImportDialog;
|
||||
caf::PdmField<SummaryRestartFilesImportModeType> summaryRestartFilesImportMode;
|
||||
caf::PdmField<bool> importRestartGridCaseFiles;
|
||||
|
||||
protected:
|
||||
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute);
|
||||
|
||||
@@ -272,21 +272,21 @@ bool RiaArgumentParser::parseArguments()
|
||||
if (caf::Utils::fileExists(caseName) &&
|
||||
(fileExtension == "EGRID" || fileExtension == "GRID"))
|
||||
{
|
||||
RiaImportEclipseCaseTools::openEclipseCaseFromFile(caseName);
|
||||
RiaImportEclipseCaseTools::openEclipseCasesFromFile(QStringList({ caseName }), true);
|
||||
}
|
||||
else
|
||||
{
|
||||
QString caseFileNameWithExt = caseName + ".EGRID";
|
||||
if (caf::Utils::fileExists(caseFileNameWithExt))
|
||||
{
|
||||
RiaImportEclipseCaseTools::openEclipseCaseFromFile(caseFileNameWithExt);
|
||||
RiaImportEclipseCaseTools::openEclipseCasesFromFile(QStringList({ caseFileNameWithExt }), true);
|
||||
}
|
||||
else
|
||||
{
|
||||
caseFileNameWithExt = caseName + ".GRID";
|
||||
if (caf::Utils::fileExists(caseFileNameWithExt))
|
||||
{
|
||||
RiaImportEclipseCaseTools::openEclipseCaseFromFile(caseFileNameWithExt);
|
||||
RiaImportEclipseCaseTools::openEclipseCasesFromFile(QStringList({ caseFileNameWithExt }), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,9 @@
|
||||
#include "RiaApplication.h"
|
||||
#include "RiaPreferences.h"
|
||||
|
||||
#include "RifEclipseSummaryTools.h"
|
||||
#include "RifSummaryCaseRestartSelector.h"
|
||||
|
||||
#include "RigGridManager.h"
|
||||
|
||||
#include "RimCaseCollection.h"
|
||||
@@ -50,6 +53,80 @@
|
||||
#include <QFileInfo>
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QStringList RiaImportEclipseCaseTools::openEclipseCasesFromFile(const QStringList& fileNames, bool noDialog)
|
||||
{
|
||||
RiaApplication* app = RiaApplication::instance();
|
||||
RimProject* project = app->project();
|
||||
|
||||
QStringList openedCaseFiles;
|
||||
|
||||
// Get list of files to import
|
||||
RifSummaryCaseRestartSelector selector;
|
||||
if(noDialog) selector.showDialog(false);
|
||||
selector.buildGridCaseFileList(true);
|
||||
std::vector<RifSummaryCaseFileInfo> summaryFileInfos = selector.getFilesToImportFromGridFiles(fileNames);
|
||||
|
||||
// Import eclipse case files
|
||||
for (const QString& gridCaseFile : selector.gridCaseFiles())
|
||||
{
|
||||
if (RiaImportEclipseCaseTools::openEclipseCaseFromFile(gridCaseFile))
|
||||
{
|
||||
openedCaseFiles.push_back(gridCaseFile);
|
||||
}
|
||||
}
|
||||
|
||||
// Import summary cases
|
||||
RimSummaryCaseMainCollection* sumCaseColl = project->activeOilField() ? project->activeOilField()->summaryCaseMainCollection() : nullptr;
|
||||
std::vector<RimSummaryCase*> newSumCases = sumCaseColl->createAndAddSummaryCasesFromFileInfos(summaryFileInfos);
|
||||
|
||||
for (RimSummaryCase* newSumCase : newSumCases)
|
||||
{
|
||||
QString gridCaseFile = RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(newSumCase->summaryHeaderFilename());
|
||||
if (!gridCaseFile.isEmpty())
|
||||
{
|
||||
RimSummaryCase* existingFileSummaryCase = sumCaseColl->findSummaryCaseFromFileName(newSumCase->summaryHeaderFilename());
|
||||
if (existingFileSummaryCase)
|
||||
{
|
||||
// Replace all occurrences of file sum with ecl sum
|
||||
|
||||
std::vector<caf::PdmObjectHandle*> referringObjects;
|
||||
existingFileSummaryCase->objectsWithReferringPtrFields(referringObjects);
|
||||
|
||||
// UI settings of a curve filter is updated based
|
||||
// on the new case association for the curves in the curve filter
|
||||
// UI is updated by loadDataAndUpdate()
|
||||
|
||||
for (caf::PdmObjectHandle* objHandle : referringObjects)
|
||||
{
|
||||
RimSummaryCurve* summaryCurve = dynamic_cast<RimSummaryCurve*>(objHandle);
|
||||
if (summaryCurve)
|
||||
{
|
||||
RimSummaryCurveCollection* parentCollection = nullptr;
|
||||
summaryCurve->firstAncestorOrThisOfType(parentCollection);
|
||||
if (parentCollection)
|
||||
{
|
||||
parentCollection->loadDataAndUpdate(true);
|
||||
parentCollection->updateConnectedEditors();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sumCaseColl->removeCase(existingFileSummaryCase);
|
||||
|
||||
delete existingFileSummaryCase;
|
||||
|
||||
}
|
||||
|
||||
sumCaseColl->updateAllRequiredEditors();
|
||||
}
|
||||
}
|
||||
return openedCaseFiles;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -93,7 +170,11 @@ bool RiaImportEclipseCaseTools::openEclipseCaseShowTimeStepFilterImpl(const QStr
|
||||
RimProject* project = app->project();
|
||||
|
||||
RimEclipseCaseCollection* analysisModels = project->activeOilField() ? project->activeOilField()->analysisModels() : nullptr;
|
||||
if (analysisModels == nullptr) return false;
|
||||
if (analysisModels == nullptr)
|
||||
{
|
||||
delete rimResultReservoir;
|
||||
return false;
|
||||
}
|
||||
|
||||
RiuMainWindow::instance()->show();
|
||||
|
||||
@@ -112,66 +193,6 @@ bool RiaImportEclipseCaseTools::openEclipseCaseShowTimeStepFilterImpl(const QStr
|
||||
|
||||
riv->loadDataAndUpdate();
|
||||
|
||||
// Add a corresponding summary case if it exists
|
||||
{
|
||||
RimSummaryCaseMainCollection* sumCaseColl = project->activeOilField() ? project->activeOilField()->summaryCaseMainCollection() : nullptr;
|
||||
if (sumCaseColl)
|
||||
{
|
||||
{
|
||||
RiuMainPlotWindow* mainPlotWindow = app->mainPlotWindow();
|
||||
if (sumCaseColl->summaryCaseCount() == 0 && mainPlotWindow)
|
||||
{
|
||||
mainPlotWindow->hide();
|
||||
}
|
||||
}
|
||||
|
||||
if (!sumCaseColl->findSummaryCaseFromEclipseResultCase(rimResultReservoir))
|
||||
{
|
||||
std::vector<RimSummaryCase*> newSumCases = sumCaseColl->createAndAddSummaryCasesFromEclipseResultCase(rimResultReservoir);
|
||||
RimSummaryCase* newSumCase = !newSumCases.empty() ? newSumCases.front() : nullptr;
|
||||
|
||||
if (newSumCase)
|
||||
{
|
||||
RimSummaryCase* existingFileSummaryCase = sumCaseColl->findSummaryCaseFromFileName(newSumCase->summaryHeaderFilename());
|
||||
if (existingFileSummaryCase)
|
||||
{
|
||||
// Replace all occurrences of file sum with ecl sum
|
||||
|
||||
std::vector<caf::PdmObjectHandle*> referringObjects;
|
||||
existingFileSummaryCase->objectsWithReferringPtrFields(referringObjects);
|
||||
|
||||
// UI settings of a curve filter is updated based
|
||||
// on the new case association for the curves in the curve filter
|
||||
// UI is updated by loadDataAndUpdate()
|
||||
|
||||
for (caf::PdmObjectHandle* objHandle : referringObjects)
|
||||
{
|
||||
RimSummaryCurve* summaryCurve = dynamic_cast<RimSummaryCurve*>(objHandle);
|
||||
if (summaryCurve)
|
||||
{
|
||||
RimSummaryCurveCollection* parentCollection = nullptr;
|
||||
summaryCurve->firstAncestorOrThisOfType(parentCollection);
|
||||
if (parentCollection)
|
||||
{
|
||||
parentCollection->loadDataAndUpdate(true);
|
||||
parentCollection->updateConnectedEditors();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sumCaseColl->removeCase(existingFileSummaryCase);
|
||||
|
||||
delete existingFileSummaryCase;
|
||||
|
||||
}
|
||||
|
||||
sumCaseColl->updateAllRequiredEditors();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!riv->cellResult()->hasResult())
|
||||
{
|
||||
riv->cellResult()->setResultVariable(RiaDefines::undefinedResultName());
|
||||
|
||||
@@ -27,7 +27,7 @@ class QStringList;
|
||||
class RiaImportEclipseCaseTools
|
||||
{
|
||||
public:
|
||||
static bool openEclipseCaseFromFile(const QString& fileName);
|
||||
static QStringList openEclipseCasesFromFile(const QStringList& fileNames, bool noDialog = false);
|
||||
static bool openEclipseCaseShowTimeStepFilter(const QString& fileName);
|
||||
|
||||
static bool openMockModel(const QString& name);
|
||||
@@ -35,6 +35,7 @@ public:
|
||||
static bool addEclipseCases(const QStringList& fileNames);
|
||||
|
||||
private:
|
||||
static bool openEclipseCaseFromFile(const QString& fileName);
|
||||
static bool openEclipseCaseShowTimeStepFilterImpl(const QString& fileName, bool showTimeStepFilter);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user