mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Merge pull request #5210 from OPM/fix-show-plot-on-calculated-curves-5140
Fix show plot on calculated curves 5140
This commit is contained in:
@@ -322,7 +322,8 @@ RimSummaryCurve* RicPlotProductionRateFeature::addSummaryCurve( RimSummaryPlot*
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
false );
|
||||
false,
|
||||
-1 );
|
||||
|
||||
if ( !gridSummaryCase->summaryReader()->hasAddress( addr ) )
|
||||
{
|
||||
|
||||
@@ -18,15 +18,25 @@
|
||||
|
||||
#include "RicReplaceSummaryCaseFeature.h"
|
||||
|
||||
#include "RiaApplication.h"
|
||||
#include "RiaLogging.h"
|
||||
#include "RiaSummaryTools.h"
|
||||
|
||||
#include "RicImportGeneralDataFeature.h"
|
||||
|
||||
#include "RimCalculatedSummaryCase.h"
|
||||
#include "RimFileSummaryCase.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimSummaryAddress.h"
|
||||
#include "RimSummaryCalculation.h"
|
||||
#include "RimSummaryCalculationCollection.h"
|
||||
#include "RimSummaryCalculationVariable.h"
|
||||
#include "RimSummaryCase.h"
|
||||
#include "RimSummaryCaseCollection.h"
|
||||
#include "RimSummaryCaseMainCollection.h"
|
||||
#include "RimSummaryCrossPlot.h"
|
||||
#include "RimSummaryCrossPlotCollection.h"
|
||||
#include "RimSummaryCurve.h"
|
||||
#include "RimSummaryPlot.h"
|
||||
#include "RimSummaryPlotCollection.h"
|
||||
|
||||
@@ -65,9 +75,89 @@ void RicReplaceSummaryCaseFeature::onActionTriggered( bool isChecked )
|
||||
summaryCase->createRftReaderInterface();
|
||||
RiaLogging::info( QString( "Replaced summary data for %1" ).arg( oldSummaryHeaderFilename ) );
|
||||
|
||||
RimSummaryCalculationCollection* calcColl = RiaApplication::instance()->project()->calculationCollection();
|
||||
|
||||
// Find and update all changed calculations
|
||||
std::set<int> ids;
|
||||
for ( RimSummaryCalculation* summaryCalculation : calcColl->calculations() )
|
||||
{
|
||||
bool needsUpdate = checkIfCalculationNeedsUpdate( summaryCalculation, summaryCase );
|
||||
if ( needsUpdate )
|
||||
{
|
||||
ids.insert( summaryCalculation->id() );
|
||||
summaryCalculation->parseExpression();
|
||||
summaryCalculation->calculate();
|
||||
summaryCalculation->updateDependentCurvesAndPlots();
|
||||
}
|
||||
}
|
||||
|
||||
RimSummaryPlotCollection* summaryPlotColl = RiaSummaryTools::summaryPlotCollection();
|
||||
for ( RimSummaryPlot* summaryPlot : summaryPlotColl->summaryPlots )
|
||||
{
|
||||
// Update summary curves on calculated data
|
||||
std::vector<RimSummaryCurve*> summaryCurves = summaryPlot->summaryCurves();
|
||||
for ( RimSummaryCurve* summaryCurve : summaryCurves )
|
||||
{
|
||||
RifEclipseSummaryAddress summaryAddressY = summaryCurve->summaryAddressY();
|
||||
if ( summaryAddressY.category() == RifEclipseSummaryAddress::SUMMARY_CALCULATED &&
|
||||
ids.find( summaryAddressY.id() ) != ids.end() )
|
||||
{
|
||||
if ( calcColl )
|
||||
{
|
||||
RimSummaryCalculation* calculation = calcColl->findCalculationById( summaryAddressY.id() );
|
||||
QString description = calculation->description();
|
||||
|
||||
RifEclipseSummaryAddress updatedAdr =
|
||||
RifEclipseSummaryAddress::calculatedAddress( description.toStdString(), calculation->id() );
|
||||
summaryCurve->setSummaryAddressYAndApplyInterpolation( updatedAdr );
|
||||
summaryCurve->loadDataAndUpdate( true );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
summaryPlot->loadDataAndUpdate();
|
||||
}
|
||||
|
||||
RimSummaryCrossPlotCollection* summaryCrossPlotColl = RiaSummaryTools::summaryCrossPlotCollection();
|
||||
for ( RimSummaryPlot* summaryPlot : summaryCrossPlotColl->summaryPlots() )
|
||||
{
|
||||
// Update summary curves on calculated data
|
||||
std::vector<RimSummaryCurve*> summaryCurves = summaryPlot->summaryCurves();
|
||||
for ( RimSummaryCurve* summaryCurve : summaryCurves )
|
||||
{
|
||||
RifEclipseSummaryAddress summaryAddressX = summaryCurve->summaryAddressX();
|
||||
if ( summaryAddressX.category() == RifEclipseSummaryAddress::SUMMARY_CALCULATED &&
|
||||
ids.find( summaryAddressX.id() ) != ids.end() )
|
||||
{
|
||||
if ( calcColl )
|
||||
{
|
||||
RimSummaryCalculation* calculation = calcColl->findCalculationById( summaryAddressX.id() );
|
||||
QString description = calculation->description();
|
||||
|
||||
RifEclipseSummaryAddress updatedAdr =
|
||||
RifEclipseSummaryAddress::calculatedAddress( description.toStdString(), calculation->id() );
|
||||
summaryCurve->setSummaryAddressX( updatedAdr );
|
||||
summaryCurve->loadDataAndUpdate( true );
|
||||
}
|
||||
}
|
||||
|
||||
RifEclipseSummaryAddress summaryAddressY = summaryCurve->summaryAddressY();
|
||||
if ( summaryAddressY.category() == RifEclipseSummaryAddress::SUMMARY_CALCULATED &&
|
||||
ids.find( summaryAddressY.id() ) != ids.end() )
|
||||
{
|
||||
if ( calcColl )
|
||||
{
|
||||
RimSummaryCalculation* calculation = calcColl->findCalculationById( summaryAddressX.id() );
|
||||
QString description = calculation->description();
|
||||
|
||||
RifEclipseSummaryAddress updatedAdr =
|
||||
RifEclipseSummaryAddress::calculatedAddress( description.toStdString(), calculation->id() );
|
||||
summaryCurve->setSummaryAddressYAndApplyInterpolation( updatedAdr );
|
||||
summaryCurve->loadDataAndUpdate( true );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
summaryPlot->loadDataAndUpdate();
|
||||
}
|
||||
}
|
||||
@@ -80,3 +170,21 @@ void RicReplaceSummaryCaseFeature::setupActionLook( QAction* actionToSetup )
|
||||
actionToSetup->setText( "Replace" );
|
||||
actionToSetup->setIcon( QIcon( ":/ReplaceCase16x16.png" ) );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RicReplaceSummaryCaseFeature::checkIfCalculationNeedsUpdate( const RimSummaryCalculation* summaryCalculation,
|
||||
const RimFileSummaryCase* summaryCase )
|
||||
{
|
||||
std::vector<RimSummaryCalculationVariable*> variables = summaryCalculation->allVariables();
|
||||
for ( RimSummaryCalculationVariable* variable : variables )
|
||||
{
|
||||
if ( variable->summaryCase() == summaryCase )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -20,6 +20,9 @@
|
||||
|
||||
#include "cafCmdFeature.h"
|
||||
|
||||
class RimSummaryCalculation;
|
||||
class RimFileSummaryCase;
|
||||
|
||||
class RicReplaceSummaryCaseFeature : public caf::CmdFeature
|
||||
{
|
||||
CAF_CMD_HEADER_INIT;
|
||||
@@ -28,4 +31,7 @@ protected:
|
||||
bool isCommandEnabled() override;
|
||||
void onActionTriggered( bool isChecked ) override;
|
||||
void setupActionLook( QAction* actionToSetup ) override;
|
||||
|
||||
bool checkIfCalculationNeedsUpdate( const RimSummaryCalculation* summaryCalculation,
|
||||
const RimFileSummaryCase* summaryCase );
|
||||
};
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
|
||||
#include "RifEclipseSummaryAddress.h"
|
||||
|
||||
#include "RimCalculatedSummaryCurveReader.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimSummaryCalculation.h"
|
||||
#include "RimSummaryCalculationCollection.h"
|
||||
@@ -64,10 +63,13 @@ void RicEditSummaryCurveCalculationFeature::onActionTriggered( bool isChecked )
|
||||
{
|
||||
RifEclipseSummaryAddress selectedAddress = selectedCurves.front()->summaryAddressY();
|
||||
|
||||
RimProject* proj = RiaApplication::instance()->project();
|
||||
RifCalculatedSummaryCurveReader* reader = dynamic_cast<RifCalculatedSummaryCurveReader*>(
|
||||
proj->calculationCollection->calculationSummaryCase()->summaryReader() );
|
||||
calculation = reader != nullptr ? reader->findCalculationByName( selectedAddress ) : nullptr;
|
||||
RimProject* proj = RiaApplication::instance()->project();
|
||||
RimSummaryCalculationCollection* calculationColl = proj->calculationCollection();
|
||||
|
||||
if ( calculationColl )
|
||||
{
|
||||
calculation = calculationColl->findCalculationById( selectedAddress.id() );
|
||||
}
|
||||
}
|
||||
|
||||
RicSummaryCurveCalculatorDialog* dialog = RicShowSummaryCurveCalculatorFeature::curveCalculatorDialog();
|
||||
|
||||
@@ -101,7 +101,7 @@ bool RicSummaryCurveCalculator::parseExpression() const
|
||||
QString currentCurveName = m_currentCalculation->description();
|
||||
if ( previousCurveName != currentCurveName )
|
||||
{
|
||||
RiaSummaryTools::notifyCalculatedCurveNameHasChanged( previousCurveName, currentCurveName );
|
||||
RiaSummaryTools::notifyCalculatedCurveNameHasChanged( m_currentCalculation()->id(), currentCurveName );
|
||||
}
|
||||
|
||||
m_currentCalculation()->updateDependentCurvesAndPlots();
|
||||
@@ -121,8 +121,7 @@ void RicSummaryCurveCalculator::fieldChangedByUi( const caf::PdmFieldHandle* cha
|
||||
{
|
||||
m_newCalculation = false;
|
||||
|
||||
RimSummaryCalculation* rimCalc = calculationCollection()->addCalculation();
|
||||
m_currentCalculation = rimCalc;
|
||||
m_currentCalculation = calculationCollection()->addCalculation();
|
||||
|
||||
this->updateConnectedEditors();
|
||||
}
|
||||
@@ -246,7 +245,7 @@ bool RicSummaryCurveCalculator::calculate() const
|
||||
QString currentCurveName = m_currentCalculation->description();
|
||||
if ( previousCurveName != currentCurveName )
|
||||
{
|
||||
RiaSummaryTools::notifyCalculatedCurveNameHasChanged( previousCurveName, currentCurveName );
|
||||
RiaSummaryTools::notifyCalculatedCurveNameHasChanged( m_currentCalculation()->id(), currentCurveName );
|
||||
}
|
||||
|
||||
if ( !m_currentCalculation()->calculate() )
|
||||
|
||||
Reference in New Issue
Block a user