#5140 Fix incorrect values for "Show Plot Data" action on calculated summary curves.

Fixed by checking if all the variables in a calculated expression is based on
accumulated data.
This commit is contained in:
Kristian Bendiksen
2019-12-11 14:51:18 +01:00
parent da7c582ae1
commit d6ff1eb847
5 changed files with 70 additions and 20 deletions

View File

@@ -20,7 +20,9 @@
#include "RifEnsembleStatisticsReader.h"
#include "RiaSummaryTools.h"
#include "RiaTimeHistoryCurveResampler.h"
#include "RigStatisticsMath.h"
#include "RimEnsembleCurveSet.h"
@@ -158,7 +160,7 @@ void RimEnsembleStatisticsCase::calculate( const std::vector<RimSummaryCase*> su
RiaTimeHistoryCurveResampler resampler;
resampler.setCurveData( values, timeSteps );
if ( inputAddress.hasAccumulatedData() )
if ( RiaSummaryTools::hasAccumulatedData( inputAddress ) )
resampler.resampleAndComputePeriodEndValues( DateTimePeriod::DAY );
else
resampler.resampleAndComputeWeightedMeanValues( DateTimePeriod::DAY );

View File

@@ -23,6 +23,7 @@
#include "RiaGuiApplication.h"
#include "RiaPreferences.h"
#include "RiaStatisticsTools.h"
#include "RiaSummaryTools.h"
#include "RifReaderEclipseSummary.h"
@@ -1125,7 +1126,7 @@ void RimSummaryCurve::calculateCurveInterpolationFromAddress()
if ( m_yValuesSummaryAddress() )
{
auto address = m_yValuesSummaryAddress()->address();
if ( address.hasAccumulatedData() )
if ( RiaSummaryTools::hasAccumulatedData( address ) )
{
m_curveInterpolation = RiuQwtPlotCurve::INTERPOLATION_POINT_TO_POINT;
}

View File

@@ -23,6 +23,7 @@
#include "RiaFieldHandleTools.h"
#include "RiaSummaryCurveAnalyzer.h"
#include "RiaSummaryCurveDefinition.h"
#include "RiaSummaryTools.h"
#include "RiaTimeHistoryCurveResampler.h"
#include "SummaryPlotCommands/RicSummaryCurveCreator.h"
@@ -1785,22 +1786,9 @@ void RimSummaryPlot::updateNameHelperWithCurveData( RimSummaryPlotNameHelper* na
{
if ( curve->summaryAddressY().category() == RifEclipseSummaryAddress::SUMMARY_CALCULATED )
{
RimProject* proj = RiaApplication::instance()->project();
RimSummaryCalculationCollection* calculationColl = proj->calculationCollection();
if ( calculationColl )
{
RimSummaryCalculation* calculation = calculationColl->findCalculationById(
curve->summaryAddressY().id() );
if ( calculation )
{
for ( RimSummaryCalculationVariable* v : calculation->allVariables() )
{
sumCases.push_back( v->summaryCase() );
addresses.push_back( v->summaryAddress()->address() );
}
}
}
RiaSummaryTools::getSummaryCasesAndAddressesForCalculation( curve->summaryAddressY().id(),
sumCases,
addresses );
}
else
{
@@ -2233,7 +2221,8 @@ void prepareCaseCurvesForExport( DateTimePeriod period,
{
resampler.setCurveData( curveDataItem.values, caseTimeSteps );
if ( curveDataItem.address.hasAccumulatedData() || algorithm == ResampleAlgorithm::PERIOD_END )
if ( RiaSummaryTools::hasAccumulatedData( curveDataItem.address ) ||
algorithm == ResampleAlgorithm::PERIOD_END )
{
resampler.resampleAndComputePeriodEndValues( period );
}