mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#4243 Fix crash in import EGRID or SMSPEC by moving to general import feature
This commit is contained in:
@@ -34,8 +34,7 @@
|
||||
|
||||
#include "ExportCommands/RicSnapshotAllViewsToFileFeature.h"
|
||||
#include "HoloLensCommands/RicHoloLensSessionManager.h"
|
||||
#include "RicImportInputEclipseCaseFeature.h"
|
||||
#include "RicImportSummaryCasesFeature.h"
|
||||
#include "RicImportGeneralDataFeature.h"
|
||||
|
||||
#include "Rim2dIntersectionViewCollection.h"
|
||||
#include "RimAnnotationCollection.h"
|
||||
@@ -1224,7 +1223,7 @@ void RiaApplication::createMockModelCustomized()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiaApplication::createInputMockModel()
|
||||
{
|
||||
RicImportInputEclipseCaseFeature::openInputEclipseCaseFromFileNames(QStringList(RiaDefines::mockModelBasicInputCase()));
|
||||
RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames(QStringList(RiaDefines::mockModelBasicInputCase()));
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -2057,33 +2056,29 @@ bool RiaApplication::openFile(const QString& fileName)
|
||||
bool loadingSucceded = false;
|
||||
|
||||
QString lastUsedDialogTag;
|
||||
if (RiaApplication::hasValidProjectFileExtension(fileName))
|
||||
|
||||
RiaDefines::ImportFileType fileType = RiaDefines::obtainFileTypeFromFileName(fileName);
|
||||
|
||||
if (fileType == RiaDefines::RESINSIGHT_PROJECT_FILE)
|
||||
{
|
||||
loadingSucceded = loadProject(fileName);
|
||||
}
|
||||
else if (fileName.contains(".egrid", Qt::CaseInsensitive) || fileName.contains(".grid", Qt::CaseInsensitive))
|
||||
{
|
||||
loadingSucceded = RiaImportEclipseCaseTools::openEclipseCasesFromFile(QStringList({fileName}));
|
||||
if (loadingSucceded) lastUsedDialogTag = "BINARY_GRID";
|
||||
}
|
||||
else if (fileName.contains(".grdecl", Qt::CaseInsensitive))
|
||||
{
|
||||
loadingSucceded = RicImportInputEclipseCaseFeature::openInputEclipseCaseFromFileNames(QStringList(fileName));
|
||||
if (loadingSucceded) lastUsedDialogTag = "INPUT_FILES";
|
||||
}
|
||||
else if (fileName.contains(".odb", Qt::CaseInsensitive))
|
||||
else if (fileType == RiaDefines::GEOMECH_ODB_FILE)
|
||||
{
|
||||
loadingSucceded = openOdbCaseFromFile(fileName);
|
||||
if (loadingSucceded) lastUsedDialogTag = "GEOMECH_MODEL";
|
||||
|
||||
if (loadingSucceded) lastUsedDialogTag = "GEOMECH_MODEL";
|
||||
}
|
||||
else if (fileName.contains(".smspec", Qt::CaseInsensitive))
|
||||
else if ( fileType & RiaDefines::ANY_ECLIPSE_FILE)
|
||||
{
|
||||
loadingSucceded = RicImportSummaryCasesFeature::createAndAddSummaryCasesFromFiles(QStringList({fileName}));
|
||||
loadingSucceded = RicImportGeneralDataFeature::openEclipseFilesFromFileNames({ fileName });
|
||||
if (loadingSucceded)
|
||||
{
|
||||
getOrCreateAndShowMainPlotWindow();
|
||||
lastUsedDialogTag = "INPUT_FILES";
|
||||
lastUsedDialogTag = RiaDefines::defaultDirectoryLabel(fileType);
|
||||
|
||||
if (fileType & RiaDefines::ECLIPSE_SUMMARY_FILE)
|
||||
{
|
||||
getOrCreateAndShowMainPlotWindow();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -479,3 +479,68 @@ double RiaDefines::maximumDefaultValuePlot()
|
||||
{
|
||||
return 100.0;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RiaDefines::ImportFileType RiaDefines::obtainFileTypeFromFileName(const QString& fileName)
|
||||
{
|
||||
if (fileName.endsWith("EGRID", Qt::CaseInsensitive))
|
||||
{
|
||||
return ECLIPSE_EGRID_FILE;
|
||||
}
|
||||
else if (fileName.endsWith("GRID", Qt::CaseInsensitive))
|
||||
{
|
||||
return ECLIPSE_GRID_FILE;
|
||||
}
|
||||
else if (fileName.endsWith("GRDECL", Qt::CaseInsensitive))
|
||||
{
|
||||
return ECLIPSE_INPUT_FILE;
|
||||
}
|
||||
else if (fileName.endsWith("SMSPEC", Qt::CaseInsensitive))
|
||||
{
|
||||
return ECLIPSE_SUMMARY_FILE;
|
||||
}
|
||||
else if (fileName.endsWith("ODB", Qt::CaseInsensitive))
|
||||
{
|
||||
return GEOMECH_ODB_FILE;
|
||||
}
|
||||
else if (fileName.endsWith(".rsp", Qt::CaseInsensitive) || fileName.endsWith(".rip", Qt::CaseInsensitive))
|
||||
{
|
||||
return RESINSIGHT_PROJECT_FILE;
|
||||
}
|
||||
return NOT_A_VALID_IMPORT_FILE;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RiaDefines::defaultDirectoryLabel(RiaDefines::ImportFileType fileType)
|
||||
{
|
||||
QString defaultDirLabel;
|
||||
|
||||
if (fileType == ANY_ECLIPSE_FILE)
|
||||
{
|
||||
defaultDirLabel = "GENERAL_DATA";
|
||||
}
|
||||
else if (fileType & (ECLIPSE_GRID_FILE | fileType & ECLIPSE_EGRID_FILE))
|
||||
{
|
||||
defaultDirLabel = "BINARY_GRID";
|
||||
}
|
||||
else if (fileType & ECLIPSE_INPUT_FILE)
|
||||
{
|
||||
defaultDirLabel = "INPUT_FILES";
|
||||
}
|
||||
else if (fileType & ECLIPSE_SUMMARY_FILE)
|
||||
{
|
||||
// TODO: Summary files used "INPUT_FILES" as last used directory.
|
||||
// Check if this is correct.
|
||||
defaultDirLabel = "INPUT_FILES";
|
||||
}
|
||||
else if (fileType & GEOMECH_ODB_FILE)
|
||||
{
|
||||
defaultDirLabel = "GEOMECH_MODEL";
|
||||
}
|
||||
|
||||
return defaultDirLabel;
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ namespace RiaDefines
|
||||
PACKER,
|
||||
UNDEFINED_COMPONENT
|
||||
};
|
||||
|
||||
|
||||
bool isPerCellFaceResult(const QString& resultName);
|
||||
bool isNativeCategoryResult(const QString& resultName);
|
||||
|
||||
@@ -143,5 +143,22 @@ namespace RiaDefines
|
||||
GAS_PHASE,
|
||||
WATER_PHASE
|
||||
};
|
||||
|
||||
enum ImportFileType
|
||||
{
|
||||
NOT_A_VALID_IMPORT_FILE = 0x00,
|
||||
ECLIPSE_GRID_FILE = 0x01,
|
||||
ECLIPSE_EGRID_FILE = 0x02,
|
||||
ECLIPSE_INPUT_FILE = 0x04,
|
||||
ECLIPSE_SUMMARY_FILE = 0x08,
|
||||
GEOMECH_ODB_FILE = 0x10,
|
||||
RESINSIGHT_PROJECT_FILE = 0x20,
|
||||
ECLIPSE_RESULT_GRID = ECLIPSE_GRID_FILE | ECLIPSE_EGRID_FILE,
|
||||
ANY_ECLIPSE_FILE = ECLIPSE_RESULT_GRID | ECLIPSE_INPUT_FILE | ECLIPSE_SUMMARY_FILE,
|
||||
ANY_IMPORT_FILE = 0xFF
|
||||
};
|
||||
|
||||
ImportFileType obtainFileTypeFromFileName(const QString& fileName);
|
||||
QString defaultDirectoryLabel(ImportFileType fileTypes);
|
||||
};
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
#include "RimCompletionTemplateCollection.h"
|
||||
#include "RimEclipseCaseCollection.h"
|
||||
#include "RimEclipseCellColors.h"
|
||||
#include "RimEclipseInputCase.h"
|
||||
#include "RimEclipseResultCase.h"
|
||||
#include "RimEclipseView.h"
|
||||
#include "RimFileSummaryCase.h"
|
||||
@@ -51,6 +52,7 @@
|
||||
#include "RimSummaryPlot.h"
|
||||
#include "RimSummaryPlotCollection.h"
|
||||
|
||||
#include "Riu3DMainWindowTools.h"
|
||||
#include "RiuMainWindow.h"
|
||||
#include "RiuPlotMainWindow.h"
|
||||
#include "RiuPlotMainWindowTools.h"
|
||||
@@ -197,6 +199,53 @@ bool RiaImportEclipseCaseTools::openEclipseCaseShowTimeStepFilter(const QString&
|
||||
return RiaImportEclipseCaseTools::openEclipseCaseShowTimeStepFilterImpl(fileName, true);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames(const QStringList& fileNames, QString* fileContainingGrid/*=nullptr*/)
|
||||
{
|
||||
RimEclipseInputCase* rimInputReservoir = new RimEclipseInputCase();
|
||||
|
||||
RiaApplication* app = RiaApplication::instance();
|
||||
RimProject* project = app->project();
|
||||
|
||||
project->assignCaseIdToCase(rimInputReservoir);
|
||||
|
||||
bool gridImportSuccess = rimInputReservoir->openDataFileSet(fileNames);
|
||||
if (!gridImportSuccess)
|
||||
{
|
||||
RiaLogging::error("Failed to import grid");
|
||||
return false;
|
||||
}
|
||||
|
||||
RimEclipseCaseCollection* analysisModels = project->activeOilField() ? project->activeOilField()->analysisModels() : nullptr;
|
||||
if (analysisModels == nullptr) return false;
|
||||
|
||||
analysisModels->cases.push_back(rimInputReservoir);
|
||||
|
||||
RimEclipseView* riv = rimInputReservoir->createAndAddReservoirView();
|
||||
|
||||
riv->cellResult()->setResultType(RiaDefines::INPUT_PROPERTY);
|
||||
|
||||
riv->loadDataAndUpdate();
|
||||
|
||||
if (!riv->cellResult()->hasResult())
|
||||
{
|
||||
riv->cellResult()->setResultVariable(RiaDefines::undefinedResultName());
|
||||
}
|
||||
|
||||
analysisModels->updateConnectedEditors();
|
||||
|
||||
Riu3DMainWindowTools::selectAsCurrentItem(riv->cellResult());
|
||||
|
||||
if (fileContainingGrid)
|
||||
{
|
||||
*fileContainingGrid = rimInputReservoir->gridFileName();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -30,6 +30,7 @@ public:
|
||||
static bool openEclipseCasesFromFile(const QStringList& fileNames, QStringList* openedFiles = nullptr, bool noDialog = false);
|
||||
static bool openEclipseCaseShowTimeStepFilter(const QString& fileName);
|
||||
|
||||
static bool openEclipseInputCaseFromFileNames(const QStringList& fileNames, QString* fileContainingGrid = nullptr);
|
||||
static bool openMockModel(const QString& name);
|
||||
|
||||
static bool addEclipseCases(const QStringList& fileNames);
|
||||
|
||||
Reference in New Issue
Block a user