mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Remove superfluous use of epsilon in EnsembleParameter and fix test
This commit is contained in:
parent
ee5c058634
commit
447d335fc8
@ -104,19 +104,18 @@ bool EnsembleParameter::operator<( const EnsembleParameter& other ) const
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimSummaryCaseCollection::sortByBinnedVariation( std::vector<EnsembleParameter>& parameterVector )
|
void RimSummaryCaseCollection::sortByBinnedVariation( std::vector<EnsembleParameter>& parameterVector )
|
||||||
{
|
{
|
||||||
const double eps = 1.0e-8;
|
double minStdDev = std::numeric_limits<double>::infinity();
|
||||||
double minStdDev = std::numeric_limits<double>::infinity();
|
double maxStdDev = 0.0;
|
||||||
double maxStdDev = 0.0;
|
|
||||||
for ( const auto& paramPair : parameterVector )
|
for ( const auto& paramPair : parameterVector )
|
||||||
{
|
{
|
||||||
double stdDev = paramPair.normalizedStdDeviation();
|
double stdDev = paramPair.normalizedStdDeviation();
|
||||||
if ( stdDev > eps )
|
if ( stdDev != 0.0 )
|
||||||
{
|
{
|
||||||
minStdDev = std::min( minStdDev, stdDev );
|
minStdDev = std::min( minStdDev, stdDev );
|
||||||
maxStdDev = std::max( maxStdDev, stdDev );
|
maxStdDev = std::max( maxStdDev, stdDev );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( ( maxStdDev - minStdDev ) <= eps )
|
if ( ( maxStdDev - minStdDev ) <= 0.0 )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -124,7 +123,7 @@ void RimSummaryCaseCollection::sortByBinnedVariation( std::vector<EnsembleParame
|
|||||||
double delta = ( maxStdDev - minStdDev ) / EnsembleParameter::NR_OF_VARIATION_BINS;
|
double delta = ( maxStdDev - minStdDev ) / EnsembleParameter::NR_OF_VARIATION_BINS;
|
||||||
|
|
||||||
std::vector<double> bins;
|
std::vector<double> bins;
|
||||||
bins.push_back( eps );
|
bins.push_back( 0.0 );
|
||||||
for ( int i = 0; i < EnsembleParameter::NR_OF_VARIATION_BINS - 1; ++i )
|
for ( int i = 0; i < EnsembleParameter::NR_OF_VARIATION_BINS - 1; ++i )
|
||||||
{
|
{
|
||||||
bins.push_back( minStdDev + ( i + 1 ) * delta );
|
bins.push_back( minStdDev + ( i + 1 ) * delta );
|
||||||
@ -135,7 +134,7 @@ void RimSummaryCaseCollection::sortByBinnedVariation( std::vector<EnsembleParame
|
|||||||
int binNumber = -1;
|
int binNumber = -1;
|
||||||
for ( double bin : bins )
|
for ( double bin : bins )
|
||||||
{
|
{
|
||||||
if ( nameParamPair.normalizedStdDeviation() >= bin )
|
if ( nameParamPair.normalizedStdDeviation() > bin )
|
||||||
{
|
{
|
||||||
binNumber++;
|
binNumber++;
|
||||||
}
|
}
|
||||||
@ -435,8 +434,6 @@ RifReaderRftInterface* RimSummaryCaseCollection::rftStatisticsReader()
|
|||||||
const std::vector<EnsembleParameter>&
|
const std::vector<EnsembleParameter>&
|
||||||
RimSummaryCaseCollection::variationSortedEnsembleParameters( bool excludeNoVariation ) const
|
RimSummaryCaseCollection::variationSortedEnsembleParameters( bool excludeNoVariation ) const
|
||||||
{
|
{
|
||||||
const double eps = 1.0e-8;
|
|
||||||
|
|
||||||
if ( m_cachedSortedEnsembleParameters.size() ) return m_cachedSortedEnsembleParameters;
|
if ( m_cachedSortedEnsembleParameters.size() ) return m_cachedSortedEnsembleParameters;
|
||||||
|
|
||||||
std::set<QString> paramSet;
|
std::set<QString> paramSet;
|
||||||
@ -456,7 +453,7 @@ const std::vector<EnsembleParameter>&
|
|||||||
for ( const QString& parameterName : paramSet )
|
for ( const QString& parameterName : paramSet )
|
||||||
{
|
{
|
||||||
auto ensembleParameter = this->createEnsembleParameter( parameterName );
|
auto ensembleParameter = this->createEnsembleParameter( parameterName );
|
||||||
if ( !excludeNoVariation || ensembleParameter.normalizedStdDeviation() > eps )
|
if ( !excludeNoVariation || ensembleParameter.normalizedStdDeviation() != 0.0 )
|
||||||
{
|
{
|
||||||
m_cachedSortedEnsembleParameters.push_back( ensembleParameter );
|
m_cachedSortedEnsembleParameters.push_back( ensembleParameter );
|
||||||
}
|
}
|
||||||
|
@ -32,18 +32,34 @@ void RimSummaryCaseCollection_TESTER::test1()
|
|||||||
EnsembleParameter param;
|
EnsembleParameter param;
|
||||||
param.type = EnsembleParameter::TYPE_NUMERIC;
|
param.type = EnsembleParameter::TYPE_NUMERIC;
|
||||||
|
|
||||||
size_t valueCount = countDistribution( gen );
|
size_t valueCount = countDistribution( gen );
|
||||||
double meanValue = meanDistribution( gen );
|
|
||||||
double range = variationDistribution( gen );
|
double maxValue = -std::numeric_limits<double>::max();
|
||||||
std::uniform_real_distribution<double> valueDistribution( meanValue - range, meanValue + range );
|
double minValue = std::numeric_limits<double>::max();
|
||||||
double maxValue = -std::numeric_limits<double>::max();
|
|
||||||
double minValue = std::numeric_limits<double>::max();
|
// Add a few with zero variation
|
||||||
for ( size_t j = 0; j < valueCount; ++j )
|
if ( i % 100 )
|
||||||
{
|
{
|
||||||
double value = valueDistribution( gen );
|
double value = (double)i;
|
||||||
maxValue = std::max( maxValue, value );
|
maxValue = value;
|
||||||
minValue = std::min( minValue, value );
|
minValue = value;
|
||||||
param.values.push_back( QVariant( value ) );
|
for ( size_t j = 0; j < valueCount; ++j )
|
||||||
|
{
|
||||||
|
param.values.push_back( value );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
double meanValue = meanDistribution( gen );
|
||||||
|
double range = variationDistribution( gen );
|
||||||
|
std::uniform_real_distribution<double> valueDistribution( meanValue - range, meanValue + range );
|
||||||
|
for ( size_t j = 0; j < valueCount; ++j )
|
||||||
|
{
|
||||||
|
double value = valueDistribution( gen );
|
||||||
|
maxValue = std::max( maxValue, value );
|
||||||
|
minValue = std::min( minValue, value );
|
||||||
|
param.values.push_back( QVariant( value ) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
param.minValue = minValue;
|
param.minValue = minValue;
|
||||||
@ -55,6 +71,7 @@ void RimSummaryCaseCollection_TESTER::test1()
|
|||||||
param.name = QString( "%1" ).arg( i );
|
param.name = QString( "%1" ).arg( i );
|
||||||
parameters.push_back( param );
|
parameters.push_back( param );
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t previousSize = parameters.size();
|
size_t previousSize = parameters.size();
|
||||||
RimSummaryCaseCollection::sortByBinnedVariation( parameters );
|
RimSummaryCaseCollection::sortByBinnedVariation( parameters );
|
||||||
size_t currentSize = parameters.size();
|
size_t currentSize = parameters.size();
|
||||||
@ -63,7 +80,14 @@ void RimSummaryCaseCollection_TESTER::test1()
|
|||||||
int currentVariation = (int)EnsembleParameter::HIGH_VARIATION;
|
int currentVariation = (int)EnsembleParameter::HIGH_VARIATION;
|
||||||
for ( const EnsembleParameter& nameParamPair : parameters )
|
for ( const EnsembleParameter& nameParamPair : parameters )
|
||||||
{
|
{
|
||||||
EXPECT_GE( nameParamPair.variationBin, (int)EnsembleParameter::LOW_VARIATION );
|
if ( nameParamPair.normalizedStdDeviation() == 0.0 )
|
||||||
|
{
|
||||||
|
EXPECT_EQ( nameParamPair.variationBin, (int)EnsembleParameter::NO_VARIATION );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EXPECT_GE( nameParamPair.variationBin, (int)EnsembleParameter::LOW_VARIATION );
|
||||||
|
}
|
||||||
EXPECT_LE( nameParamPair.variationBin, (int)EnsembleParameter::HIGH_VARIATION );
|
EXPECT_LE( nameParamPair.variationBin, (int)EnsembleParameter::HIGH_VARIATION );
|
||||||
EXPECT_LE( nameParamPair.variationBin, currentVariation );
|
EXPECT_LE( nameParamPair.variationBin, currentVariation );
|
||||||
currentVariation = nameParamPair.variationBin;
|
currentVariation = nameParamPair.variationBin;
|
||||||
|
Loading…
Reference in New Issue
Block a user