mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#8033 Ensemble Well Log: Allow import from grdecl files
This commit is contained in:
parent
17c5f473be
commit
33221e7e07
@ -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 );
|
||||
}
|
||||
|
||||
|
@ -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" ) )
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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 );
|
||||
|
@ -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 );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -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." );
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -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;
|
||||
|
@ -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 );
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user