diff --git a/ApplicationLibCode/Application/Tools/RiaSummaryTools.cpp b/ApplicationLibCode/Application/Tools/RiaSummaryTools.cpp index 0911646915..236e1bb0f9 100644 --- a/ApplicationLibCode/Application/Tools/RiaSummaryTools.cpp +++ b/ApplicationLibCode/Application/Tools/RiaSummaryTools.cpp @@ -19,6 +19,8 @@ #include "RiaSummaryTools.h" #include "RiaFilePathTools.h" +#include "RiaTimeHistoryCurveResampler.h" + #include "RifEclipseSummaryAddress.h" #include "RimMainPlotCollection.h" @@ -265,3 +267,27 @@ QString RiaSummaryTools::findSuitableEnsembleName( const QStringList& summaryCas return "Ensemble"; } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +std::pair, std::vector> + RiaSummaryTools::resampledValuesForPeriod( const RifEclipseSummaryAddress& address, + const std::vector& timeSteps, + std::vector& values, + RiaQDateTimeTools::DateTimePeriod period ) +{ + RiaTimeHistoryCurveResampler resampler; + resampler.setCurveData( values, timeSteps ); + + if ( RiaSummaryTools::hasAccumulatedData( address ) ) + { + resampler.resampleAndComputePeriodEndValues( period ); + } + else + { + resampler.resampleAndComputeWeightedMeanValues( period ); + } + + return { resampler.resampledTimeSteps(), resampler.resampledValues() }; +} diff --git a/ApplicationLibCode/Application/Tools/RiaSummaryTools.h b/ApplicationLibCode/Application/Tools/RiaSummaryTools.h index bac7955f17..19e9f3f65f 100644 --- a/ApplicationLibCode/Application/Tools/RiaSummaryTools.h +++ b/ApplicationLibCode/Application/Tools/RiaSummaryTools.h @@ -18,6 +18,8 @@ #pragma once +#include "RiaQDateTimeTools.h" + #include #include @@ -63,4 +65,10 @@ public: std::vector& addresses ); static QString findSuitableEnsembleName( const QStringList& summaryCaseFileNames ); + + static std::pair, std::vector> + resampledValuesForPeriod( const RifEclipseSummaryAddress& address, + const std::vector& timeSteps, + std::vector& values, + RiaQDateTimeTools::DateTimePeriod period ); }; diff --git a/ApplicationLibCode/ProjectDataModel/RimSimWellInViewTools.cpp b/ApplicationLibCode/ProjectDataModel/RimSimWellInViewTools.cpp index 7de7aaa1a2..c660a61b29 100644 --- a/ApplicationLibCode/ProjectDataModel/RimSimWellInViewTools.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimSimWellInViewTools.cpp @@ -20,7 +20,6 @@ #include "RiaLogging.h" #include "RiaSummaryTools.h" -#include "RiaTimeHistoryCurveResampler.h" #include "RifEclipseSummaryAddress.h" #include "RifSummaryReaderInterface.h" @@ -169,20 +168,8 @@ double RimSimWellInViewTools::extractValueForTimeStep( RifSummaryReaderInterface return 0.0; } - RiaTimeHistoryCurveResampler resampler; - resampler.setCurveData( values, timeSteps ); - if ( RiaSummaryTools::hasAccumulatedData( addr ) ) - { - resampler.resampleAndComputePeriodEndValues( RiaQDateTimeTools::DateTimePeriod::DAY ); - } - else - { - resampler.resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod::DAY ); - } - - // Find the data point which best matches the selected time step - std::vector resampledTimeSteps = resampler.resampledTimeSteps(); - std::vector resampledValues = resampler.resampledValues(); + auto [resampledTimeSteps, resampledValues] = + RiaSummaryTools::resampledValuesForPeriod( addr, timeSteps, values, RiaQDateTimeTools::DateTimePeriod::DAY ); time_t currentTime_t = currentDate.toTime_t(); diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimEnsembleStatisticsCase.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimEnsembleStatisticsCase.cpp index f5f78dace8..eb285bf777 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimEnsembleStatisticsCase.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimEnsembleStatisticsCase.cpp @@ -21,7 +21,6 @@ #include "RifEnsembleStatisticsReader.h" #include "RiaSummaryTools.h" -#include "RiaTimeHistoryCurveResampler.h" #include "RigStatisticsMath.h" @@ -161,16 +160,14 @@ void RimEnsembleStatisticsCase::calculate( const std::vector su if ( !includeIncompleteCurves && timeSteps.size() != values.size() ) continue; - RiaTimeHistoryCurveResampler resampler; - resampler.setCurveData( values, timeSteps ); - if ( RiaSummaryTools::hasAccumulatedData( inputAddress ) ) - resampler.resampleAndComputePeriodEndValues( RiaQDateTimeTools::DateTimePeriod::DAY ); - else - resampler.resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod::DAY ); + auto [resampledTimeSteps, resampledValues] = + RiaSummaryTools::resampledValuesForPeriod( inputAddress, + timeSteps, + values, + RiaQDateTimeTools::DateTimePeriod::DAY ); - if ( allTimeSteps.empty() ) allTimeSteps = resampler.resampledTimeSteps(); - caseAndTimeStepValues.push_back( - std::vector( resampler.resampledValues().begin(), resampler.resampledValues().end() ) ); + if ( allTimeSteps.empty() ) allTimeSteps = resampledTimeSteps; + caseAndTimeStepValues.push_back( resampledValues ); } } diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp index 93ebb1a0b5..0389db33e4 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp @@ -333,8 +333,7 @@ QString RimSummaryPlot::asciiDataForPlotExport() const QString RimSummaryPlot::asciiDataForSummaryPlotExport( RiaQDateTimeTools::DateTimePeriod resamplingPeriod, bool showTimeAsLongString ) const { - QString out; - RiaTimeHistoryCurveResampler resampler; + QString out; // Summary and time history (from grid) curves { diff --git a/ApplicationLibCode/ProjectDataModelCommands/RimcSummaryCase.cpp b/ApplicationLibCode/ProjectDataModelCommands/RimcSummaryCase.cpp index 1ca5ce4b3c..b6402031f5 100644 --- a/ApplicationLibCode/ProjectDataModelCommands/RimcSummaryCase.cpp +++ b/ApplicationLibCode/ProjectDataModelCommands/RimcSummaryCase.cpp @@ -20,7 +20,6 @@ #include "RiaQDateTimeTools.h" #include "RiaSummaryTools.h" -#include "RiaTimeHistoryCurveResampler.h" #include "RifSummaryReaderInterface.h" #include "RimSummaryCase.h" @@ -220,27 +219,18 @@ caf::PdmObjectHandle* RimSummaryCase_resampleValues::execute() // Error message } - auto timeValues = sumReader->timeSteps( adr ); + const auto& timeValues = sumReader->timeSteps( adr ); QString periodString = m_resamplingPeriod().trimmed(); RiaQDateTimeTools::DateTimePeriod period = RiaQDateTimeTools::DateTimePeriodEnum::fromText( periodString ); if ( period != RiaQDateTimeTools::DateTimePeriod::NONE ) { - RiaTimeHistoryCurveResampler resampler; - resampler.setCurveData( values, timeValues ); + auto [resampledTimeSteps, resampledValues] = + RiaSummaryTools::resampledValuesForPeriod( adr, timeValues, values, period ); - if ( RiaSummaryTools::hasAccumulatedData( adr ) ) - { - resampler.resampleAndComputePeriodEndValues( period ); - } - else - { - resampler.resampleAndComputeWeightedMeanValues( period ); - } - - dataObject->m_timeValues = resampler.resampledTimeSteps(); - dataObject->m_doubleValues = resampler.resampledValues(); + dataObject->m_timeValues = resampledTimeSteps; + dataObject->m_doubleValues = resampledValues; } else {