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,
|
const RifEclipseSummaryAddress& inputAddress,
|
||||||
bool includeIncompleteCurves )
|
bool includeIncompleteCurves )
|
||||||
{
|
{
|
||||||
std::vector<RimSummaryCase*> validCases;
|
std::vector<RimSummaryCase*> validCases;
|
||||||
std::vector<std::tuple<RimSummaryCase*, time_t, time_t>> times;
|
std::vector<std::pair<RimSummaryCase*, time_t>> times;
|
||||||
|
|
||||||
time_t minTimeStep = std::numeric_limits<time_t>::max();
|
|
||||||
time_t maxTimeStep = 0;
|
time_t maxTimeStep = 0;
|
||||||
|
|
||||||
for ( auto& sumCase : allSumCases )
|
for ( auto& sumCase : allSumCases )
|
||||||
@ -242,31 +241,27 @@ std::vector<RimSummaryCase*> RimEnsembleStatisticsCase::validSummaryCases( const
|
|||||||
const std::vector<time_t>& timeSteps = reader->timeSteps( inputAddress );
|
const std::vector<time_t>& timeSteps = reader->timeSteps( inputAddress );
|
||||||
if ( !timeSteps.empty() )
|
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;
|
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 );
|
// Previous versions tested on identical first time step, this test is now removed. For large simulations with
|
||||||
time_t firstTimeStep = std::get<1>( item );
|
// numerical issues the first time step can be slightly different
|
||||||
time_t lastTimeStep = std::get<2>( item );
|
//
|
||||||
|
// https://github.com/OPM/ResInsight/issues/7774
|
||||||
if ( firstTimeStep == minTimeStep )
|
//
|
||||||
|
if ( !includeIncompleteCurves && lastTimeStep != maxTimeStep )
|
||||||
{
|
{
|
||||||
if ( !includeIncompleteCurves && lastTimeStep != maxTimeStep )
|
continue;
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
validCases.push_back( sumCase );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
validCases.push_back( sumCase );
|
||||||
}
|
}
|
||||||
return validCases;
|
return validCases;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user