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 )
|
||||
{
|
||||
const double eps = 1.0e-8;
|
||||
double minStdDev = std::numeric_limits<double>::infinity();
|
||||
double maxStdDev = 0.0;
|
||||
double minStdDev = std::numeric_limits<double>::infinity();
|
||||
double maxStdDev = 0.0;
|
||||
for ( const auto& paramPair : parameterVector )
|
||||
{
|
||||
double stdDev = paramPair.normalizedStdDeviation();
|
||||
if ( stdDev > eps )
|
||||
if ( stdDev != 0.0 )
|
||||
{
|
||||
minStdDev = std::min( minStdDev, stdDev );
|
||||
maxStdDev = std::max( maxStdDev, stdDev );
|
||||
}
|
||||
}
|
||||
if ( ( maxStdDev - minStdDev ) <= eps )
|
||||
if ( ( maxStdDev - minStdDev ) <= 0.0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
@ -124,7 +123,7 @@ void RimSummaryCaseCollection::sortByBinnedVariation( std::vector<EnsembleParame
|
||||
double delta = ( maxStdDev - minStdDev ) / EnsembleParameter::NR_OF_VARIATION_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 )
|
||||
{
|
||||
bins.push_back( minStdDev + ( i + 1 ) * delta );
|
||||
@ -135,7 +134,7 @@ void RimSummaryCaseCollection::sortByBinnedVariation( std::vector<EnsembleParame
|
||||
int binNumber = -1;
|
||||
for ( double bin : bins )
|
||||
{
|
||||
if ( nameParamPair.normalizedStdDeviation() >= bin )
|
||||
if ( nameParamPair.normalizedStdDeviation() > bin )
|
||||
{
|
||||
binNumber++;
|
||||
}
|
||||
@ -435,8 +434,6 @@ RifReaderRftInterface* RimSummaryCaseCollection::rftStatisticsReader()
|
||||
const std::vector<EnsembleParameter>&
|
||||
RimSummaryCaseCollection::variationSortedEnsembleParameters( bool excludeNoVariation ) const
|
||||
{
|
||||
const double eps = 1.0e-8;
|
||||
|
||||
if ( m_cachedSortedEnsembleParameters.size() ) return m_cachedSortedEnsembleParameters;
|
||||
|
||||
std::set<QString> paramSet;
|
||||
@ -456,7 +453,7 @@ const std::vector<EnsembleParameter>&
|
||||
for ( const QString& parameterName : paramSet )
|
||||
{
|
||||
auto ensembleParameter = this->createEnsembleParameter( parameterName );
|
||||
if ( !excludeNoVariation || ensembleParameter.normalizedStdDeviation() > eps )
|
||||
if ( !excludeNoVariation || ensembleParameter.normalizedStdDeviation() != 0.0 )
|
||||
{
|
||||
m_cachedSortedEnsembleParameters.push_back( ensembleParameter );
|
||||
}
|
||||
|
@ -32,18 +32,34 @@ void RimSummaryCaseCollection_TESTER::test1()
|
||||
EnsembleParameter param;
|
||||
param.type = EnsembleParameter::TYPE_NUMERIC;
|
||||
|
||||
size_t valueCount = countDistribution( gen );
|
||||
double meanValue = meanDistribution( gen );
|
||||
double range = variationDistribution( gen );
|
||||
std::uniform_real_distribution<double> valueDistribution( meanValue - range, meanValue + range );
|
||||
double maxValue = -std::numeric_limits<double>::max();
|
||||
double minValue = std::numeric_limits<double>::max();
|
||||
for ( size_t j = 0; j < valueCount; ++j )
|
||||
size_t valueCount = countDistribution( gen );
|
||||
|
||||
double maxValue = -std::numeric_limits<double>::max();
|
||||
double minValue = std::numeric_limits<double>::max();
|
||||
|
||||
// Add a few with zero variation
|
||||
if ( i % 100 )
|
||||
{
|
||||
double value = valueDistribution( gen );
|
||||
maxValue = std::max( maxValue, value );
|
||||
minValue = std::min( minValue, value );
|
||||
param.values.push_back( QVariant( value ) );
|
||||
double value = (double)i;
|
||||
maxValue = value;
|
||||
minValue = 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;
|
||||
@ -55,6 +71,7 @@ void RimSummaryCaseCollection_TESTER::test1()
|
||||
param.name = QString( "%1" ).arg( i );
|
||||
parameters.push_back( param );
|
||||
}
|
||||
|
||||
size_t previousSize = parameters.size();
|
||||
RimSummaryCaseCollection::sortByBinnedVariation( parameters );
|
||||
size_t currentSize = parameters.size();
|
||||
@ -63,7 +80,14 @@ void RimSummaryCaseCollection_TESTER::test1()
|
||||
int currentVariation = (int)EnsembleParameter::HIGH_VARIATION;
|
||||
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, currentVariation );
|
||||
currentVariation = nameParamPair.variationBin;
|
||||
|
Loading…
Reference in New Issue
Block a user