Skip to content

Commit

Permalink
#9773 Ensemble statistics: determine sub-sampling period dynamically.
Browse files Browse the repository at this point in the history
  • Loading branch information
kriben committed Apr 19, 2023
1 parent 7d5e6ba commit d49affc
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
#include "RifEnsembleStatisticsReader.h"

#include "RiaSummaryTools.h"
#include "RiaTimeHistoryCurveResampler.h"

#include "RigStatisticsMath.h"

Expand Down Expand Up @@ -146,6 +147,10 @@ void RimEnsembleStatisticsCase::calculate( const std::vector<RimSummaryCase*>& s

if ( !inputAddress.isValid() ) return;

auto [minTimeStep, maxTimeStep] = findMinMaxTimeStep( sumCases, inputAddress );

RiaDefines::DateTimePeriod period = findBestResamplingPeriod( minTimeStep, maxTimeStep );

caseAndTimeStepValues.reserve( sumCases.size() );
for ( const auto& sumCase : sumCases )
{
Expand All @@ -160,8 +165,7 @@ void RimEnsembleStatisticsCase::calculate( const std::vector<RimSummaryCase*>& s

if ( !includeIncompleteCurves && timeSteps.size() != values.size() ) continue;

auto [resampledTimeSteps, resampledValues] =
RiaSummaryTools::resampledValuesForPeriod( inputAddress, timeSteps, values, RiaDefines::DateTimePeriod::DAY );
auto [resampledTimeSteps, resampledValues] = RiaSummaryTools::resampledValuesForPeriod( inputAddress, timeSteps, values, period );

if ( allTimeSteps.empty() ) allTimeSteps = resampledTimeSteps;
caseAndTimeStepValues.push_back( resampledValues );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@

#pragma once

#include "RiaDateTimeDefines.h"
#include "RiaDefines.h"

#include "RifEclipseSummaryAddress.h"

#include "RimSummaryCase.h"
Expand Down Expand Up @@ -62,6 +64,7 @@ class RimEnsembleStatisticsCase : public RimSummaryCase
bool includeIncompleteCurves );
static std::pair<time_t, time_t> findMinMaxTimeStep( const std::vector<RimSummaryCase*>& sumCases,
const RifEclipseSummaryAddress& inputAddress );
static RiaDefines::DateTimePeriod findBestResamplingPeriod( time_t minTimeStep, time_t maxTimeStep );

private:
std::unique_ptr<RifEnsembleStatisticsReader> m_statisticsReader;
Expand Down

0 comments on commit d49affc

Please sign in to comment.