#7190 Correlation Parameters : Fix cache inconsistencies

This commit is contained in:
Magne Sjaastad 2021-01-11 15:44:27 +01:00
parent 493f257e5e
commit 97114f4554
2 changed files with 32 additions and 19 deletions

View File

@ -452,18 +452,17 @@ RifReaderRftInterface* RimSummaryCaseCollection::rftStatisticsReader()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const std::vector<EnsembleParameter>&
RimSummaryCaseCollection::variationSortedEnsembleParameters( bool excludeNoVariation ) const
std::vector<EnsembleParameter> RimSummaryCaseCollection::variationSortedEnsembleParameters( bool excludeNoVariation ) const
{
if ( m_cachedSortedEnsembleParameters.empty() )
{
if ( m_cachedSortedEnsembleParameters.size() ) return m_cachedSortedEnsembleParameters;
std::set<QString> paramSet;
for ( RimSummaryCase* rimCase : this->allSummaryCases() )
{
if ( rimCase->caseRealizationParameters() != nullptr )
{
auto ps = rimCase->caseRealizationParameters()->parameters();
for ( auto p : ps )
for ( const auto& p : ps )
{
paramSet.insert( p.first );
}
@ -474,15 +473,29 @@ const std::vector<EnsembleParameter>&
for ( const QString& parameterName : paramSet )
{
auto ensembleParameter = this->createEnsembleParameter( parameterName );
if ( !excludeNoVariation || ensembleParameter.normalizedStdDeviation() != 0.0 )
{
m_cachedSortedEnsembleParameters.push_back( ensembleParameter );
}
}
RimSummaryCaseCollection::sortByBinnedVariation( m_cachedSortedEnsembleParameters );
}
if ( !excludeNoVariation )
{
return m_cachedSortedEnsembleParameters;
}
else
{
const double epsilon = 1e-9;
std::vector<EnsembleParameter> parametersWithVariation;
for ( const auto& p : m_cachedSortedEnsembleParameters )
{
if ( std::abs( p.normalizedStdDeviation() ) > epsilon )
{
parametersWithVariation.push_back( p );
}
}
return parametersWithVariation;
}
}
//--------------------------------------------------------------------------------------------------
///

View File

@ -117,7 +117,7 @@ public:
int ensembleId() const;
bool hasEnsembleParameters() const;
const std::vector<EnsembleParameter>& variationSortedEnsembleParameters( bool excludeNoVariation = false ) const;
std::vector<EnsembleParameter> variationSortedEnsembleParameters( bool excludeNoVariation = false ) const;
std::vector<std::pair<EnsembleParameter, double>>
correlationSortedEnsembleParameters( const RifEclipseSummaryAddress& address ) const;
std::vector<std::pair<EnsembleParameter, double>>