mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Improve reload and replace of cases
* Move code to from features to helper classes * Ask user if replace case should also happen for the associated grid or summary file
This commit is contained in:
@@ -25,8 +25,6 @@
|
||||
#include "RiaSimWellBranchTools.h"
|
||||
#include "RiaSummaryTools.h"
|
||||
|
||||
#include "RicImportGridModelFromSummaryCaseFeature.h"
|
||||
|
||||
#include "RifReaderEclipseRft.h"
|
||||
|
||||
#include "RigCaseCellResultsData.h"
|
||||
@@ -44,6 +42,7 @@
|
||||
#include "RimPressureDepthData.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimRegularLegendConfig.h"
|
||||
#include "RimReloadCaseTools.h"
|
||||
#include "RimSummaryCase.h"
|
||||
#include "RimSummaryCaseCollection.h"
|
||||
#include "RimTools.h"
|
||||
@@ -896,7 +895,7 @@ QList<caf::PdmOptionItemInfo> RimWellRftPlot::calculateValueOptionsForSources()
|
||||
{
|
||||
if ( summaryCase->rftReader() && summaryCase->rftReader()->wellNames().contains( m_wellPathNameOrSimWellName ) )
|
||||
{
|
||||
auto eclipeGridModel = RicImportGridModelFromSummaryCaseFeature::gridModelFromSummaryCase( summaryCase );
|
||||
auto eclipeGridModel = RimReloadCaseTools::gridModelFromSummaryCase( summaryCase );
|
||||
auto parentEnsemble = summaryCase->firstAncestorOrThisOfType<RimSummaryCaseCollection>();
|
||||
auto addr = RifDataSourceForRftPlt( summaryCase, parentEnsemble, eclipeGridModel );
|
||||
|
||||
|
||||
@@ -460,7 +460,7 @@ void RimEclipseCase::fieldChangedByUi( const caf::PdmFieldHandle* changedField,
|
||||
RimCase::fieldChangedByUi( changedField, oldValue, newValue );
|
||||
if ( changedField == &m_releaseResultMemory )
|
||||
{
|
||||
RimReloadCaseTools::reloadAllEclipseGridData( this );
|
||||
RimReloadCaseTools::reloadEclipseGrid( this );
|
||||
|
||||
m_releaseResultMemory = oldValue.toBool();
|
||||
}
|
||||
|
||||
@@ -18,9 +18,14 @@
|
||||
|
||||
#include "RimReloadCaseTools.h"
|
||||
|
||||
#include "RiaEclipseFileNameTools.h"
|
||||
#include "RiaFractureDefines.h"
|
||||
#include "RiaImportEclipseCaseTools.h"
|
||||
#include "RiaLogging.h"
|
||||
#include "RiaSummaryTools.h"
|
||||
|
||||
#include "ApplicationCommands/RicShowMainWindowFeature.h"
|
||||
|
||||
#include "RigCaseCellResultsData.h"
|
||||
#include "RigEclipseCaseData.h"
|
||||
|
||||
@@ -31,33 +36,39 @@
|
||||
#include "RimEclipseContourMapProjection.h"
|
||||
#include "RimEclipseContourMapView.h"
|
||||
#include "RimEclipseContourMapViewCollection.h"
|
||||
#include "RimEclipseResultCase.h"
|
||||
#include "RimEclipseView.h"
|
||||
#include "RimGridCalculation.h"
|
||||
#include "RimGridCalculationCollection.h"
|
||||
#include "RimMainPlotCollection.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimSummaryCase.h"
|
||||
#include "RimSummaryCaseMainCollection.h"
|
||||
|
||||
#include "Riu3DMainWindowTools.h"
|
||||
|
||||
#include <QFileInfo>
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimReloadCaseTools::reloadAllEclipseData( RimEclipseCase* eclipseCase )
|
||||
void RimReloadCaseTools::reloadEclipseGridAndSummary( RimEclipseCase* eclipseCase )
|
||||
{
|
||||
reloadAllEclipseData( eclipseCase, true );
|
||||
reloadEclipseData( eclipseCase, true );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimReloadCaseTools::reloadAllEclipseGridData( RimEclipseCase* eclipseCase )
|
||||
void RimReloadCaseTools::reloadEclipseGrid( RimEclipseCase* eclipseCase )
|
||||
{
|
||||
reloadAllEclipseData( eclipseCase, false );
|
||||
reloadEclipseData( eclipseCase, false );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimReloadCaseTools::reloadAllEclipseData( RimEclipseCase* eclipseCase, bool reloadSummaryData )
|
||||
void RimReloadCaseTools::reloadEclipseData( RimEclipseCase* eclipseCase, bool reloadSummaryData )
|
||||
{
|
||||
CVF_ASSERT( eclipseCase );
|
||||
|
||||
@@ -85,11 +96,8 @@ void RimReloadCaseTools::reloadAllEclipseData( RimEclipseCase* eclipseCase, bool
|
||||
|
||||
if ( reloadSummaryData )
|
||||
{
|
||||
RimSummaryCaseMainCollection* sumCaseColl = RiaSummaryTools::summaryCaseMainCollection();
|
||||
if ( sumCaseColl )
|
||||
{
|
||||
sumCaseColl->loadAllSummaryCaseData();
|
||||
}
|
||||
auto summaryCase = RimReloadCaseTools::findSummaryCaseFromEclipseResultCase( dynamic_cast<RimEclipseResultCase*>( eclipseCase ) );
|
||||
RiaSummaryTools::reloadSummaryCase( summaryCase );
|
||||
}
|
||||
|
||||
updateAllPlots();
|
||||
@@ -155,6 +163,71 @@ void RimReloadCaseTools::updateAll3dViews( RimEclipseCase* eclipseCase )
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimEclipseCase* RimReloadCaseTools::gridModelFromSummaryCase( const RimSummaryCase* summaryCase )
|
||||
{
|
||||
if ( summaryCase )
|
||||
{
|
||||
QString summaryFileName = summaryCase->summaryHeaderFilename();
|
||||
RiaEclipseFileNameTools fileHelper( summaryFileName );
|
||||
|
||||
auto candidateGridFileName = fileHelper.findRelatedGridFile();
|
||||
return RimProject::current()->eclipseCaseFromGridFileName( candidateGridFileName );
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryCase* RimReloadCaseTools::findSummaryCaseFromEclipseResultCase( const RimEclipseResultCase* eclipseResultCase )
|
||||
{
|
||||
RiaEclipseFileNameTools helper( eclipseResultCase->gridFileName() );
|
||||
|
||||
RimSummaryCaseMainCollection* sumCaseColl = RiaSummaryTools::summaryCaseMainCollection();
|
||||
|
||||
auto summaryFileNames = helper.findSummaryFileCandidates();
|
||||
for ( const auto& fileName : summaryFileNames )
|
||||
{
|
||||
return sumCaseColl->findTopLevelSummaryCaseFromFileName( fileName );
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimReloadCaseTools::openOrImportGridModelFromSummaryCase( const RimSummaryCase* summaryCase )
|
||||
{
|
||||
if ( !summaryCase ) return false;
|
||||
|
||||
if ( findGridModelAndActivateFirstView( summaryCase ) ) return true;
|
||||
|
||||
QString summaryFileName = summaryCase->summaryHeaderFilename();
|
||||
RiaEclipseFileNameTools fileHelper( summaryFileName );
|
||||
auto candidateGridFileName = fileHelper.findRelatedGridFile();
|
||||
|
||||
if ( QFileInfo::exists( candidateGridFileName ) )
|
||||
{
|
||||
bool createView = true;
|
||||
auto id = RiaImportEclipseCaseTools::openEclipseCaseFromFile( candidateGridFileName, createView );
|
||||
if ( id > -1 )
|
||||
{
|
||||
RiaLogging::info( QString( "Imported %1" ).arg( candidateGridFileName ) );
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
RiaLogging::info( QString( "No grid case found based on summary file %1" ).arg( summaryFileName ) );
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -162,3 +235,24 @@ void RimReloadCaseTools::updateAllPlots()
|
||||
{
|
||||
RimMainPlotCollection::current()->loadDataAndUpdateAllPlots();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimReloadCaseTools::findGridModelAndActivateFirstView( const RimSummaryCase* summaryCase )
|
||||
{
|
||||
auto gridCase = RimReloadCaseTools::gridModelFromSummaryCase( summaryCase );
|
||||
if ( gridCase )
|
||||
{
|
||||
if ( !gridCase->gridViews().empty() )
|
||||
{
|
||||
RicShowMainWindowFeature::showMainWindow();
|
||||
|
||||
Riu3DMainWindowTools::selectAsCurrentItem( gridCase->gridViews().front() );
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
|
||||
class RimEclipseCase;
|
||||
class RigEclipseCaseData;
|
||||
class RimSummaryCase;
|
||||
class RimEclipseResultCase;
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
@@ -28,15 +30,21 @@ class RimReloadCaseTools
|
||||
{
|
||||
public:
|
||||
// Reload all eclipse data, both grid and summary
|
||||
static void reloadAllEclipseData( RimEclipseCase* eclipseCase );
|
||||
static void reloadEclipseGridAndSummary( RimEclipseCase* eclipseCase );
|
||||
|
||||
// Reload grid data, but not summary
|
||||
static void reloadAllEclipseGridData( RimEclipseCase* eclipseCase );
|
||||
static void reloadEclipseGrid( RimEclipseCase* eclipseCase );
|
||||
|
||||
static void updateAll3dViews( RimEclipseCase* eclipseCase );
|
||||
|
||||
static RimEclipseCase* gridModelFromSummaryCase( const RimSummaryCase* summaryCase );
|
||||
static RimSummaryCase* findSummaryCaseFromEclipseResultCase( const RimEclipseResultCase* eclResCase );
|
||||
static bool openOrImportGridModelFromSummaryCase( const RimSummaryCase* summaryCase );
|
||||
|
||||
private:
|
||||
static void reloadAllEclipseData( RimEclipseCase* eclipseCase, bool reloadSummaryData );
|
||||
static void reloadEclipseData( RimEclipseCase* eclipseCase, bool reloadSummaryData );
|
||||
static void clearAllGridData( RigEclipseCaseData* eclipseCaseData );
|
||||
static void updateAllPlots();
|
||||
|
||||
static bool findGridModelAndActivateFirstView( const RimSummaryCase* summaryCase );
|
||||
};
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "RimEclipseResultCase.h"
|
||||
#include "RimOilField.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimReloadCaseTools.h"
|
||||
#include "RimSimWellInView.h"
|
||||
#include "RimSimWellInViewCollection.h"
|
||||
#include "RimSummaryCaseMainCollection.h"
|
||||
@@ -45,13 +46,10 @@ RimSummaryCase* RimSimWellInViewTools::summaryCaseForWell( RimSimWellInView* wel
|
||||
RimProject* project = RimProject::current();
|
||||
if ( !project ) return nullptr;
|
||||
|
||||
RimSummaryCaseMainCollection* sumCaseColl = project->activeOilField() ? project->activeOilField()->summaryCaseMainCollection() : nullptr;
|
||||
if ( !sumCaseColl ) return nullptr;
|
||||
|
||||
auto eclCase = well->firstAncestorOrThisOfType<RimEclipseResultCase>();
|
||||
if ( eclCase )
|
||||
{
|
||||
return sumCaseColl->findSummaryCaseFromEclipseResultCase( eclCase );
|
||||
return RimReloadCaseTools::findSummaryCaseFromEclipseResultCase( eclCase );
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
|
||||
@@ -289,7 +289,7 @@ void RimTimeStepFilter::fieldChangedByUi( const caf::PdmFieldHandle* changedFiel
|
||||
|
||||
if ( rimEclipseResultCase )
|
||||
{
|
||||
RimReloadCaseTools::reloadAllEclipseGridData( rimEclipseResultCase );
|
||||
RimReloadCaseTools::reloadEclipseGrid( rimEclipseResultCase );
|
||||
}
|
||||
else if ( rimGeoMechCase )
|
||||
{
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
#include "RimRftCase.h"
|
||||
|
||||
#include "RicReloadSummaryCaseFeature.h"
|
||||
#include "RiaSummaryTools.h"
|
||||
|
||||
#include "RimMainPlotCollection.h"
|
||||
#include "RimSummaryCase.h"
|
||||
@@ -84,7 +84,7 @@ void RimRftCase::fieldChangedByUi( const caf::PdmFieldHandle* changedField, cons
|
||||
{
|
||||
auto parentCase = firstAncestorOfType<RimSummaryCase>();
|
||||
|
||||
if ( parentCase ) RicReloadSummaryCaseFeature::reloadSummaryCase( parentCase );
|
||||
if ( parentCase ) RiaSummaryTools::reloadSummaryCase( parentCase );
|
||||
|
||||
RimMainPlotCollection::current()->loadDataAndUpdateAllPlots();
|
||||
}
|
||||
|
||||
@@ -110,26 +110,6 @@ RimSummaryCaseMainCollection::~RimSummaryCaseMainCollection()
|
||||
m_caseCollections.deleteChildrenAsync();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryCase* RimSummaryCaseMainCollection::findSummaryCaseFromEclipseResultCase( const RimEclipseResultCase* eclipseResultCase ) const
|
||||
{
|
||||
RiaEclipseFileNameTools helper( eclipseResultCase->gridFileName() );
|
||||
|
||||
auto summaryFileName = helper.findSummaryFileCandidates();
|
||||
for ( const auto& candidateFileName : summaryFileName )
|
||||
{
|
||||
auto summaryCase = findTopLevelSummaryCaseFromFileName( candidateFileName );
|
||||
if ( summaryCase )
|
||||
{
|
||||
return summaryCase;
|
||||
}
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -54,7 +54,6 @@ public:
|
||||
std::vector<RimSummaryCase*> createSummaryCasesFromFileInfos( const std::vector<RifSummaryCaseFileResultInfo>& summaryHeaderFileInfos,
|
||||
bool showProgress = false );
|
||||
|
||||
RimSummaryCase* findSummaryCaseFromEclipseResultCase( const RimEclipseResultCase* eclResCase ) const;
|
||||
RimSummaryCase* findTopLevelSummaryCaseFromFileName( const QString& fileName ) const;
|
||||
|
||||
void addCases( const std::vector<RimSummaryCase*> cases );
|
||||
|
||||
Reference in New Issue
Block a user