mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
(#282) Added basic data structures to compute and cache unique integer values
This commit is contained in:
@@ -127,6 +127,22 @@ void RigCaseCellResultsData::meanCellScalarValues(size_t scalarResultIndex, size
|
||||
m_statisticsDataCache[scalarResultIndex]->meanCellScalarValues(timeStepIndex, meanValue);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const std::set<int>& RigCaseCellResultsData::uniqueCellScalarValues(size_t scalarResultIndex)
|
||||
{
|
||||
return m_statisticsDataCache[scalarResultIndex]->uniqueCellScalarValues();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const std::set<int>& RigCaseCellResultsData::uniqueCellScalarValues(size_t scalarResultIndex, size_t timeStepIndex)
|
||||
{
|
||||
return m_statisticsDataCache[scalarResultIndex]->uniqueCellScalarValues(timeStepIndex);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -59,6 +59,8 @@ public:
|
||||
void p10p90CellScalarValues(size_t scalarResultIndex, size_t timeStepIndex, double& p10, double& p90);
|
||||
void meanCellScalarValues(size_t scalarResultIndex, double& meanValue);
|
||||
void meanCellScalarValues(size_t scalarResultIndex, size_t timeStepIndex, double& meanValue);
|
||||
const std::set<int>& uniqueCellScalarValues(size_t scalarResultIndex);
|
||||
const std::set<int>& uniqueCellScalarValues(size_t scalarResultIndex, size_t timeStepIndex);
|
||||
void sumCellScalarValues(size_t scalarResultIndex, double& sumValue);
|
||||
void sumCellScalarValues(size_t scalarResultIndex, size_t timeStepIndex, double& sumValue);
|
||||
|
||||
|
||||
@@ -97,6 +97,20 @@ void RigEclipseMultiPropertyStatCalc::addDataToHistogramCalculator(size_t timeSt
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RigEclipseMultiPropertyStatCalc::uniqueValues(size_t timeStepIndex, std::set<int>& values)
|
||||
{
|
||||
for (size_t i = 0; i < m_nativeStatisticsCalculators.size(); i++)
|
||||
{
|
||||
if (m_nativeStatisticsCalculators.at(i))
|
||||
{
|
||||
m_nativeStatisticsCalculators.at(i)->uniqueValues(timeStepIndex, values);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -48,6 +48,8 @@ public:
|
||||
|
||||
virtual void addDataToHistogramCalculator(size_t timeStepIndex, RigHistogramCalculator& histogramCalculator);
|
||||
|
||||
virtual void uniqueValues(size_t timeStepIndex, std::set<int>& values);
|
||||
|
||||
virtual size_t timeStepCount();
|
||||
|
||||
private:
|
||||
|
||||
@@ -83,6 +83,19 @@ void RigEclipseNativeStatCalc::addDataToHistogramCalculator(size_t timeStepIndex
|
||||
histogramCalculator.addData(values);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RigEclipseNativeStatCalc::uniqueValues(size_t timeStepIndex, std::set<int>& values)
|
||||
{
|
||||
std::vector<double>& doubleValues = m_resultsData->cellScalarResults(m_scalarResultIndex, timeStepIndex);
|
||||
|
||||
for (size_t cIdx = 0; cIdx < doubleValues.size(); ++cIdx)
|
||||
{
|
||||
values.insert(std::floor(doubleValues[cIdx]));
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -43,6 +43,8 @@ public:
|
||||
|
||||
virtual void addDataToHistogramCalculator(size_t timeStepIndex, RigHistogramCalculator& histogramCalculator);
|
||||
|
||||
virtual void uniqueValues(size_t timeStepIndex, std::set<int>& values);
|
||||
|
||||
virtual size_t timeStepCount();
|
||||
|
||||
private:
|
||||
|
||||
@@ -80,6 +80,16 @@ void RigEclipseNativeVisibleCellsStatCalc::addDataToHistogramCalculator(size_t t
|
||||
traverseCells(histogramCalculator, timeStepIndex);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RigEclipseNativeVisibleCellsStatCalc::uniqueValues(size_t timeStepIndex, std::set<int>& values)
|
||||
{
|
||||
UniqueValueAccumulator acc;
|
||||
traverseCells(acc, timeStepIndex);
|
||||
values = acc.uniqueValues;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -43,6 +43,7 @@ public:
|
||||
virtual void posNegClosestToZero(size_t timeStepIndex, double& pos, double& neg);
|
||||
virtual void valueSumAndSampleCount(size_t timeStepIndex, double& valueSum, size_t& sampleCount);
|
||||
virtual void addDataToHistogramCalculator(size_t timeStepIndex, RigHistogramCalculator& histogramCalculator);
|
||||
virtual void uniqueValues(size_t timeStepIndex, std::set<int>& values);
|
||||
virtual size_t timeStepCount();
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user