mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#7774 Ensemble Statistics : Remove test for match on first reported simulation time step
When computing statistics curves for an ensemble, we computed these values based on curves having identical same timestamp as the first summary case in the ensemble. If the simulator had numerical issues, this first time step can be slightly different from case to case. Remove this test on first time step, but keep the optional test on last time step.
This commit is contained in:
parent
2885f829b8
commit
60dbb8a715
@ -228,10 +228,9 @@ std::vector<RimSummaryCase*> RimEnsembleStatisticsCase::validSummaryCases( const
|
||||
const RifEclipseSummaryAddress& inputAddress,
|
||||
bool includeIncompleteCurves )
|
||||
{
|
||||
std::vector<RimSummaryCase*> validCases;
|
||||
std::vector<std::tuple<RimSummaryCase*, time_t, time_t>> times;
|
||||
std::vector<RimSummaryCase*> validCases;
|
||||
std::vector<std::pair<RimSummaryCase*, time_t>> times;
|
||||
|
||||
time_t minTimeStep = std::numeric_limits<time_t>::max();
|
||||
time_t maxTimeStep = 0;
|
||||
|
||||
for ( auto& sumCase : allSumCases )
|
||||
@ -242,31 +241,27 @@ std::vector<RimSummaryCase*> RimEnsembleStatisticsCase::validSummaryCases( const
|
||||
const std::vector<time_t>& timeSteps = reader->timeSteps( inputAddress );
|
||||
if ( !timeSteps.empty() )
|
||||
{
|
||||
time_t firstTimeStep = timeSteps.front();
|
||||
time_t lastTimeStep = timeSteps.back();
|
||||
time_t lastTimeStep = timeSteps.back();
|
||||
|
||||
if ( firstTimeStep < minTimeStep ) minTimeStep = firstTimeStep;
|
||||
if ( lastTimeStep > maxTimeStep ) maxTimeStep = lastTimeStep;
|
||||
times.push_back( std::make_tuple( sumCase, firstTimeStep, lastTimeStep ) );
|
||||
times.push_back( std::make_pair( sumCase, lastTimeStep ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for ( auto& item : times )
|
||||
for ( const auto [sumCase, lastTimeStep] : times )
|
||||
{
|
||||
RimSummaryCase* sumCase = std::get<0>( item );
|
||||
time_t firstTimeStep = std::get<1>( item );
|
||||
time_t lastTimeStep = std::get<2>( item );
|
||||
|
||||
if ( firstTimeStep == minTimeStep )
|
||||
// Previous versions tested on identical first time step, this test is now removed. For large simulations with
|
||||
// numerical issues the first time step can be slightly different
|
||||
//
|
||||
// https://github.com/OPM/ResInsight/issues/7774
|
||||
//
|
||||
if ( !includeIncompleteCurves && lastTimeStep != maxTimeStep )
|
||||
{
|
||||
if ( !includeIncompleteCurves && lastTimeStep != maxTimeStep )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
validCases.push_back( sumCase );
|
||||
continue;
|
||||
}
|
||||
|
||||
validCases.push_back( sumCase );
|
||||
}
|
||||
return validCases;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user