#7358 Summary Curve Resampling : Use helper code in RiaSummaryTools

This commit is contained in:
Magne Sjaastad 2021-02-12 10:50:58 +01:00
parent e76be1ebd3
commit 721d912f9e
6 changed files with 49 additions and 42 deletions

View File

@ -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<time_t>, std::vector<double>>
RiaSummaryTools::resampledValuesForPeriod( const RifEclipseSummaryAddress& address,
const std::vector<time_t>& timeSteps,
std::vector<double>& 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() };
}

View File

@ -18,6 +18,8 @@
#pragma once
#include "RiaQDateTimeTools.h"
#include <QString>
#include <vector>
@ -63,4 +65,10 @@ public:
std::vector<RifEclipseSummaryAddress>& addresses );
static QString findSuitableEnsembleName( const QStringList& summaryCaseFileNames );
static std::pair<std::vector<time_t>, std::vector<double>>
resampledValuesForPeriod( const RifEclipseSummaryAddress& address,
const std::vector<time_t>& timeSteps,
std::vector<double>& values,
RiaQDateTimeTools::DateTimePeriod period );
};

View File

@ -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<time_t> resampledTimeSteps = resampler.resampledTimeSteps();
std::vector<double> resampledValues = resampler.resampledValues();
auto [resampledTimeSteps, resampledValues] =
RiaSummaryTools::resampledValuesForPeriod( addr, timeSteps, values, RiaQDateTimeTools::DateTimePeriod::DAY );
time_t currentTime_t = currentDate.toTime_t();

View File

@ -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<RimSummaryCase*> 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<double>( resampler.resampledValues().begin(), resampler.resampledValues().end() ) );
if ( allTimeSteps.empty() ) allTimeSteps = resampledTimeSteps;
caseAndTimeStepValues.push_back( resampledValues );
}
}

View File

@ -334,7 +334,6 @@ QString RimSummaryPlot::asciiDataForSummaryPlotExport( RiaQDateTimeTools::DateTi
bool showTimeAsLongString ) const
{
QString out;
RiaTimeHistoryCurveResampler resampler;
// Summary and time history (from grid) curves
{

View File

@ -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
{