#8033 Ensemble Well Log: Allow import from grdecl files

This commit is contained in:
Magne Sjaastad 2021-09-23 14:19:55 +02:00
parent 17c5f473be
commit 33221e7e07
10 changed files with 80 additions and 48 deletions

View File

@ -233,7 +233,9 @@ void RiaApplication::createMockModelCustomized()
//--------------------------------------------------------------------------------------------------
void RiaApplication::createInputMockModel()
{
RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( QStringList( RiaDefines::mockModelBasicInputCase() ) );
bool createView = true;
RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( QStringList( RiaDefines::mockModelBasicInputCase() ),
createView );
}
//--------------------------------------------------------------------------------------------------
@ -336,7 +338,10 @@ bool RiaApplication::openFile( const QString& fileName )
}
else if ( int( fileType ) & int( RiaDefines::ImportFileType::ANY_ECLIPSE_FILE ) )
{
loadingSucceded = RicImportGeneralDataFeature::openEclipseFilesFromFileNames( QStringList{ fileName }, true );
bool createView = true;
bool createPlot = true;
loadingSucceded =
RicImportGeneralDataFeature::openEclipseFilesFromFileNames( QStringList{ fileName }, createPlot, createView );
lastUsedDialogTag = RiaDefines::defaultDirectoryLabel( fileType );
}

View File

@ -285,7 +285,9 @@ RiaApplication::ApplicationStatus RiaConsoleApplication::handleArguments( gsl::n
QStringList fileNames =
RicImportGeneralDataFeature::fileNamesFromCaseNames( cvfqt::Utils::toQStringList( o.values() ) );
RicImportGeneralDataFeature::openEclipseFilesFromFileNames( fileNames, true );
bool createView = true;
bool createPlot = true;
RicImportGeneralDataFeature::openEclipseFilesFromFileNames( fileNames, createPlot, createView );
}
if ( cvf::Option o = progOpt->option( "commandFile" ) )

View File

@ -674,8 +674,11 @@ RiaApplication::ApplicationStatus RiaGuiApplication::handleArguments( gsl::not_n
QStringList fileNames =
RicImportGeneralDataFeature::fileNamesFromCaseNames( cvfqt::Utils::toQStringList( o.values() ) );
bool createView = true;
bool createPlot = true;
RicImportGeneralDataFeature::OpenCaseResults results =
RicImportGeneralDataFeature::openEclipseFilesFromFileNames( fileNames, true );
RicImportGeneralDataFeature::openEclipseFilesFromFileNames( fileNames, createPlot, createView );
if ( results && !results.eclipseSummaryFiles.empty() )
{
getOrCreateAndShowMainPlotWindow();

View File

@ -247,8 +247,7 @@ bool RiaImportEclipseCaseTools::openEclipseCaseShowTimeStepFilter( const QString
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
int RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( const QStringList& fileNames,
QString* fileContainingGrid /*=nullptr*/ )
int RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( const QStringList& fileNames, bool createDefaultView )
{
RimEclipseInputCase* rimInputReservoir = new RimEclipseInputCase();
@ -270,24 +269,26 @@ int RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( const QStringL
analysisModels->cases.push_back( rimInputReservoir );
RimEclipseView* riv = rimInputReservoir->createAndAddReservoirView();
riv->cellResult()->setResultType( RiaDefines::ResultCatType::INPUT_PROPERTY );
riv->loadDataAndUpdate();
if ( !riv->cellResult()->hasResult() )
RimEclipseView* eclipseView = nullptr;
if ( createDefaultView )
{
riv->cellResult()->setResultVariable( RiaResultNames::undefinedResultName() );
eclipseView = rimInputReservoir->createAndAddReservoirView();
eclipseView->cellResult()->setResultType( RiaDefines::ResultCatType::INPUT_PROPERTY );
eclipseView->loadDataAndUpdate();
if ( !eclipseView->cellResult()->hasResult() )
{
eclipseView->cellResult()->setResultVariable( RiaResultNames::undefinedResultName() );
}
}
analysisModels->updateConnectedEditors();
Riu3DMainWindowTools::selectAsCurrentItem( riv->cellResult() );
if ( fileContainingGrid )
if ( eclipseView )
{
*fileContainingGrid = rimInputReservoir->gridFileName();
Riu3DMainWindowTools::selectAsCurrentItem( eclipseView->cellResult() );
}
return rimInputReservoir->caseId();

View File

@ -40,7 +40,7 @@ public:
static bool openEclipseCaseShowTimeStepFilter( const QString& fileName );
static int openEclipseInputCaseFromFileNames( const QStringList& fileNames, QString* fileContainingGrid = nullptr );
static int openEclipseInputCaseFromFileNames( const QStringList& fileNames, bool createDefaultView );
static bool openMockModel( const QString& name );
static bool addEclipseCases( const QStringList& fileNames, RimIdenticalGridCaseGroup** resultingCaseGroup = nullptr );

View File

@ -59,7 +59,9 @@ void RicImportEclipseCaseFeature::onActionTriggered( bool isChecked )
defaultDir = QFileInfo( fileNames.last() ).absolutePath();
app->setLastUsedDialogDirectory( "BINARY_GRID", defaultDir );
openEclipseCaseFromFileNames( fileNames );
bool createDefaultView = false;
std::vector<int> caseIds;
openEclipseCaseFromFileNames( fileNames, createDefaultView, caseIds );
}
//--------------------------------------------------------------------------------------------------

View File

@ -103,7 +103,8 @@ void RicNewFaultReactAssessmentFeature::onActionTriggered( bool isChecked )
gridList << frapSettings.outputEclipseFilename();
// load the new grid
int caseId = RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( gridList );
bool createView = true;
int caseId = RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( gridList, createView );
if ( caseId < 0 )
{
QMessageBox::critical( nullptr, "Fault Reactivation Assessment", "Unable to load generated Eclipse grid." );

View File

@ -27,6 +27,7 @@
#include "RicCloseCaseFeature.h"
#include "RicCreateEnsembleWellLogUi.h"
#include "RicImportEnsembleWellLogsFeature.h"
#include "RicImportGeneralDataFeature.h"
#include "RicRecursiveFileSearchDialog.h"
#include "WellPathCommands/RicImportWellPaths.h"
@ -75,7 +76,7 @@ void RicCreateEnsembleWellLogFeature::openDialogAndExecuteCommand()
defaultDir,
pathFilter,
fileNameFilter,
QStringList( ".EGRID" ) );
{ ".GRDECL", ".EGRID" } );
if ( !result.ok || result.files.isEmpty() )
{
@ -84,12 +85,13 @@ void RicCreateEnsembleWellLogFeature::openDialogAndExecuteCommand()
// Use case data from first case
RimEclipseCase* eclipseCase = loadEclipseCase( result.files[0] );
if ( !eclipseCase ) return;
RicCreateEnsembleWellLogUi* ui = RimProject::current()->dialogData()->createEnsembleWellLogUi();
ui->setCaseData( eclipseCase->eclipseCaseData() );
// Automatically selected the well path the dialog was triggered on (if any)
RimWellPath* wellPath = caf::SelectionManager::instance()->selectedItemOfType<RimWellPath>();
auto* wellPath = caf::SelectionManager::instance()->selectedItemOfType<RimWellPath>();
if ( wellPath )
{
ui->setWellPathSource( RicCreateEnsembleWellLogUi::WellPathSource::PROJECT_WELLS );
@ -244,7 +246,7 @@ void RicCreateEnsembleWellLogFeature::executeCommand( const RicCreateEnsembleWel
QString title = QString( "Track %1" ).arg( wellLogPlot->plotCount() );
RimWellLogTrack* wellLogTrack =
RimcWellLogPlot_newWellLogTrack::createWellLogTrack( wellLogPlot, eclipseCase, wellPath, title );
RimEnsembleWellLogCurveSet* ensembleWellLogCurveSet = new RimEnsembleWellLogCurveSet();
auto* ensembleWellLogCurveSet = new RimEnsembleWellLogCurveSet();
ensembleWellLogCurveSet->setEnsembleWellLogs( ensembleWellLog );
ensembleWellLogCurveSet->setColor( color );
ensembleWellLogCurveSet->setWellLogChannelName( property.first );
@ -273,17 +275,18 @@ RimEclipseCase* RicCreateEnsembleWellLogFeature::loadEclipseCase( const QString&
QDir startDir( RiaApplication::instance()->startDir() );
absolutePath = startDir.absoluteFilePath( fileName );
}
bool createView = false;
bool createPlot = false;
auto openResult = RicImportGeneralDataFeature::openEclipseFilesFromFileNames( QStringList( { absolutePath } ),
createPlot,
createView );
RiaImportEclipseCaseTools::FileCaseIdMap fileCaseIdMap;
bool createView = false;
bool doNotShowDialog = true;
bool ok = RiaImportEclipseCaseTools::openEclipseCasesFromFile( QStringList( { absolutePath } ),
createView,
&fileCaseIdMap,
doNotShowDialog );
if ( !ok || fileCaseIdMap.empty() ) return nullptr;
if ( !openResult.createdCaseIds.empty() )
{
return RimProject::current()->eclipseCaseFromCaseId( openResult.createdCaseIds.front() );
}
return RimProject::current()->eclipseCaseFromCaseId( fileCaseIdMap.begin()->second );
return nullptr;
}
//--------------------------------------------------------------------------------------------------

View File

@ -43,7 +43,9 @@ CAF_CMD_SOURCE_INIT( RicImportGeneralDataFeature, "RicImportGeneralDataFeature"
///
//--------------------------------------------------------------------------------------------------
RicImportGeneralDataFeature::OpenCaseResults
RicImportGeneralDataFeature::openEclipseFilesFromFileNames( const QStringList& fileNames, bool doCreateDefaultPlot )
RicImportGeneralDataFeature::openEclipseFilesFromFileNames( const QStringList& fileNames,
bool doCreateDefaultPlot,
bool createDefaultView )
{
CVF_ASSERT( !fileNames.empty() );
@ -73,7 +75,7 @@ RicImportGeneralDataFeature::OpenCaseResults
OpenCaseResults results;
if ( !eclipseCaseFiles.empty() )
{
if ( !openEclipseCaseFromFileNames( eclipseCaseFiles ) )
if ( !openEclipseCaseFromFileNames( eclipseCaseFiles, createDefaultView, results.createdCaseIds ) )
{
return OpenCaseResults();
}
@ -83,7 +85,7 @@ RicImportGeneralDataFeature::OpenCaseResults
}
if ( !eclipseInputFiles.empty() )
{
if ( !openInputEclipseCaseFromFileNames( eclipseInputFiles ) )
if ( !openInputEclipseCaseFromFileNames( eclipseInputFiles, createDefaultView, results.createdCaseIds ) )
{
return OpenCaseResults();
}
@ -219,7 +221,7 @@ void RicImportGeneralDataFeature::openFileDialog( ImportFileType fileTypes )
fileNames.front() );
}
if ( !openEclipseFilesFromFileNames( fileNames, true ) )
if ( !openEclipseFilesFromFileNames( fileNames, true, true ) )
{
RiaLogging::error( QString( "Failed to open file names: %1" ).arg( fileNames.join( ", " ) ) );
}
@ -228,16 +230,18 @@ void RicImportGeneralDataFeature::openFileDialog( ImportFileType fileTypes )
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RicImportGeneralDataFeature::openEclipseCaseFromFileNames( const QStringList& fileNames )
bool RicImportGeneralDataFeature::openEclipseCaseFromFileNames( const QStringList& fileNames,
bool createDefaultView,
std::vector<int>& createdCaseIds )
{
bool createView = true;
bool noDialog = false;
bool noDialog = false;
RiaImportEclipseCaseTools::FileCaseIdMap newCaseFiles;
if ( RiaImportEclipseCaseTools::openEclipseCasesFromFile( fileNames, createView, &newCaseFiles, noDialog ) )
if ( RiaImportEclipseCaseTools::openEclipseCasesFromFile( fileNames, createDefaultView, &newCaseFiles, noDialog ) )
{
for ( const auto& newCaseFileAndId : newCaseFiles )
{
RiaApplication::instance()->addToRecentFiles( newCaseFileAndId.first );
createdCaseIds.push_back( newCaseFileAndId.second );
}
return true;
}
@ -247,12 +251,16 @@ bool RicImportGeneralDataFeature::openEclipseCaseFromFileNames( const QStringLis
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RicImportGeneralDataFeature::openInputEclipseCaseFromFileNames( const QStringList& fileNames )
bool RicImportGeneralDataFeature::openInputEclipseCaseFromFileNames( const QStringList& fileNames,
bool createDefaultView,
std::vector<int>& createdCaseIds )
{
QString fileContainingGrid;
if ( RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( fileNames, &fileContainingGrid ) >= 0 )
auto generatedCaseId = RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( fileNames, &fileContainingGrid );
if ( generatedCaseId >= 0 )
{
RiaApplication::instance()->addToRecentFiles( fileContainingGrid );
createdCaseIds.push_back( generatedCaseId );
return true;
}
return false;

View File

@ -40,15 +40,18 @@ public:
QStringList eclipseInputFiles;
QStringList eclipseSummaryFiles;
std::vector<int> createdCaseIds;
operator bool() const
{
return !( eclipseCaseFiles.empty() && eclipseInputFiles.empty() && eclipseSummaryFiles.empty() );
}
};
static OpenCaseResults openEclipseFilesFromFileNames( const QStringList& fileNames, bool doCreateDefaultPlot );
static QStringList fileNamesFromCaseNames( const QStringList& caseNames );
static QStringList getEclipseFileNamesWithDialog( RiaDefines::ImportFileType fileTypes );
static OpenCaseResults
openEclipseFilesFromFileNames( const QStringList& fileNames, bool doCreateDefaultPlot, bool createDefaultView );
static QStringList fileNamesFromCaseNames( const QStringList& caseNames );
static QStringList getEclipseFileNamesWithDialog( RiaDefines::ImportFileType fileTypes );
protected:
// Overrides
@ -58,7 +61,11 @@ protected:
static void openFileDialog( RiaDefines::ImportFileType fileTypes );
static bool openEclipseCaseFromFileNames( const QStringList& fileNames );
static bool openInputEclipseCaseFromFileNames( const QStringList& fileNames );
static bool openEclipseCaseFromFileNames( const QStringList& fileNames,
bool createDefaultView,
std::vector<int>& createdCaseIds );
static bool openInputEclipseCaseFromFileNames( const QStringList& fileNames,
bool createDefaultView,
std::vector<int>& createdCaseIds );
static bool openSummaryCaseFromFileNames( const QStringList& fileNames, bool doCreateDefaultPlot = true );
};