GRDECL: Import multiple grid files from dialog (#10142)

Add import of N .GRDECL grid files - as done for roff-files
This commit is contained in:
Jørgen Herje
2023-04-21 10:34:29 +02:00
committed by GitHub
parent 93ab49cf02
commit 0d8aee8995
8 changed files with 170 additions and 53 deletions

View File

@@ -249,7 +249,8 @@ void RiaApplication::createMockModelCustomized()
void RiaApplication::createInputMockModel()
{
bool createView = true;
RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( QStringList( RiaDefines::mockModelBasicInputCase() ), createView );
RiaImportEclipseCaseTools::openEclipseInputCaseAndPropertiesFromFileNames( QStringList( RiaDefines::mockModelBasicInputCase() ),
createView );
}
//--------------------------------------------------------------------------------------------------

View File

@@ -253,24 +253,25 @@ bool RiaImportEclipseCaseTools::openEclipseCaseShowTimeStepFilter( const QString
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
int RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( const QStringList& fileNames, bool createDefaultView )
RiaImportEclipseCaseTools::CaseFileNameAndId
RiaImportEclipseCaseTools::openEclipseInputCaseAndPropertiesFromFileNames( const QStringList& fileNames, bool createDefaultView )
{
auto* rimInputReservoir = new RimEclipseInputCase();
RimProject* project = RimProject::current();
if ( !project ) return -1;
if ( !project ) return { QString(), -1 };
auto* rimInputReservoir = new RimEclipseInputCase();
project->assignCaseIdToCase( rimInputReservoir );
bool gridImportSuccess = rimInputReservoir->openDataFileSet( fileNames );
if ( !gridImportSuccess )
{
RiaLogging::error( "Failed to import grid" );
return -1;
delete rimInputReservoir;
return { QString(), -1 };
}
RimEclipseCaseCollection* analysisModels = project->activeOilField() ? project->activeOilField()->analysisModels() : nullptr;
if ( analysisModels == nullptr ) return false;
if ( analysisModels == nullptr ) return { QString(), -1 };
analysisModels->cases.push_back( rimInputReservoir );
@@ -296,7 +297,22 @@ int RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( const QStringL
Riu3DMainWindowTools::selectAsCurrentItem( eclipseView->cellResult() );
}
return rimInputReservoir->caseId();
return { rimInputReservoir->gridFileName(), rimInputReservoir->caseId() };
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<int> RiaImportEclipseCaseTools::openEclipseInputCasesFromFileNames( const QStringList& fileNames, bool createDefaultView )
{
std::vector<int> eclipseCaseIds;
for ( const auto& fileName : fileNames )
{
// Open with single file
auto [caseFileName, caseId] = openEclipseInputCaseAndPropertiesFromFileNames( { fileName }, createDefaultView );
eclipseCaseIds.push_back( caseId );
}
return eclipseCaseIds;
}
//--------------------------------------------------------------------------------------------------
@@ -317,6 +333,12 @@ int RiaImportEclipseCaseTools::openEclipseCaseShowTimeStepFilterImpl( const QStr
bool createView,
std::shared_ptr<RifReaderSettings> readerSettings )
{
RimProject* project = RimProject::current();
if ( !project ) return -1;
RimEclipseCaseCollection* analysisModels = project->activeOilField() ? project->activeOilField()->analysisModels() : nullptr;
if ( analysisModels == nullptr ) return -1;
QFileInfo gridFileName( fileName );
QString caseName = gridFileName.completeBaseName();
@@ -324,16 +346,6 @@ int RiaImportEclipseCaseTools::openEclipseCaseShowTimeStepFilterImpl( const QStr
rimResultReservoir->setCaseInfo( caseName, fileName );
rimResultReservoir->setReaderSettings( readerSettings );
RimProject* project = RimProject::current();
if ( !project ) return -1;
RimEclipseCaseCollection* analysisModels = project->activeOilField() ? project->activeOilField()->analysisModels() : nullptr;
if ( analysisModels == nullptr )
{
delete rimResultReservoir;
return -1;
}
if ( RiaGuiApplication::isRunning() )
{
RicShowMainWindowFeature::showMainWindow();
@@ -344,9 +356,7 @@ int RiaImportEclipseCaseTools::openEclipseCaseShowTimeStepFilterImpl( const QStr
if ( !rimResultReservoir->importGridAndResultMetaData( showTimeStepFilter ) )
{
analysisModels->removeCaseFromAllGroups( rimResultReservoir );
delete rimResultReservoir;
return -1;
}
@@ -408,7 +418,6 @@ bool RiaImportEclipseCaseTools::addEclipseCases( const QStringList& fileNames, R
if ( !rimResultReservoir->openEclipseGridFile() )
{
delete rimResultReservoir;
return false;
}
@@ -508,6 +517,7 @@ std::vector<int> RiaImportEclipseCaseTools::openRoffCasesFromFileNames( const QS
{
const auto errMsg = "Failed to import grid from file: " + fileName.toStdString();
RiaLogging::error( errMsg.c_str() );
delete roffCase;
continue;
}
@@ -554,6 +564,7 @@ RimRoffCase* RiaImportEclipseCaseTools::openRoffCaseFromFileName( const QString&
{
const auto errMsg = "Failed to import grid from file: " + fileName.toStdString();
RiaLogging::error( errMsg.c_str() );
delete roffCase;
return nullptr;
}

View File

@@ -20,6 +20,7 @@
#include <map>
#include <memory>
#include <utility>
#include <vector>
class QString;
@@ -35,7 +36,8 @@ class RifReaderSettings;
class RiaImportEclipseCaseTools
{
public:
using FileCaseIdMap = std::map<QString, int>;
using CaseFileNameAndId = std::pair<QString, int>;
using FileCaseIdMap = std::map<QString, int>;
static bool openEclipseCasesFromFile( const QStringList& fileNames,
bool createView,
@@ -45,7 +47,9 @@ public:
static bool openEclipseCaseShowTimeStepFilter( const QString& fileName );
static int openEclipseInputCaseFromFileNames( const QStringList& fileNames, bool createDefaultView );
static CaseFileNameAndId openEclipseInputCaseAndPropertiesFromFileNames( const QStringList& fileNames, bool createDefaultView );
static std::vector<int> openEclipseInputCasesFromFileNames( const QStringList& fileNames, bool createDefaultView );
static bool openMockModel( const QString& name );
static bool addEclipseCases( const QStringList& fileNames, RimIdenticalGridCaseGroup** resultingCaseGroup = nullptr );