From 015890841f2d34c187c8e96609899e9452fd0fbc Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Fri, 3 Mar 2023 15:28:34 +0100 Subject: [PATCH] Remove special summary case connected to a grid model * Remove use of RimGridSummaryCase * Remove unused summary plot filter text * Delete unused files --- .../Application/RiaEclipseFileNameTools.cpp | 20 +- .../Application/RiaEclipseFileNameTools.h | 8 +- .../Tools/RiaImportEclipseCaseTools.cpp | 106 ++- .../RicPlotProductionRateFeature.cpp | 34 +- .../RicPlotProductionRateFeature.h | 18 +- .../Commands/RicCloseCaseFeature.cpp | 19 - .../RicConvertGroupToEnsembleFeature.cpp | 1 - .../Commands/RicImportEnsembleFeature.cpp | 1 - .../Commands/RicImportSummaryCaseFeature.cpp | 1 - .../Commands/RicImportSummaryCasesFeature.cpp | 1 - .../Commands/RicImportSummaryGroupFeature.cpp | 1 - .../Commands/RicReplaceCaseFeature.cpp | 13 +- .../RicSummaryPlotFeatureImpl.cpp | 13 +- .../AnalysisPlots/RimAnalysisPlot.cpp | 5 - .../ProjectDataModel/RimProject.cpp | 1 - .../ProjectDataModel/RimSimWellInView.cpp | 2 +- .../RimSimWellInViewCollection.cpp | 8 +- .../RimSimWellInViewTools.cpp | 9 +- .../ProjectDataModel/RimSimWellInViewTools.h | 3 +- .../Summary/CMakeLists_files.cmake | 4 - .../Summary/RimGridSummaryCase.cpp | 221 ------ .../Summary/RimGridSummaryCase.h | 73 -- .../Summary/RimSummaryCaseCollection.cpp | 1 - .../Summary/RimSummaryCaseMainCollection.cpp | 138 +--- .../Summary/RimSummaryCaseMainCollection.h | 3 - .../Summary/RimSummaryPlot.cpp | 40 -- .../ProjectDataModel/Summary/RimSummaryPlot.h | 6 +- ...RimSummaryPlotFilterTextCurveSetEditor.cpp | 641 ------------------ .../RimSummaryPlotFilterTextCurveSetEditor.h | 72 -- .../UserInterface/RiuPlotMainWindow.cpp | 1 - 30 files changed, 120 insertions(+), 1344 deletions(-) delete mode 100644 ApplicationLibCode/ProjectDataModel/Summary/RimGridSummaryCase.cpp delete mode 100644 ApplicationLibCode/ProjectDataModel/Summary/RimGridSummaryCase.h delete mode 100644 ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotFilterTextCurveSetEditor.cpp delete mode 100644 ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotFilterTextCurveSetEditor.h diff --git a/ApplicationLibCode/Application/RiaEclipseFileNameTools.cpp b/ApplicationLibCode/Application/RiaEclipseFileNameTools.cpp index 048e9774f9..5e7a11869c 100644 --- a/ApplicationLibCode/Application/RiaEclipseFileNameTools.cpp +++ b/ApplicationLibCode/Application/RiaEclipseFileNameTools.cpp @@ -31,6 +31,7 @@ void caf::AppEnum::setUp() addItem( RiaEclipseFileNameTools::EclipseFileType::ECLIPSE_UNRST, "UNRST", "Unified Restart" ); addItem( RiaEclipseFileNameTools::EclipseFileType::ECLIPSE_SMSPEC, "SMSPEC", "Summary Specification" ); addItem( RiaEclipseFileNameTools::EclipseFileType::ECLIPSE_UNSMRY, "UNSMR", "Summary Vectors" ); + addItem( RiaEclipseFileNameTools::EclipseFileType::ECLIPSE_ESMRY, "ESMRY", "ESRMY Summary Vectors" ); addItem( RiaEclipseFileNameTools::EclipseFileType::RESINSIGHT_PROJECT, "rsp", "ResInsight Project" ); } @@ -47,14 +48,6 @@ RiaEclipseFileNameTools::RiaEclipseFileNameTools( const QString& inputFilePath ) m_baseName = fi.absolutePath() + "/" + fi.baseName(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -QString RiaEclipseFileNameTools::findRelatedSummarySpecFile() -{ - return relatedFilePath( EclipseFileType::ECLIPSE_SMSPEC ); -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -69,6 +62,17 @@ QString RiaEclipseFileNameTools::findRelatedGridFile() return relatedFilePath( EclipseFileType::ECLIPSE_GRID ); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +std::vector RiaEclipseFileNameTools::findSummaryFileCandidates() +{ + auto smryCandidate = relatedFilePath( EclipseFileType::ECLIPSE_SMSPEC ); + auto esmryCandidate = relatedFilePath( EclipseFileType::ECLIPSE_ESMRY ); + + return { smryCandidate, esmryCandidate }; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/Application/RiaEclipseFileNameTools.h b/ApplicationLibCode/Application/RiaEclipseFileNameTools.h index 745a3d3ad0..8a09ab9fc3 100644 --- a/ApplicationLibCode/Application/RiaEclipseFileNameTools.h +++ b/ApplicationLibCode/Application/RiaEclipseFileNameTools.h @@ -38,6 +38,7 @@ public: ECLIPSE_UNRST, ECLIPSE_SMSPEC, ECLIPSE_UNSMRY, + ECLIPSE_ESMRY, RESINSIGHT_PROJECT, UNKNOWN }; @@ -45,9 +46,10 @@ public: public: explicit RiaEclipseFileNameTools( const QString& fileName ); - QString findRelatedGridFile(); - QString findRelatedSummarySpecFile(); - QString findRelatedDataFile(); + // Returns both files ending with SMSPEC and ESMRY + std::vector findSummaryFileCandidates(); + QString findRelatedGridFile(); + QString findRelatedDataFile(); private: QString relatedFilePath( EclipseFileType fileType ) const; diff --git a/ApplicationLibCode/Application/Tools/RiaImportEclipseCaseTools.cpp b/ApplicationLibCode/Application/Tools/RiaImportEclipseCaseTools.cpp index 1b7104f30f..ccd0c91bf6 100644 --- a/ApplicationLibCode/Application/Tools/RiaImportEclipseCaseTools.cpp +++ b/ApplicationLibCode/Application/Tools/RiaImportEclipseCaseTools.cpp @@ -42,7 +42,6 @@ #include "RimEclipseResultCase.h" #include "RimEclipseView.h" #include "RimFileSummaryCase.h" -#include "RimGridSummaryCase.h" #include "RimIdenticalGridCaseGroup.h" #include "RimMainPlotCollection.h" #include "RimOilField.h" @@ -122,72 +121,61 @@ bool RiaImportEclipseCaseTools::openEclipseCasesFromFile( const QStringList& for ( RimSummaryCase* newSumCase : candidateCases ) { RimSummaryCaseCollection* existingCollection = nullptr; - QString gridCaseFile = RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile( newSumCase->summaryHeaderFilename() ); - RimEclipseCase* gridCase = project->eclipseCaseFromGridFileName( gridCaseFile ); - if ( gridCase ) + auto existingSummaryCase = sumCaseColl->findSummaryCaseFromFileName( newSumCase->summaryHeaderFilename() ); + if ( existingSummaryCase ) { - RimSummaryCase* existingSummaryCase = sumCaseColl->findSummaryCaseFromFileName( newSumCase->summaryHeaderFilename() ); - auto* existingGridSummaryCase = dynamic_cast( existingSummaryCase ); - auto* existingFileSummaryCase = dynamic_cast( existingSummaryCase ); - if ( existingGridSummaryCase ) - { - duplicatedCases.push_back( newSumCase ); - continue; - } - else if ( existingFileSummaryCase ) - { - existingFileSummaryCase->firstAncestorOrThisOfType( existingCollection ); + existingSummaryCase->firstAncestorOrThisOfType( existingCollection ); - // Replace file summary case pointers in Rft Curves - std::vector rftCurves; - existingFileSummaryCase->objectsWithReferringPtrFieldsOfType( rftCurves ); - for ( RimWellLogRftCurve* curve : rftCurves ) + // Replace file summary case pointers in Rft Curves + std::vector rftCurves; + existingSummaryCase->objectsWithReferringPtrFieldsOfType( rftCurves ); + for ( RimWellLogRftCurve* curve : rftCurves ) + { + if ( curve->summaryCase() == existingSummaryCase ) { - if ( curve->summaryCase() == existingSummaryCase ) + curve->setSummaryCase( newSumCase ); + } + } + + // Replace all occurrences of file sum with ecl sum + + std::vector objects; + existingSummaryCase->objectsWithReferringPtrFieldsOfType( objects ); + + // UI settings of a curve filter is updated based + // on the new case association for the curves in the curve filter + // UI is updated by loadDataAndUpdate() + + for ( RimSummaryCurve* summaryCurve : objects ) + { + if ( summaryCurve ) + { + if ( summaryCurve->summaryCaseX() == existingSummaryCase ) { - curve->setSummaryCase( newSumCase ); + summaryCurve->setSummaryCaseX( newSumCase ); + } + if ( summaryCurve->summaryCaseY() == existingSummaryCase ) + { + summaryCurve->setSummaryCaseY( newSumCase ); + } + + RimSummaryCurveCollection* parentCollection = nullptr; + summaryCurve->firstAncestorOrThisOfType( parentCollection ); + if ( parentCollection ) + { + parentCollection->loadDataAndUpdate( true ); + parentCollection->updateConnectedEditors(); + break; } } - - // Replace all occurrences of file sum with ecl sum - - std::vector objects; - existingFileSummaryCase->objectsWithReferringPtrFieldsOfType( objects ); - - // UI settings of a curve filter is updated based - // on the new case association for the curves in the curve filter - // UI is updated by loadDataAndUpdate() - - for ( RimSummaryCurve* summaryCurve : objects ) - { - if ( summaryCurve ) - { - if ( summaryCurve->summaryCaseX() == existingSummaryCase ) - { - summaryCurve->setSummaryCaseX( newSumCase ); - } - if ( summaryCurve->summaryCaseY() == existingSummaryCase ) - { - summaryCurve->setSummaryCaseY( newSumCase ); - } - - RimSummaryCurveCollection* parentCollection = nullptr; - summaryCurve->firstAncestorOrThisOfType( parentCollection ); - if ( parentCollection ) - { - parentCollection->loadDataAndUpdate( true ); - parentCollection->updateConnectedEditors(); - break; - } - } - } - - // Remove existing case - sumCaseColl->removeCase( existingFileSummaryCase ); - - duplicatedCases.push_back( existingFileSummaryCase ); } + + // Remove existing case + sumCaseColl->removeCase( existingSummaryCase ); + + duplicatedCases.push_back( existingSummaryCase ); } + if ( existingCollection ) { existingCollection->addCase( newSumCase ); diff --git a/ApplicationLibCode/Commands/FlowCommands/RicPlotProductionRateFeature.cpp b/ApplicationLibCode/Commands/FlowCommands/RicPlotProductionRateFeature.cpp index 08f2d2ef3f..96093b1472 100644 --- a/ApplicationLibCode/Commands/FlowCommands/RicPlotProductionRateFeature.cpp +++ b/ApplicationLibCode/Commands/FlowCommands/RicPlotProductionRateFeature.cpp @@ -30,12 +30,12 @@ #include "RiaSummaryTools.h" #include "Rim3dView.h" #include "RimEclipseResultCase.h" -#include "RimGridSummaryCase.h" #include "RimMainPlotCollection.h" #include "RimOilField.h" #include "RimProject.h" #include "RimSimWellInView.h" #include "RimSimWellInViewTools.h" +#include "RimSummaryCase.h" #include "RimSummaryCaseMainCollection.h" #include "RimSummaryCurve.h" #include "RimSummaryCurveAppearanceCalculator.h" @@ -60,8 +60,8 @@ bool RicPlotProductionRateFeature::isCommandEnabled() for ( RimSimWellInView* well : collection ) { - RimGridSummaryCase* gridSummaryCase = RimSimWellInViewTools::gridSummaryCaseForWell( well ); - if ( gridSummaryCase ) + auto summaryCase = RimSimWellInViewTools::summaryCaseForWell( well ); + if ( summaryCase ) { return true; } @@ -88,8 +88,8 @@ void RicPlotProductionRateFeature::onActionTriggered( bool isChecked ) for ( RimSimWellInView* well : collection ) { - RimGridSummaryCase* gridSummaryCase = RimSimWellInViewTools::gridSummaryCaseForWell( well ); - if ( !gridSummaryCase ) continue; + auto summaryCase = RimSimWellInViewTools::summaryCaseForWell( well ); + if ( !summaryCase ) continue; QString description = "Well Production Rates : "; @@ -115,7 +115,7 @@ void RicPlotProductionRateFeature::onActionTriggered( bool isChecked ) QString parameterName = "WOIR"; RicPlotProductionRateFeature::addSummaryCurve( plot, well, - gridSummaryCase, + summaryCase, parameterName, plotAxis, RimSummaryCurveAppearanceCalculator::cycledGreenColor( 0 ) ); @@ -126,7 +126,7 @@ void RicPlotProductionRateFeature::onActionTriggered( bool isChecked ) QString parameterName = "WWIR"; RicPlotProductionRateFeature::addSummaryCurve( plot, well, - gridSummaryCase, + summaryCase, parameterName, plotAxis, RimSummaryCurveAppearanceCalculator::cycledBlueColor( 0 ) ); @@ -137,7 +137,7 @@ void RicPlotProductionRateFeature::onActionTriggered( bool isChecked ) QString parameterName = "WGIR"; RicPlotProductionRateFeature::addSummaryCurve( plot, well, - gridSummaryCase, + summaryCase, parameterName, plotAxis, RimSummaryCurveAppearanceCalculator::cycledRedColor( 0 ) ); @@ -154,7 +154,7 @@ void RicPlotProductionRateFeature::onActionTriggered( bool isChecked ) QString parameterName = "WOPR"; RicPlotProductionRateFeature::addSummaryCurve( plot, well, - gridSummaryCase, + summaryCase, parameterName, plotAxis, RimSummaryCurveAppearanceCalculator::cycledGreenColor( 0 ) ); @@ -165,7 +165,7 @@ void RicPlotProductionRateFeature::onActionTriggered( bool isChecked ) QString parameterName = "WWPR"; RicPlotProductionRateFeature::addSummaryCurve( plot, well, - gridSummaryCase, + summaryCase, parameterName, plotAxis, RimSummaryCurveAppearanceCalculator::cycledBlueColor( 0 ) ); @@ -176,7 +176,7 @@ void RicPlotProductionRateFeature::onActionTriggered( bool isChecked ) QString parameterName = "WGPR"; RicPlotProductionRateFeature::addSummaryCurve( plot, well, - gridSummaryCase, + summaryCase, parameterName, plotAxis, RimSummaryCurveAppearanceCalculator::cycledRedColor( 0 ) ); @@ -192,7 +192,7 @@ void RicPlotProductionRateFeature::onActionTriggered( bool isChecked ) QString parameterName = "WTHP"; RicPlotProductionRateFeature::addSummaryCurve( plot, well, - gridSummaryCase, + summaryCase, parameterName, plotAxis, RimSummaryCurveAppearanceCalculator::cycledNoneRGBBrColor( 0 ) ); @@ -202,7 +202,7 @@ void RicPlotProductionRateFeature::onActionTriggered( bool isChecked ) QString parameterName = "WBHP"; RicPlotProductionRateFeature::addSummaryCurve( plot, well, - gridSummaryCase, + summaryCase, parameterName, plotAxis, RimSummaryCurveAppearanceCalculator::cycledNoneRGBBrColor( 1 ) ); @@ -240,13 +240,13 @@ void RicPlotProductionRateFeature::setupActionLook( QAction* actionToSetup ) //-------------------------------------------------------------------------------------------------- RimSummaryCurve* RicPlotProductionRateFeature::addSummaryCurve( RimSummaryPlot* plot, const RimSimWellInView* well, - RimGridSummaryCase* gridSummaryCase, + RimSummaryCase* summaryCase, const QString& vectorName, RiaDefines::PlotAxis plotAxis, const cvf::Color3f& color ) { CVF_ASSERT( plot ); - CVF_ASSERT( gridSummaryCase ); + CVF_ASSERT( summaryCase ); CVF_ASSERT( well ); RifEclipseSummaryAddress addr( RifEclipseSummaryAddress::SUMMARY_WELL, @@ -264,7 +264,7 @@ RimSummaryCurve* RicPlotProductionRateFeature::addSummaryCurve( RimSummaryPlot* false, -1 ); - if ( !gridSummaryCase->summaryReader()->hasAddress( addr ) ) + if ( !summaryCase->summaryReader()->hasAddress( addr ) ) { return nullptr; } @@ -272,7 +272,7 @@ RimSummaryCurve* RicPlotProductionRateFeature::addSummaryCurve( RimSummaryPlot* RimSummaryCurve* newCurve = new RimSummaryCurve(); plot->addCurveAndUpdate( newCurve ); - newCurve->setSummaryCaseY( gridSummaryCase ); + newCurve->setSummaryCaseY( summaryCase ); newCurve->setSummaryAddressYAndApplyInterpolation( addr ); newCurve->setColor( color ); newCurve->setLeftOrRightAxisY( RiuPlotAxis( plotAxis ) ); diff --git a/ApplicationLibCode/Commands/FlowCommands/RicPlotProductionRateFeature.h b/ApplicationLibCode/Commands/FlowCommands/RicPlotProductionRateFeature.h index ffc7b517ab..d3a1ab4f0e 100644 --- a/ApplicationLibCode/Commands/FlowCommands/RicPlotProductionRateFeature.h +++ b/ApplicationLibCode/Commands/FlowCommands/RicPlotProductionRateFeature.h @@ -23,7 +23,7 @@ #include "RiaPlotDefines.h" #include "RimFlowDiagSolution.h" -class RimGridSummaryCase; +class RimSummaryCase; class RimSimWellInView; class RimSummaryCurve; class RimSummaryPlot; @@ -41,12 +41,12 @@ protected: void setupActionLook( QAction* actionToSetup ) override; private: - static RimGridSummaryCase* gridSummaryCaseForWell( RimSimWellInView* well ); - static bool isInjector( RimSimWellInView* well ); - static RimSummaryCurve* addSummaryCurve( RimSummaryPlot* plot, - const RimSimWellInView* well, - RimGridSummaryCase* gridSummaryCase, - const QString& vectorName, - RiaDefines::PlotAxis plotAxis, - const cvf::Color3f& color ); + static RimSummaryCase* gridSummaryCaseForWell( RimSimWellInView* well ); + static bool isInjector( RimSimWellInView* well ); + static RimSummaryCurve* addSummaryCurve( RimSummaryPlot* plot, + const RimSimWellInView* well, + RimSummaryCase* summaryCase, + const QString& vectorName, + RiaDefines::PlotAxis plotAxis, + const cvf::Color3f& color ); }; diff --git a/ApplicationLibCode/Commands/RicCloseCaseFeature.cpp b/ApplicationLibCode/Commands/RicCloseCaseFeature.cpp index eb7c0d45fa..a7fea36eba 100644 --- a/ApplicationLibCode/Commands/RicCloseCaseFeature.cpp +++ b/ApplicationLibCode/Commands/RicCloseCaseFeature.cpp @@ -27,7 +27,6 @@ #include "RimEclipseStatisticsCase.h" #include "RimGeoMechCase.h" #include "RimGeoMechModels.h" -#include "RimGridSummaryCase.h" #include "RimIdenticalGridCaseGroup.h" #include "RimMainPlotCollection.h" #include "RimOilField.h" @@ -185,24 +184,6 @@ void RicCloseCaseFeature::deleteEclipseCase( RimEclipseCase* eclipseCase ) removeCaseFromAllGroups( eclipseCase ); } - RimEclipseResultCase* resultCase = dynamic_cast( eclipseCase ); - if ( resultCase ) - { - RimProject* project = RimProject::current(); - RimSummaryCaseMainCollection* sumCaseColl = project->activeOilField() ? project->activeOilField()->summaryCaseMainCollection() - : nullptr; - if ( sumCaseColl ) - { - RimSummaryCase* summaryCase = sumCaseColl->findSummaryCaseFromEclipseResultCase( resultCase ); - if ( summaryCase ) - { - RimGridSummaryCase* gridSummaryCase = dynamic_cast( summaryCase ); - sumCaseColl->convertGridSummaryCasesToFileSummaryCases( gridSummaryCase ); - sumCaseColl->updateConnectedEditors(); - } - } - } - delete eclipseCase; { diff --git a/ApplicationLibCode/Commands/RicConvertGroupToEnsembleFeature.cpp b/ApplicationLibCode/Commands/RicConvertGroupToEnsembleFeature.cpp index 7e2a619e77..d038cb354b 100644 --- a/ApplicationLibCode/Commands/RicConvertGroupToEnsembleFeature.cpp +++ b/ApplicationLibCode/Commands/RicConvertGroupToEnsembleFeature.cpp @@ -25,7 +25,6 @@ #include "RifSummaryCaseRestartSelector.h" -#include "RimGridSummaryCase.h" #include "RimMainPlotCollection.h" #include "RimOilField.h" #include "RimProject.h" diff --git a/ApplicationLibCode/Commands/RicImportEnsembleFeature.cpp b/ApplicationLibCode/Commands/RicImportEnsembleFeature.cpp index ff6491007f..f92fff7a5a 100644 --- a/ApplicationLibCode/Commands/RicImportEnsembleFeature.cpp +++ b/ApplicationLibCode/Commands/RicImportEnsembleFeature.cpp @@ -31,7 +31,6 @@ #include "RifSummaryCaseRestartSelector.h" #include "RimEnsembleCurveSet.h" -#include "RimGridSummaryCase.h" #include "RimMainPlotCollection.h" #include "RimOilField.h" #include "RimProject.h" diff --git a/ApplicationLibCode/Commands/RicImportSummaryCaseFeature.cpp b/ApplicationLibCode/Commands/RicImportSummaryCaseFeature.cpp index d43a020b53..0b4a134d2c 100644 --- a/ApplicationLibCode/Commands/RicImportSummaryCaseFeature.cpp +++ b/ApplicationLibCode/Commands/RicImportSummaryCaseFeature.cpp @@ -21,7 +21,6 @@ #include "RiaFilePathTools.h" #include "RiaPreferences.h" -#include "RimGridSummaryCase.h" #include "RimMainPlotCollection.h" #include "RimOilField.h" #include "RimProject.h" diff --git a/ApplicationLibCode/Commands/RicImportSummaryCasesFeature.cpp b/ApplicationLibCode/Commands/RicImportSummaryCasesFeature.cpp index e7844908c8..0897503bf2 100644 --- a/ApplicationLibCode/Commands/RicImportSummaryCasesFeature.cpp +++ b/ApplicationLibCode/Commands/RicImportSummaryCasesFeature.cpp @@ -29,7 +29,6 @@ #include "RifSummaryCaseRestartSelector.h" #include "RimEnsembleCurveSet.h" -#include "RimGridSummaryCase.h" #include "RimMainPlotCollection.h" #include "RimOilField.h" #include "RimProject.h" diff --git a/ApplicationLibCode/Commands/RicImportSummaryGroupFeature.cpp b/ApplicationLibCode/Commands/RicImportSummaryGroupFeature.cpp index b66cb853b7..1da26268f5 100644 --- a/ApplicationLibCode/Commands/RicImportSummaryGroupFeature.cpp +++ b/ApplicationLibCode/Commands/RicImportSummaryGroupFeature.cpp @@ -26,7 +26,6 @@ #include "RifSummaryCaseRestartSelector.h" -#include "RimGridSummaryCase.h" #include "RimMainPlotCollection.h" #include "RimOilField.h" #include "RimProject.h" diff --git a/ApplicationLibCode/Commands/RicReplaceCaseFeature.cpp b/ApplicationLibCode/Commands/RicReplaceCaseFeature.cpp index 3c702ad106..ccc50ffa5d 100644 --- a/ApplicationLibCode/Commands/RicReplaceCaseFeature.cpp +++ b/ApplicationLibCode/Commands/RicReplaceCaseFeature.cpp @@ -26,7 +26,6 @@ #include "RimEclipseCase.h" #include "RimEclipseResultCase.h" -#include "RimGridSummaryCase.h" #include "RimReloadCaseTools.h" #include "RimSummaryCase.h" #include "RimSummaryCaseMainCollection.h" @@ -101,14 +100,12 @@ void RicReplaceCaseFeature::onActionTriggered( bool isChecked ) RimSummaryCaseMainCollection* sumCaseColl = RiaSummaryTools::summaryCaseMainCollection(); if ( sumCaseColl ) { - RimGridSummaryCase* gridSummaryCase = - dynamic_cast( sumCaseColl->findSummaryCaseFromEclipseResultCase( selectedCase ) ); - if ( gridSummaryCase ) + auto summaryCase = sumCaseColl->findSummaryCaseFromEclipseResultCase( selectedCase ); + if ( summaryCase ) { - gridSummaryCase->setAssociatedEclipseCase( selectedCase ); - gridSummaryCase->updateAutoShortName(); - gridSummaryCase->createSummaryReaderInterface(); - gridSummaryCase->createRftReaderInterface(); + summaryCase->updateAutoShortName(); + summaryCase->createSummaryReaderInterface(); + summaryCase->createRftReaderInterface(); RimSummaryMultiPlotCollection* summaryPlotColl = RiaSummaryTools::summaryMultiPlotCollection(); for ( RimSummaryMultiPlot* multiPlot : summaryPlotColl->multiPlots() ) diff --git a/ApplicationLibCode/Commands/SummaryPlotCommands/RicSummaryPlotFeatureImpl.cpp b/ApplicationLibCode/Commands/SummaryPlotCommands/RicSummaryPlotFeatureImpl.cpp index e2a3a0484b..e04d52f3ff 100644 --- a/ApplicationLibCode/Commands/SummaryPlotCommands/RicSummaryPlotFeatureImpl.cpp +++ b/ApplicationLibCode/Commands/SummaryPlotCommands/RicSummaryPlotFeatureImpl.cpp @@ -219,15 +219,16 @@ void RicSummaryPlotFeatureImpl::createSummaryPlotsFromArgumentLine( const QStrin else { RiaEclipseFileNameTools nameTool( arguments[optionIdx] ); - QString smSpecFileName = nameTool.findRelatedSummarySpecFile(); - QString gridFileName = nameTool.findRelatedGridFile(); - if ( smSpecFileName != "" || gridFileName != "" ) + for ( const auto& fileName : nameTool.findSummaryFileCandidates() ) { - if ( smSpecFileName != "" ) summaryFileNames.push_back( smSpecFileName ); - if ( gridFileName != "" ) gridFileNames.push_back( gridFileName ); + if ( !fileName.isEmpty() ) summaryFileNames.push_back( fileName ); } - else + + QString gridFileName = nameTool.findRelatedGridFile(); + if ( !gridFileName.isEmpty() ) gridFileNames.push_back( gridFileName ); + + if ( summaryFileNames.empty() && gridFileNames.empty() ) { // Remove space from address string https://github.com/OPM/ResInsight/issues/9707 diff --git a/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.cpp b/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.cpp index 8f89cff31d..c0678e6d31 100644 --- a/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.cpp @@ -1427,11 +1427,6 @@ void RimAnalysisPlot::addDataToChartBuilder( RiuGroupedBarChartBuilder& chartBui if ( !reader ) continue; - // Todo: - // If curveDef.summaryCase() is a RimGridSummaryCase and we are using summary item as legend and the summary - // items are wells, then: - /// use color from eclCase->defaultWellColor( wellName ); - std::vector timeSteps; std::vector values; diff --git a/ApplicationLibCode/ProjectDataModel/RimProject.cpp b/ApplicationLibCode/ProjectDataModel/RimProject.cpp index 5fbaf8715b..214f4816da 100644 --- a/ApplicationLibCode/ProjectDataModel/RimProject.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimProject.cpp @@ -58,7 +58,6 @@ #include "RimGeoMechModels.h" #include "RimGridCalculationCollection.h" #include "RimGridCrossPlotCollection.h" -#include "RimGridSummaryCase.h" #include "RimGridView.h" #include "RimIdenticalGridCaseGroup.h" #include "RimMainPlotCollection.h" diff --git a/ApplicationLibCode/ProjectDataModel/RimSimWellInView.cpp b/ApplicationLibCode/ProjectDataModel/RimSimWellInView.cpp index ff86e34e2f..f48db8b5b7 100644 --- a/ApplicationLibCode/ProjectDataModel/RimSimWellInView.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimSimWellInView.cpp @@ -35,13 +35,13 @@ #include "RimEclipseCase.h" #include "RimEclipseView.h" #include "RimExtrudedCurveIntersection.h" -#include "RimGridSummaryCase.h" #include "RimIntersectionCollection.h" #include "RimPropertyFilterCollection.h" #include "RimSimWellFracture.h" #include "RimSimWellFractureCollection.h" #include "RimSimWellInViewCollection.h" #include "RimSimWellInViewTools.h" +#include "RimSummaryCase.h" #include "RimWellDiskConfig.h" #include "RiuMainWindow.h" diff --git a/ApplicationLibCode/ProjectDataModel/RimSimWellInViewCollection.cpp b/ApplicationLibCode/ProjectDataModel/RimSimWellInViewCollection.cpp index f74b8a8bb7..d125bd6921 100644 --- a/ApplicationLibCode/ProjectDataModel/RimSimWellInViewCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimSimWellInViewCollection.cpp @@ -31,12 +31,12 @@ #include "RimEclipseContourMapView.h" #include "RimEclipseResultCase.h" #include "RimEclipseView.h" -#include "RimGridSummaryCase.h" #include "RimIntersectionCollection.h" #include "RimProject.h" #include "RimSimWellFractureCollection.h" #include "RimSimWellInView.h" #include "RimSimWellInViewTools.h" +#include "RimSummaryCase.h" #include "RimVirtualPerforationResults.h" #include "RimWellAllocationPlot.h" #include "RimWellDiskConfig.h" @@ -617,11 +617,7 @@ void RimSimWellInViewCollection::setDefaultSourceCaseForWellDisks() { if ( m_wellDiskSummaryCase == nullptr && !wells.empty() ) { - RimGridSummaryCase* gridSummaryCase = RimSimWellInViewTools::gridSummaryCaseForWell( wells[0] ); - if ( gridSummaryCase ) - { - m_wellDiskSummaryCase = gridSummaryCase; - } + m_wellDiskSummaryCase = RimSimWellInViewTools::summaryCaseForWell( wells[0] ); } } diff --git a/ApplicationLibCode/ProjectDataModel/RimSimWellInViewTools.cpp b/ApplicationLibCode/ProjectDataModel/RimSimWellInViewTools.cpp index ab04acbfa9..c79726b60e 100644 --- a/ApplicationLibCode/ProjectDataModel/RimSimWellInViewTools.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimSimWellInViewTools.cpp @@ -29,7 +29,6 @@ #include "Rim3dView.h" #include "RimEclipseResultCase.h" -#include "RimGridSummaryCase.h" #include "RimOilField.h" #include "RimProject.h" #include "RimSimWellInView.h" @@ -41,7 +40,7 @@ //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RimGridSummaryCase* RimSimWellInViewTools::gridSummaryCaseForWell( RimSimWellInView* well ) +RimSummaryCase* RimSimWellInViewTools::summaryCaseForWell( RimSimWellInView* well ) { RimProject* project = RimProject::current(); if ( !project ) return nullptr; @@ -53,11 +52,7 @@ RimGridSummaryCase* RimSimWellInViewTools::gridSummaryCaseForWell( RimSimWellInV well->firstAncestorOrThisOfType( eclCase ); if ( eclCase ) { - RimGridSummaryCase* gridSummaryCase = dynamic_cast( sumCaseColl->findSummaryCaseFromEclipseResultCase( eclCase ) ); - if ( gridSummaryCase ) - { - return gridSummaryCase; - } + return sumCaseColl->findSummaryCaseFromEclipseResultCase( eclCase ); } return nullptr; diff --git a/ApplicationLibCode/ProjectDataModel/RimSimWellInViewTools.h b/ApplicationLibCode/ProjectDataModel/RimSimWellInViewTools.h index d9307c8c5a..3007b5535d 100644 --- a/ApplicationLibCode/ProjectDataModel/RimSimWellInViewTools.h +++ b/ApplicationLibCode/ProjectDataModel/RimSimWellInViewTools.h @@ -25,7 +25,6 @@ class QString; class QDateTime; class RimSimWellInView; -class RimGridSummaryCase; class RifSummaryReaderInterface; class RimSummaryCase; @@ -36,7 +35,7 @@ class RimSummaryCase; class RimSimWellInViewTools { public: - static RimGridSummaryCase* gridSummaryCaseForWell( RimSimWellInView* well ); + static RimSummaryCase* summaryCaseForWell( RimSimWellInView* well ); static std::vector summaryCases(); static bool isInjector( RimSimWellInView* well ); diff --git a/ApplicationLibCode/ProjectDataModel/Summary/CMakeLists_files.cmake b/ApplicationLibCode/ProjectDataModel/Summary/CMakeLists_files.cmake index fe1e28cf2a..ee9d012b06 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/CMakeLists_files.cmake +++ b/ApplicationLibCode/ProjectDataModel/Summary/CMakeLists_files.cmake @@ -1,7 +1,6 @@ set(SOURCE_GROUP_HEADER_FILES ${CMAKE_CURRENT_LIST_DIR}/RimAsciiDataCurve.h ${CMAKE_CURRENT_LIST_DIR}/RimFileSummaryCase.h - ${CMAKE_CURRENT_LIST_DIR}/RimGridSummaryCase.h ${CMAKE_CURRENT_LIST_DIR}/RimSummaryCase.h ${CMAKE_CURRENT_LIST_DIR}/RimSummaryCaseMainCollection.h ${CMAKE_CURRENT_LIST_DIR}/RimSummaryCaseCollection.h @@ -33,7 +32,6 @@ set(SOURCE_GROUP_HEADER_FILES ${CMAKE_CURRENT_LIST_DIR}/RimEnsembleStatisticsCase.h ${CMAKE_CURRENT_LIST_DIR}/RimDerivedSummaryCase.h ${CMAKE_CURRENT_LIST_DIR}/RimDerivedEnsembleCaseCollection.h - ${CMAKE_CURRENT_LIST_DIR}/RimSummaryPlotFilterTextCurveSetEditor.h ${CMAKE_CURRENT_LIST_DIR}/RimObjectiveFunction.h ${CMAKE_CURRENT_LIST_DIR}/RimObjectiveFunctionTools.h ${CMAKE_CURRENT_LIST_DIR}/RimSummaryPlotManager.h @@ -52,7 +50,6 @@ set(SOURCE_GROUP_HEADER_FILES set(SOURCE_GROUP_SOURCE_FILES ${CMAKE_CURRENT_LIST_DIR}/RimAsciiDataCurve.cpp ${CMAKE_CURRENT_LIST_DIR}/RimFileSummaryCase.cpp - ${CMAKE_CURRENT_LIST_DIR}/RimGridSummaryCase.cpp ${CMAKE_CURRENT_LIST_DIR}/RimSummaryCase.cpp ${CMAKE_CURRENT_LIST_DIR}/RimSummaryCaseMainCollection.cpp ${CMAKE_CURRENT_LIST_DIR}/RimSummaryCaseCollection.cpp @@ -84,7 +81,6 @@ set(SOURCE_GROUP_SOURCE_FILES ${CMAKE_CURRENT_LIST_DIR}/RimEnsembleStatisticsCase.cpp ${CMAKE_CURRENT_LIST_DIR}/RimDerivedSummaryCase.cpp ${CMAKE_CURRENT_LIST_DIR}/RimDerivedEnsembleCaseCollection.cpp - ${CMAKE_CURRENT_LIST_DIR}/RimSummaryPlotFilterTextCurveSetEditor.cpp ${CMAKE_CURRENT_LIST_DIR}/RimObjectiveFunction.cpp ${CMAKE_CURRENT_LIST_DIR}/RimObjectiveFunctionTools.cpp ${CMAKE_CURRENT_LIST_DIR}/RimSummaryPlotManager.cpp diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimGridSummaryCase.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimGridSummaryCase.cpp deleted file mode 100644 index 81194029a9..0000000000 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimGridSummaryCase.cpp +++ /dev/null @@ -1,221 +0,0 @@ -///////////////////////////////////////////////////////////////////////////////// -// -// Copyright (C) 2016- Statoil ASA -// -// ResInsight is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY -// WARRANTY; without even the implied warranty of MERCHANTABILITY or -// FITNESS FOR A PARTICULAR PURPOSE. -// -// See the GNU General Public License at -// for more details. -// -///////////////////////////////////////////////////////////////////////////////// - -#include "RimGridSummaryCase.h" - -#include "RicfCommandObject.h" - -#include "RifMultipleSummaryReaders.h" -#include "RifSummaryReaderInterface.h" -#include "RimCalculatedSummaryCurveReader.h" - -#include "RimEclipseCase.h" -#include "RimFileSummaryCase.h" -#include "RimProject.h" -#include "RimSummaryCalculationCollection.h" - -#include "cafPdmObjectScriptingCapability.h" - -#include - -//================================================================================================== -// -// -// -//================================================================================================== - -CAF_PDM_SOURCE_INIT( RimGridSummaryCase, "GridSummaryCase" ); - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -RimGridSummaryCase::RimGridSummaryCase() -{ - CAF_PDM_InitScriptableObject( "Grid Summary Case", ":/SummaryCases16x16.png", "", "A Summary Case based on extracting grid data." ); - CAF_PDM_InitFieldNoDefault( &m_eclipseCase, "Associated3DCase", "Eclipse Case" ); - m_eclipseCase.uiCapability()->setUiHidden( true ); - - CAF_PDM_InitFieldNoDefault( &m_cachedCaseName, "CachedCasename", "Case Name" ); - m_cachedCaseName.uiCapability()->setUiHidden( true ); - - CAF_PDM_InitFieldNoDefault( &m_eclipseGridFileName, "Associated3DCaseGridFileName", "Grid File Name" ); - m_eclipseGridFileName.registerGetMethod( this, &RimGridSummaryCase::eclipseGridFileName ); - m_eclipseGridFileName.uiCapability()->setUiReadOnly( true ); - m_eclipseGridFileName.xmlCapability()->setIOWritable( false ); - - CAF_PDM_InitField( &m_includeRestartFiles, "IncludeRestartFiles", false, "Include Restart Files" ); - m_includeRestartFiles.uiCapability()->setUiHidden( true ); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -RimGridSummaryCase::~RimGridSummaryCase() -{ -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -QString summaryHeaderFilenameFromEclipseCase( RimEclipseCase* eclCase ) -{ - if ( !eclCase ) return QString(); - - QFileInfo gridFileInfo( eclCase->gridFileName() ); - - QString possibleSumHeaderFileName = gridFileInfo.path() + "/" + gridFileInfo.completeBaseName() + ".SMSPEC"; - - return possibleSumHeaderFileName; -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -QString caseNameFromEclipseCase( RimEclipseCase* eclCase ) -{ - if ( !eclCase ) return QString(); - - return eclCase->caseUserDescription(); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimGridSummaryCase::setAssociatedEclipseCase( RimEclipseCase* eclipseCase ) -{ - m_eclipseCase = eclipseCase; - m_summaryHeaderFilename = summaryHeaderFilenameFromEclipseCase( eclipseCase ); - m_cachedCaseName = caseNameFromEclipseCase( eclipseCase ); - - this->updateAutoShortName(); - this->updateTreeItemName(); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -RimEclipseCase* RimGridSummaryCase::associatedEclipseCase() -{ - if ( !m_eclipseCase() ) - { - // Find a possible associated eclipse case - - RimProject* project; - firstAncestorOrThisOfTypeAsserted( project ); - std::vector allCases; - project->allCases( allCases ); - for ( RimCase* someCase : allCases ) - { - auto eclCase = dynamic_cast( someCase ); - if ( eclCase ) - { - QString sumHeaderFileName = summaryHeaderFilenameFromEclipseCase( eclCase ); - if ( sumHeaderFileName == m_summaryHeaderFilename().path() ) - { - m_eclipseCase = eclCase; - this->updateAutoShortName(); - this->updateTreeItemName(); - - break; - } - } - } - } - - return m_eclipseCase(); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -QString RimGridSummaryCase::summaryHeaderFilename() const -{ - if ( m_eclipseCase() ) - { - auto candidate = summaryHeaderFilenameFromEclipseCase( m_eclipseCase ); - if ( QFileInfo::exists( candidate ) ) return candidate; - } - - return m_summaryHeaderFilename().path(); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -QString RimGridSummaryCase::caseName() const -{ - if ( m_eclipseCase() ) m_cachedCaseName = caseNameFromEclipseCase( m_eclipseCase() ); - - return m_cachedCaseName; -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -QString RimGridSummaryCase::eclipseGridFileName() const -{ - if ( !m_eclipseCase() ) return QString(); - - return m_eclipseCase()->gridFileName(); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimGridSummaryCase::createSummaryReaderInterface() -{ - m_fileSummaryReader = RimFileSummaryCase::findRelatedFilesAndCreateReader( this->summaryHeaderFilename(), m_includeRestartFiles, nullptr ); - - m_multiSummaryReader = new RifMultipleSummaryReaders; - m_multiSummaryReader->addReader( m_fileSummaryReader.p() ); - - RimSummaryCalculationCollection* calcColl = RimProject::current()->calculationCollection(); - m_calculatedSummaryReader = new RifCalculatedSummaryCurveReader( calcColl, this ); - m_multiSummaryReader->addReader( m_calculatedSummaryReader.p() ); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -RifSummaryReaderInterface* RimGridSummaryCase::summaryReader() -{ - if ( m_multiSummaryReader.isNull() ) - { - createSummaryReaderInterface(); - } - return m_multiSummaryReader.p(); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimGridSummaryCase::setIncludeRestartFiles( bool includeRestartFiles ) -{ - m_includeRestartFiles = includeRestartFiles; -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -RimFileSummaryCase* RimGridSummaryCase::createFileSummaryCaseCopy() -{ - RimFileSummaryCase* fileSummaryCase = new RimFileSummaryCase(); - fileSummaryCase->copyFrom( *this ); - fileSummaryCase->setIncludeRestartFiles( m_includeRestartFiles() ); - return fileSummaryCase; -} diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimGridSummaryCase.h b/ApplicationLibCode/ProjectDataModel/Summary/RimGridSummaryCase.h deleted file mode 100644 index 07b5587390..0000000000 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimGridSummaryCase.h +++ /dev/null @@ -1,73 +0,0 @@ -///////////////////////////////////////////////////////////////////////////////// -// -// Copyright (C) 2016 Statoil ASA -// -// ResInsight is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY -// WARRANTY; without even the implied warranty of MERCHANTABILITY or -// FITNESS FOR A PARTICULAR PURPOSE. -// -// See the GNU General Public License at -// for more details. -// -///////////////////////////////////////////////////////////////////////////////// -#pragma once - -#include "RifMultipleSummaryReaders.h" -#include "RimSummaryCase.h" - -#include "cafPdmProxyValueField.h" -#include "cafPdmPtrField.h" - -#include "cvfObject.h" - -class RimEclipseCase; -class RifSummaryReaderInterface; -class RimFileSummaryCase; -class RifCalculatedSummaryCurveReader; -class RifMultipleSummaryReaders; - -//================================================================================================== -// -// -// -//================================================================================================== - -class RimGridSummaryCase : public RimSummaryCase -{ - CAF_PDM_HEADER_INIT; - -public: - RimGridSummaryCase(); - ~RimGridSummaryCase() override; - - void setAssociatedEclipseCase( RimEclipseCase* eclipseCase ); - RimEclipseCase* associatedEclipseCase(); - - QString summaryHeaderFilename() const override; - QString caseName() const override; - - void createSummaryReaderInterface() override; - RifSummaryReaderInterface* summaryReader() override; - - void setIncludeRestartFiles( bool includeRestartFiles ); - - RimFileSummaryCase* createFileSummaryCaseCopy(); - -private: - QString eclipseGridFileName() const; - -private: - caf::PdmPtrField m_eclipseCase; - mutable caf::PdmField m_cachedCaseName; - caf::PdmProxyValueField m_eclipseGridFileName; - - cvf::ref m_fileSummaryReader; - cvf::ref m_calculatedSummaryReader; - cvf::ref m_multiSummaryReader; - caf::PdmField m_includeRestartFiles; -}; diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCaseCollection.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCaseCollection.cpp index d6e163ed95..d8c7b32bd8 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCaseCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCaseCollection.cpp @@ -31,7 +31,6 @@ #include "RimAnalysisPlotDataEntry.h" #include "RimDerivedEnsembleCaseCollection.h" #include "RimEnsembleCurveSet.h" -#include "RimGridSummaryCase.h" #include "RimProject.h" #include "RimSummaryAddressCollection.h" #include "RimSummaryCalculationCollection.h" diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.cpp index d019113d92..58ec9da21e 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.cpp @@ -36,7 +36,6 @@ #include "RimDerivedEnsembleCaseCollection.h" #include "RimEclipseResultCase.h" #include "RimFileSummaryCase.h" -#include "RimGridSummaryCase.h" #include "RimOilField.h" #include "RimProject.h" #include "RimSummaryCase.h" @@ -115,27 +114,15 @@ RimSummaryCaseMainCollection::~RimSummaryCaseMainCollection() //-------------------------------------------------------------------------------------------------- RimSummaryCase* RimSummaryCaseMainCollection::findSummaryCaseFromEclipseResultCase( const RimEclipseResultCase* eclipseResultCase ) const { - for ( RimSummaryCase* summaryCase : m_cases ) - { - RimGridSummaryCase* gridSummaryCase = dynamic_cast( summaryCase ); - if ( gridSummaryCase && gridSummaryCase->associatedEclipseCase() ) - { - if ( gridSummaryCase->associatedEclipseCase()->gridFileName() == eclipseResultCase->gridFileName() ) - { - return gridSummaryCase; - } - } - } + RiaEclipseFileNameTools helper( eclipseResultCase->gridFileName() ); - for ( auto collection : m_caseCollections ) + auto summaryFileName = helper.findSummaryFileCandidates(); + for ( const auto& candidateFileName : summaryFileName ) { - for ( RimSummaryCase* sumCase : collection->allSummaryCases() ) + auto summaryCase = findSummaryCaseFromFileName( candidateFileName ); + if ( summaryCase ) { - RimGridSummaryCase* gridSummaryCase = dynamic_cast( sumCase ); - if ( gridSummaryCase && gridSummaryCase->associatedEclipseCase()->gridFileName() == eclipseResultCase->gridFileName() ) - { - return gridSummaryCase; - } + return summaryCase; } } @@ -147,69 +134,17 @@ RimSummaryCase* RimSummaryCaseMainCollection::findSummaryCaseFromEclipseResultCa //-------------------------------------------------------------------------------------------------- RimSummaryCase* RimSummaryCaseMainCollection::findSummaryCaseFromFileName( const QString& fileName ) const { - // Use QFileInfo object to compare two file names to avoid mix of '/' and '\\' - - QFileInfo incomingFileInfo( fileName ); - - for ( RimSummaryCase* summaryCase : m_cases ) + for ( const auto& summaryCase : allSummaryCases() ) { - if ( summaryCase ) + if ( summaryCase->summaryHeaderFilename() == fileName ) { - QFileInfo summaryFileInfo( summaryCase->summaryHeaderFilename() ); - if ( incomingFileInfo == summaryFileInfo ) - { - return summaryCase; - } - } - } - - for ( auto collection : m_caseCollections ) - { - for ( RimSummaryCase* summaryCase : collection->allSummaryCases() ) - { - if ( summaryCase ) - { - QFileInfo summaryFileInfo( summaryCase->summaryHeaderFilename() ); - if ( incomingFileInfo == summaryFileInfo ) - { - return summaryCase; - } - } + return summaryCase; } } return nullptr; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimSummaryCaseMainCollection::convertGridSummaryCasesToFileSummaryCases( RimGridSummaryCase* gridSummaryCase ) -{ - RimFileSummaryCase* fileSummaryCase = gridSummaryCase->createFileSummaryCaseCopy(); - addCaseRealizationParametersIfFound( *fileSummaryCase, fileSummaryCase->summaryHeaderFilename() ); - - RimSummaryCaseCollection* collection; - gridSummaryCase->firstAncestorOrThisOfType( collection ); - - if ( collection ) - { - collection->addCase( fileSummaryCase ); - collection->updateConnectedEditors(); - } - else - { - this->addCase( fileSummaryCase ); - this->updateConnectedEditors(); - } - - loadSummaryCaseData( { fileSummaryCase } ); - reassignSummaryCurves( gridSummaryCase, fileSummaryCase ); - - removeCase( gridSummaryCase ); - delete gridSummaryCase; -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -575,38 +510,6 @@ void RimSummaryCaseMainCollection::loadFileSummaryCaseData( std::vector referringFields; - gridSummaryCase->referringPtrFields( referringFields ); - for ( caf::PdmFieldHandle* field : referringFields ) - { - RimSummaryCurve* summaryCurve = dynamic_cast( field->ownerObject() ); - if ( summaryCurve ) - { - bool updated = false; - if ( summaryCurve->summaryCaseX() == gridSummaryCase ) - { - summaryCurve->setSummaryCaseX( fileSummaryCase ); - updated = true; - } - if ( summaryCurve->summaryCaseY() == gridSummaryCase ) - { - summaryCurve->setSummaryCaseY( fileSummaryCase ); - updated = true; - } - if ( updated ) - { - summaryCurve->loadDataAndUpdate( false ); - summaryCurve->updateConnectedEditors(); - } - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -650,27 +553,8 @@ std::vector { QCoreApplication::processEvents( QEventLoop::ExcludeUserInputEvents ); - RimEclipseCase* eclCase = nullptr; - QString gridCaseFile = RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile( fileInfo.summaryFileName() ); - if ( !gridCaseFile.isEmpty() ) - { - eclCase = project->eclipseCaseFromGridFileName( gridCaseFile ); - } - - RimGridSummaryCase* existingGridSummaryCase = - dynamic_cast( findSummaryCaseFromFileName( fileInfo.summaryFileName() ) ); - - if ( eclCase && !existingGridSummaryCase ) - { - RimGridSummaryCase* newSumCase = new RimGridSummaryCase(); - - newSumCase->setIncludeRestartFiles( fileInfo.includeRestartFiles() ); - newSumCase->setAssociatedEclipseCase( eclCase ); - newSumCase->updateOptionSensitivity(); - project->assignCaseIdToSummaryCase( newSumCase ); - sumCases.push_back( newSumCase ); - } - else + auto existingSummaryCase = findSummaryCaseFromFileName( fileInfo.summaryFileName() ); + if ( !existingSummaryCase ) { const QString& smspecFileName = fileInfo.summaryFileName(); diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.h b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.h index 96cd767557..502395205f 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.h +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.h @@ -24,7 +24,6 @@ #include #include -class RimGridSummaryCase; class RimSummaryCase; class RimFileSummaryCase; class RimEclipseResultCase; @@ -57,7 +56,6 @@ public: RimSummaryCase* findSummaryCaseFromEclipseResultCase( const RimEclipseResultCase* eclResCase ) const; RimSummaryCase* findSummaryCaseFromFileName( const QString& fileName ) const; - void convertGridSummaryCasesToFileSummaryCases( RimGridSummaryCase* gridSummaryCase ); void addCases( const std::vector cases ); void addCase( RimSummaryCase* summaryCase ); @@ -82,7 +80,6 @@ private: static void loadSummaryCaseData( std::vector summaryCases ); static void loadFileSummaryCaseData( std::vector fileSummaryCases ); - static void reassignSummaryCurves( const RimGridSummaryCase* fromGridCase, RimFileSummaryCase* toFileCase ); static RimSummaryCaseCollection* defaultAllocator(); void onCaseNameChanged( const SignalEmitter* emitter ); diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp index feccfbfe1f..584bfc9097 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp @@ -59,7 +59,6 @@ #include "RimSummaryCurvesData.h" #include "RimSummaryPlotAxisFormatter.h" #include "RimSummaryPlotControls.h" -#include "RimSummaryPlotFilterTextCurveSetEditor.h" #include "RimSummaryPlotNameHelper.h" #include "RimSummaryTimeAxisProperties.h" @@ -161,10 +160,6 @@ RimSummaryPlot::RimSummaryPlot( bool isCrossPlot ) auto rightAxis = addNewAxisProperties( RiuPlotAxis::defaultRight(), "Right" ); rightAxis->setAlwaysRequired( true ); - CAF_PDM_InitFieldNoDefault( &m_textCurveSetEditor, "SummaryPlotFilterTextCurveSetEditor", "Text Filter Curve Creator" ); - m_textCurveSetEditor.uiCapability()->setUiTreeHidden( true ); - m_textCurveSetEditor = new RimSummaryPlotFilterTextCurveSetEditor; - m_nameHelperAllCurves = std::make_unique(); CAF_PDM_InitFieldNoDefault( &m_sourceStepping, "SourceStepping", "" ); @@ -1803,8 +1798,6 @@ void RimSummaryPlot::onLoadDataAndUpdate() } this->updateAxes(); - m_textCurveSetEditor->updateTextFilter(); - updateStackedCurveData(); } @@ -2914,39 +2907,6 @@ RimSummaryPlotSourceStepping* RimSummaryPlot::sourceSteppingObjectForKeyEventHan return m_sourceStepping; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -std::vector RimSummaryPlot::fieldsToShowInToolbar() -{ - std::vector toolBarFields; - - { - auto fields = m_textCurveSetEditor->fieldsToShowInToolbar(); - toolBarFields.insert( std::end( toolBarFields ), std::begin( fields ), std::end( fields ) ); - } - - bool anyFieldsAvailableForSummary = false; - - auto sourceObject = sourceSteppingObjectForKeyEventHandling(); - if ( sourceObject ) - { - auto fields = sourceObject->fieldsToShowInToolbar(); - toolBarFields.insert( std::end( toolBarFields ), std::begin( fields ), std::end( fields ) ); - - anyFieldsAvailableForSummary = !fields.empty(); - } - - if ( !anyFieldsAvailableForSummary ) - { - // Show ensemble stepping if no fields are available from summary stepping - auto fields = ensembleCurveSetCollection()->fieldsToShowInToolbar(); - toolBarFields.insert( std::end( toolBarFields ), std::begin( fields ), std::end( fields ) ); - } - - return toolBarFields; -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.h b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.h index a0cdfb3c69..a4a1b628db 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.h +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.h @@ -59,7 +59,6 @@ class RiuSummaryQwtPlot; class RimSummaryNameHelper; class RimSummaryPlotNameHelper; class RimPlotTemplateFileItem; -class RimSummaryPlotFilterTextCurveSetEditor; class RimSummaryPlotSourceStepping; class RiaSummaryCurveDefinition; @@ -174,8 +173,7 @@ public: void setNormalizationEnabled( bool enable ); bool isNormalizationEnabled(); - virtual RimSummaryPlotSourceStepping* sourceSteppingObjectForKeyEventHandling() const; - virtual std::vector fieldsToShowInToolbar(); + virtual RimSummaryPlotSourceStepping* sourceSteppingObjectForKeyEventHandling() const; void setAutoScaleXEnabled( bool enabled ) override; void setAutoScaleYEnabled( bool enabled ) override; @@ -336,8 +334,6 @@ private: caf::PdmChildArrayField m_axisPropertiesArray; - caf::PdmChildField m_textCurveSetEditor; - std::unique_ptr m_summaryPlot; std::unique_ptr m_plotInfoLabel; diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotFilterTextCurveSetEditor.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotFilterTextCurveSetEditor.cpp deleted file mode 100644 index b3b46cc76a..0000000000 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotFilterTextCurveSetEditor.cpp +++ /dev/null @@ -1,641 +0,0 @@ -///////////////////////////////////////////////////////////////////////////////// -// -// Copyright (C) 2019- Statoil ASA -// -// ResInsight is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY -// WARRANTY; without even the implied warranty of MERCHANTABILITY or -// FITNESS FOR A PARTICULAR PURPOSE. -// -// See the GNU General Public License at -// for more details. -// -///////////////////////////////////////////////////////////////////////////////// - -#include "RimSummaryPlotFilterTextCurveSetEditor.h" - -#include "RiaGuiApplication.h" -#include "RiaLogging.h" -#include "RiaStdStringTools.h" -#include "RiaStringListSerializer.h" -#include "RiaSummaryCurveDefinition.h" -#include "RiaTextStringTools.h" - -#include "RifReaderEclipseSummary.h" -#include "RifSummaryReaderInterface.h" -#include "RigCaseCellResultsData.h" -#include "RigEclipseCaseData.h" - -#include "RimEclipseCase.h" -#include "RimEnsembleCurveSet.h" -#include "RimEnsembleCurveSetCollection.h" -#include "RimGridSummaryCase.h" -#include "RimGridTimeHistoryCurve.h" -#include "RimObservedDataCollection.h" -#include "RimObservedSummaryData.h" -#include "RimOilField.h" -#include "RimProject.h" -#include "RimSummaryCalculationCollection.h" -#include "RimSummaryCase.h" -#include "RimSummaryCaseCollection.h" -#include "RimSummaryCaseMainCollection.h" -#include "RimSummaryCurve.h" -#include "RimSummaryCurveCollection.h" -#include "RimSummaryPlot.h" - -#include "RiuPlotMainWindow.h" -#include "RiuSummaryVectorSelectionUi.h" - -#include "SummaryPlotCommands/RicSummaryPlotFeatureImpl.h" -#include "WellLogCommands/RicWellLogPlotCurveFeatureImpl.h" - -#include "cafPdmUiComboBoxEditor.h" -#include "cafPdmUiLabelEditor.h" -#include "cafPdmUiLineEditor.h" -#include "cafPdmUiToolBarEditor.h" -#include "cafPdmUiTreeSelectionEditor.h" - -#include - -#define FILTER_TEXT_OUTDATED_TEXT "" - -CAF_PDM_SOURCE_INIT( RimSummaryPlotFilterTextCurveSetEditor, "SummaryPlotFilterTextCurveSetEditor" ); - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -RimSummaryPlotFilterTextCurveSetEditor::RimSummaryPlotFilterTextCurveSetEditor() - : m_isFieldRecentlyChangedFromGui( false ) -{ - CAF_PDM_InitObject( "Curve Set Filter Text" ); - - // clang-format off - QString filterTextHeading = "Create Summary Curves from Text"; - QString filterTextShortcut = " (Ctrl + F)"; - - QString filterTextToolTip = - "A list of vector addresses separated by spaces using the syntax: [:[:[:i,j,k]]]\n" - "Wildcards can also be used. Examples:\n" - " \"WOPT:*\" One total oil production curve for each well.\n" - " \"FOPT FWPT\" Two curves with oil and water total production.\n" - " \"BPR:15,28,*\" (no space) Oil phase pressure for all blocks along k as separate curves.\n"; - // clang-format on - - QString toolTipPropertyEditor = filterTextHeading + "\n\n" + filterTextToolTip; - QString toolTipToolbar = filterTextHeading + filterTextShortcut + "\n\n" + filterTextToolTip; - - CAF_PDM_InitFieldNoDefault( &m_curveFilterLabelText, "Summary", "Summary" ); - m_curveFilterLabelText.uiCapability()->setUiEditorTypeName( caf::PdmUiLabelEditor::uiEditorTypeName() ); - m_curveFilterLabelText.xmlCapability()->disableIO(); - - CAF_PDM_InitFieldNoDefault( &m_curveFilterText, "CurveFilterText", "Curve Filter Text", "", toolTipPropertyEditor, "" ); - m_curveFilterText.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN ); - m_curveFilterText.uiCapability()->setUiEditorTypeName( caf::PdmUiComboBoxEditor::uiEditorTypeName() ); - - // Special tool tip for toolbar - m_curveFilterText.uiCapability()->setUiToolTip( toolTipToolbar, caf::PdmUiToolBarEditor::uiEditorConfigName() ); - - CAF_PDM_InitFieldNoDefault( &m_selectedSources, "SummaryCases", "Sources" ); - m_selectedSources.uiCapability()->setAutoAddingOptionFromValue( false ); - m_selectedSources.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() ); - m_selectedSources.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::TOP ); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -RimSummaryPlotFilterTextCurveSetEditor::~RimSummaryPlotFilterTextCurveSetEditor() -{ -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -std::vector RimSummaryPlotFilterTextCurveSetEditor::fieldsToShowInToolbar() -{ - std::vector fields; - fields.push_back( &m_curveFilterLabelText ); - fields.push_back( &m_curveFilterText ); - - return fields; -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -QString RimSummaryPlotFilterTextCurveSetEditor::curveFilterFieldKeyword() -{ - return "CurveFilterText"; -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimSummaryPlotFilterTextCurveSetEditor::updateTextFilter() -{ - RimSummaryPlot* parentPlot; - this->firstAncestorOrThisOfType( parentPlot ); - std::set sourcesFromExistingCurves; - std::set addressesInUse; - std::vector gridaddressesInUse; - - if ( parentPlot ) - { - std::vector ensembleCurveSets = parentPlot->ensembleCurveSetCollection()->curveSets(); - for ( auto ensCurvSet : ensembleCurveSets ) - { - sourcesFromExistingCurves.insert( ensCurvSet->summaryCaseCollection() ); - addressesInUse.insert( ensCurvSet->summaryAddress() ); - } - - std::vector sumCurves = parentPlot->summaryCurveCollection()->curves(); - for ( auto sumCurve : sumCurves ) - { - sourcesFromExistingCurves.insert( sumCurve->summaryCaseY() ); - addressesInUse.insert( sumCurve->summaryAddressY() ); - } - - std::vector gridTimeHistoryCurves = parentPlot->gridTimeHistoryCurves(); - for ( auto grCurve : gridTimeHistoryCurves ) - { - RimEclipseCase* eclCase = dynamic_cast( grCurve->gridCase() ); - if ( eclCase ) - { - sourcesFromExistingCurves.insert( eclCase ); - gridaddressesInUse.push_back( grCurve->resultAddress() ); - } - } - } - - std::vector> usedSources( sourcesFromExistingCurves.begin(), sourcesFromExistingCurves.end() ); - - if ( !usedSources.empty() ) - { - m_selectedSources.clearWithoutDelete(); - m_selectedSources.setValue( usedSources ); - } - - // Check if existing filter text matches all the curves - // Todo: possibly check grid time history curves also - - QStringList allCurveAddressFilters = RiaTextStringTools::splitSkipEmptyParts( curveFilterTextWithoutOutdatedLabel(), QRegExp( "\\s+" ) ); - - std::vector usedFilters; - std::set filteredAddressesFromSource; - RicSummaryPlotFeatureImpl::insertFilteredAddressesInSet( allCurveAddressFilters, addressesInUse, &filteredAddressesFromSource, &usedFilters ); - - if ( filteredAddressesFromSource != addressesInUse ) - { - // m_curveFilterText = FILTER_TEXT_OUTDATED_TEXT + curveFilterTextWithoutOutdatedLabel(); - m_curveFilterText = ""; - } - else - { - m_curveFilterText = curveFilterTextWithoutOutdatedLabel(); - } - - m_curveFilterText.uiCapability()->updateConnectedEditors(); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimSummaryPlotFilterTextCurveSetEditor::fieldChangedByUi( const caf::PdmFieldHandle* changedField, - const QVariant& oldValue, - const QVariant& newValue ) -{ - updateParentPlot(); - - if ( changedField == &m_curveFilterText ) - { - m_curveFilterText = curveFilterTextWithoutOutdatedLabel(); - - { - RiaStringListSerializer stringListSerializer( curveFilterRecentlyUsedRegistryKey() ); - - int maxItemCount = 10; - stringListSerializer.addString( m_curveFilterText, maxItemCount ); - } - - m_curveFilterText.uiCapability()->updateConnectedEditors(); - } - - m_isFieldRecentlyChangedFromGui = true; - - if ( RiaGuiApplication::isRunning() ) - { - RiuPlotMainWindow* mainPlotWindow = RiaGuiApplication::instance()->mainPlotWindow(); - if ( mainPlotWindow ) - { - mainPlotWindow->updateMultiPlotToolBar(); - } - } -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimSummaryPlotFilterTextCurveSetEditor::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) -{ - uiOrdering.add( &m_curveFilterText ); - uiOrdering.add( &m_selectedSources ); - uiOrdering.skipRemainingFields(); - - if ( !m_isFieldRecentlyChangedFromGui ) - { - updateTextFilter(); - } - - m_isFieldRecentlyChangedFromGui = false; -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimSummaryPlotFilterTextCurveSetEditor::setupBeforeSave() -{ - m_curveFilterText = curveFilterTextWithoutOutdatedLabel(); - - // If a source case has been deleted, make sure null pointers are removed - m_selectedSources.removePtr( nullptr ); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimSummaryPlotFilterTextCurveSetEditor::defineEditorAttribute( const caf::PdmFieldHandle* field, - QString uiConfigName, - caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_curveFilterText ) - { - auto attr = dynamic_cast( attribute ); - if ( attr ) - { - attr->enableEditableContent = true; - attr->adjustWidthToContents = true; - attr->placeholderText = "Click to edit curves"; - - if ( uiConfigName == caf::PdmUiToolBarEditor::uiEditorConfigName() ) - { - attr->minimumWidth = 140; - } - } - } -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -QList RimSummaryPlotFilterTextCurveSetEditor::calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) -{ - QList options; - if ( fieldNeedingOptions == &m_selectedSources ) - { - appendOptionItemsForSources( options ); - } - - if ( fieldNeedingOptions == &m_curveFilterText ) - { - RiaStringListSerializer stringListSerializer( curveFilterRecentlyUsedRegistryKey() ); - - for ( const auto& s : stringListSerializer.textStrings() ) - { - options.push_back( caf::PdmOptionItemInfo( s, s ) ); - } - } - - return options; -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimSummaryPlotFilterTextCurveSetEditor::appendOptionItemsForSources( QList& options ) -{ - RimProject* proj = RimProject::current(); - - std::vector oilFields; - - proj->allOilFields( oilFields ); - for ( RimOilField* oilField : oilFields ) - { - RimSummaryCaseMainCollection* sumCaseMainColl = oilField->summaryCaseMainCollection(); - if ( sumCaseMainColl ) - { - // Top level cases - for ( const auto& sumCase : sumCaseMainColl->topLevelSummaryCases() ) - { - options.push_back( caf::PdmOptionItemInfo( sumCase->displayCaseName(), sumCase ) ); - } - - // Ensembles - bool ensembleHeaderCreated = false; - for ( const auto& sumCaseColl : sumCaseMainColl->summaryCaseCollections() ) - { - if ( !sumCaseColl->isEnsemble() ) continue; - - if ( !ensembleHeaderCreated ) - { - options.push_back( caf::PdmOptionItemInfo::createHeader( "Ensembles", true ) ); - ensembleHeaderCreated = true; - } - - auto optionItem = caf::PdmOptionItemInfo( sumCaseColl->name(), sumCaseColl ); - optionItem.setLevel( 1 ); - options.push_back( optionItem ); - } - - // Grouped cases - for ( const auto& sumCaseColl : sumCaseMainColl->summaryCaseCollections() ) - { - if ( sumCaseColl->isEnsemble() ) continue; - - options.push_back( caf::PdmOptionItemInfo::createHeader( sumCaseColl->name(), true ) ); - - for ( const auto& sumCase : sumCaseColl->allSummaryCases() ) - { - auto optionItem = caf::PdmOptionItemInfo( sumCase->displayCaseName(), sumCase ); - optionItem.setLevel( 1 ); - options.push_back( optionItem ); - } - } - - // Observed data - auto observedDataColl = oilField->observedDataCollection(); - if ( observedDataColl->allObservedSummaryData().size() > 0 ) - { - options.push_back( caf::PdmOptionItemInfo::createHeader( "Observed Data", true ) ); - - for ( const auto& obsData : observedDataColl->allObservedSummaryData() ) - { - auto optionItem = caf::PdmOptionItemInfo( obsData->caseName(), obsData ); - optionItem.setLevel( 1 ); - options.push_back( optionItem ); - } - } - } - } -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -std::vector RimSummaryPlotFilterTextCurveSetEditor::selectedSummarySources() const -{ - std::vector sources; - - for ( const auto& source : m_selectedSources ) - { - sources.push_back( source ); - } - - return sources; -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -QString RimSummaryPlotFilterTextCurveSetEditor::curveFilterTextWithoutOutdatedLabel() const -{ - QString filterText = m_curveFilterText(); - - if ( filterText.startsWith( FILTER_TEXT_OUTDATED_TEXT ) ) - { - return filterText.right( filterText.length() - QString( FILTER_TEXT_OUTDATED_TEXT ).length() ); - } - - return filterText; -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimSummaryPlotFilterTextCurveSetEditor::updateParentPlot() -{ - RimSummaryPlot* parentPlot; - this->firstAncestorOrThisOfType( parentPlot ); - - if ( parentPlot ) - { - // Remove all curves, Create new ones - - parentPlot->ensembleCurveSetCollection()->deleteAllCurveSets(); - parentPlot->deleteAllSummaryCurves(); - parentPlot->deleteAllGridTimeHistoryCurves(); - - std::set curveDefinitions; - - QStringList allCurveAddressFilters = - RiaTextStringTools::splitSkipEmptyParts( curveFilterTextWithoutOutdatedLabel(), QRegExp( "\\s+" ) ); - std::vector accumulatedUsedFilters( allCurveAddressFilters.size(), false ); - - for ( SummarySource* currSource : selectedSummarySources() ) - { - std::set allAddressesFromSource = addressesForSource( currSource ); - - std::vector usedFilters; - std::set filteredAddressesFromSource; - insertFilteredAddressesInSet( allCurveAddressFilters, allAddressesFromSource, &filteredAddressesFromSource, &usedFilters ); - - for ( size_t fIdx = 0; fIdx < accumulatedUsedFilters.size(); ++fIdx ) - { - accumulatedUsedFilters[fIdx] = accumulatedUsedFilters[fIdx] || usedFilters[fIdx]; - } - - auto sumCase = dynamic_cast( currSource ); - auto ensemble = dynamic_cast( currSource ); - - for ( const auto& filteredAddress : filteredAddressesFromSource ) - { - if ( sumCase ) - { - curveDefinitions.insert( RiaSummaryCurveDefinition( sumCase, filteredAddress, ensemble != nullptr ) ); - } - else if ( ensemble ) - { - curveDefinitions.insert( RiaSummaryCurveDefinition( ensemble, filteredAddress ) ); - } - } - } - - // Find potensial grid result addresses - - QRegularExpression gridAddressPattern( "^[A-Z]+:[0-9]+,[0-9]+,[0-9]+$" ); - QStringList gridResultAddressFilters; - - for ( int filterIdx = 0; filterIdx < allCurveAddressFilters.size(); ++filterIdx ) - { - if ( !accumulatedUsedFilters[filterIdx] ) - { - const QString& unusedAddressFilter = allCurveAddressFilters[filterIdx]; - if ( gridAddressPattern.match( unusedAddressFilter ).hasMatch() ) - { - gridResultAddressFilters.push_back( unusedAddressFilter ); - } - else - { - RiaLogging::warning( "No summary or restart vectors matched \"" + unusedAddressFilter + "\"" ); - } - } - } - - // Create Summary curves and Ensemble curvesets: - - for ( const RiaSummaryCurveDefinition& curveDef : curveDefinitions ) - { - if ( curveDef.isEnsembleCurve() ) - { - RimEnsembleCurveSet* curveSet = new RimEnsembleCurveSet(); - - curveSet->setSummaryCaseCollection( curveDef.ensemble() ); - curveSet->setSummaryAddressAndStatisticsFlag( curveDef.summaryAddress() ); - - parentPlot->ensembleCurveSetCollection()->addCurveSet( curveSet ); - } - else - { - RimSummaryCurve* newCurve = new RimSummaryCurve(); - parentPlot->addCurveNoUpdate( newCurve ); - if ( curveDef.summaryCase() ) - { - newCurve->setSummaryCaseY( curveDef.summaryCase() ); - } - newCurve->setSummaryAddressYAndApplyInterpolation( curveDef.summaryAddress() ); - } - } - - // create Grid time history curves - { - std::vector gridCasesToPlotFrom; - - for ( SummarySource* currSource : selectedSummarySources() ) - { - RimGridSummaryCase* gridSumCase = dynamic_cast( currSource ); - if ( gridSumCase ) - { - RimEclipseCase* eclCase = gridSumCase->associatedEclipseCase(); - - if ( eclCase ) - { - gridCasesToPlotFrom.push_back( eclCase ); - } - } - } - - bool isEnsembleMode = gridCasesToPlotFrom.size() > 1; - int curveColorIndex = 0; - - for ( const QString& gridAddressFilter : gridResultAddressFilters ) - { - std::vector cellResAddrs = - RigGridCellResultAddress::createGridCellAddressesFromFilter( gridAddressFilter ); - - for ( RigGridCellResultAddress cellResAddr : cellResAddrs ) - { - for ( RimEclipseCase* eclCase : gridCasesToPlotFrom ) - { - RigCaseCellResultsData* gridCellResults = - eclCase->eclipseCaseData()->results( RiaDefines::PorosityModelType::MATRIX_MODEL ); - if ( !( gridCellResults && gridCellResults->resultInfo( cellResAddr.eclipseResultAddress ) ) ) - { - RiaLogging::warning( "Could not find a restart result property with name: \"" + - cellResAddr.eclipseResultAddress.resultName() + "\"" ); - continue; - } - - RimGridTimeHistoryCurve* newCurve = new RimGridTimeHistoryCurve(); - newCurve->setFromEclipseCellAndResult( eclCase, - cellResAddr.gridIndex, - cellResAddr.i, - cellResAddr.j, - cellResAddr.k, - cellResAddr.eclipseResultAddress ); - newCurve->setLineThickness( 2 ); - newCurve->setColor( RicWellLogPlotCurveFeatureImpl::curveColorFromTable( curveColorIndex ) ); - - if ( !isEnsembleMode ) ++curveColorIndex; - - parentPlot->addGridTimeHistoryCurveNoUpdate( newCurve ); - } - if ( isEnsembleMode ) ++curveColorIndex; - } - } - } - - parentPlot->applyDefaultCurveAppearances(); - parentPlot->loadDataAndUpdate(); - parentPlot->zoomAll(); - - m_isFieldRecentlyChangedFromGui = true; - - parentPlot->updateConnectedEditors(); - } -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -std::set RimSummaryPlotFilterTextCurveSetEditor::addressesForSource( SummarySource* summarySource ) -{ - auto* ensemble = dynamic_cast( summarySource ); - if ( ensemble ) - { - return ensemble->ensembleSummaryAddresses(); - } - - auto* sumCase = dynamic_cast( summarySource ); - - if ( sumCase ) - { - RifSummaryReaderInterface* reader = sumCase ? sumCase->summaryReader() : nullptr; - if ( reader ) - { - return reader->allResultAddresses(); - } - } - - return {}; -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimSummaryPlotFilterTextCurveSetEditor::insertFilteredAddressesInSet( const QStringList& curveFilters, - const std::set& allAddressesInCase, - std::set* setToInsertFilteredAddressesIn, - std::vector* usedFilters ) -{ - std::set candidateAddresses; - RicSummaryPlotFeatureImpl::insertFilteredAddressesInSet( curveFilters, allAddressesInCase, &candidateAddresses, usedFilters ); - - if ( !m_includeDiffCurves ) - { - std::set tmp; - - const auto diffText = RifReaderEclipseSummary::differenceIdentifier(); - - for ( const auto& adr : candidateAddresses ) - { - if ( RiaStdStringTools::endsWith( adr.vectorName(), diffText ) ) continue; - - tmp.insert( adr ); - } - - std::swap( tmp, candidateAddresses ); - } - - setToInsertFilteredAddressesIn->insert( candidateAddresses.begin(), candidateAddresses.end() ); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -QString RimSummaryPlotFilterTextCurveSetEditor::curveFilterRecentlyUsedRegistryKey() -{ - return "curveFilterRecentlyUsedStrings"; -} diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotFilterTextCurveSetEditor.h b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotFilterTextCurveSetEditor.h deleted file mode 100644 index 09484930a7..0000000000 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotFilterTextCurveSetEditor.h +++ /dev/null @@ -1,72 +0,0 @@ -///////////////////////////////////////////////////////////////////////////////// -// -// Copyright (C) 2019- Statoil ASA -// -// ResInsight is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY -// WARRANTY; without even the implied warranty of MERCHANTABILITY or -// FITNESS FOR A PARTICULAR PURPOSE. -// -// See the GNU General Public License at -// for more details. -// -///////////////////////////////////////////////////////////////////////////////// - -#include "cafPdmField.h" -#include "cafPdmObject.h" -#include "cafPdmPtrArrayField.h" - -using SummarySource = caf::PdmObject; -class RifEclipseSummaryAddress; - -class RimSummaryPlotFilterTextCurveSetEditor : public caf::PdmObject -{ - CAF_PDM_HEADER_INIT; - -public: - RimSummaryPlotFilterTextCurveSetEditor(); - ~RimSummaryPlotFilterTextCurveSetEditor() override; - - std::vector fieldsToShowInToolbar(); - - static QString curveFilterFieldKeyword(); - void updateTextFilter(); - -protected: - QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; - - void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void setupBeforeSave() override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; - -private: - static void appendOptionItemsForSources( QList& options ); - - std::vector selectedSummarySources() const; - QString curveFilterTextWithoutOutdatedLabel() const; - - void updateParentPlot(); - - static std::set addressesForSource( SummarySource* summarySource ); - - void insertFilteredAddressesInSet( const QStringList& curveFilters, - const std::set& allAddressesInCase, - std::set* setToInsertFilteredAddressesIn, - std::vector* usedFilters ); - - static QString curveFilterRecentlyUsedRegistryKey(); - -private: - caf::PdmPtrArrayField m_selectedSources; - - caf::PdmField m_curveFilterLabelText; - caf::PdmField m_curveFilterText; - caf::PdmField m_includeDiffCurves; - - bool m_isFieldRecentlyChangedFromGui; -}; diff --git a/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp b/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp index 9d2b5821dd..e9d05e1664 100644 --- a/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp +++ b/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp @@ -37,7 +37,6 @@ #include "RimSummaryMultiPlot.h" #include "RimSummaryMultiPlotCollection.h" #include "RimSummaryPlot.h" -#include "RimSummaryPlotFilterTextCurveSetEditor.h" #include "RimSummaryPlotManager.h" #include "RimViewWindow.h" #include "RimWellAllocationPlot.h"