#2146 Num Flooded PV: Add volume weighted mean for visible cells and current time step

This commit is contained in:
Rebecca Cox
2017-11-16 10:50:48 +01:00
parent 4b2af286e3
commit 49417bbb3a
13 changed files with 214 additions and 54 deletions

View File

@@ -87,6 +87,12 @@ void RigStatisticsCalculator::addDataToHistogramCalculator(RigHistogramCalculato
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigStatisticsCalculator::mobileVolumeWeightedMean(size_t timeStepIndex, double& mean)
{}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -20,8 +20,8 @@
#pragma once
#include "cvfBase.h"
#include "cvfObject.h"
#include "cvfCollection.h"
#include "cvfObject.h"
#include <vector>
@@ -49,5 +49,7 @@ public:
virtual size_t timeStepCount() = 0;
static void posNegClosestToZero(const std::vector<double>& values, double& pos, double& neg);
virtual void mobileVolumeWeightedMean(size_t timeStepIndex, double& mean);
static void posNegClosestToZero(const std::vector<double>& values, double& pos, double& neg);
};

View File

@@ -275,6 +275,19 @@ const std::vector<int>& RigStatisticsDataCache::uniqueCellScalarValues(size_t ti
return m_statsPrTs[timeStepIndex].m_uniqueValues;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigStatisticsDataCache::mobileVolumeWeightedMean(size_t timeStepIndex, double& mean)
{
if (!m_statsPrTs[timeStepIndex].m_isVolumeWeightedMeanCalculated)
{
m_statisticsCalculator->mobileVolumeWeightedMean(timeStepIndex, m_statsPrTs[timeStepIndex].m_volumeWeightedMean);
}
mean = m_statsPrTs[timeStepIndex].m_volumeWeightedMean;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -57,6 +57,8 @@ public:
const std::vector<int>& uniqueCellScalarValues();
const std::vector<int>& uniqueCellScalarValues(size_t timeStepIndex);
void mobileVolumeWeightedMean(size_t timeStepIndex, double& mean);
private:
void computeHistogramStatisticsIfNeeded();
@@ -70,18 +72,20 @@ private:
{
StatisticsValues()
{
m_minValue = HUGE_VAL;
m_maxValue = -HUGE_VAL;
m_isMaxMinCalculated = false;
m_meanValue = HUGE_VAL;
m_isMeanCalculated = false;
m_posClosestToZero = HUGE_VAL;
m_negClosestToZero = -HUGE_VAL;
m_isClosestToZeroCalculated = false;
m_p10 = HUGE_VAL;
m_p90 = HUGE_VAL;
m_valueSum = 0.0;
m_isValueSumCalculated = false;
m_minValue = HUGE_VAL;
m_maxValue = -HUGE_VAL;
m_isMaxMinCalculated = false;
m_meanValue = HUGE_VAL;
m_isMeanCalculated = false;
m_posClosestToZero = HUGE_VAL;
m_negClosestToZero = -HUGE_VAL;
m_isClosestToZeroCalculated = false;
m_p10 = HUGE_VAL;
m_p90 = HUGE_VAL;
m_valueSum = 0.0;
m_isValueSumCalculated = false;
m_volumeWeightedMean = HUGE_VAL;
m_isVolumeWeightedMeanCalculated = false;
}
double m_minValue;
@@ -101,6 +105,9 @@ private:
double m_valueSum;
bool m_isValueSumCalculated;
double m_volumeWeightedMean;
bool m_isVolumeWeightedMeanCalculated;
std::vector<size_t> m_histogram;
std::vector<int> m_uniqueValues;
};