mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-09 23:16:00 -06:00
Refactoring to access pr timestep data from the statistics calculation.
This commit is contained in:
parent
e8cf23b341
commit
738af9c88e
@ -92,53 +92,48 @@ void RigFemNativeStatCalc::posNegClosestToZero(size_t timeStepIndex, double& pos
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RigFemNativeStatCalc::valueSumAndSampleCount(double& valueSum, size_t& sampleCount)
|
||||
void RigFemNativeStatCalc::valueSumAndSampleCount(size_t timeStepIndex, double& valueSum, size_t& sampleCount)
|
||||
{
|
||||
int timestepCount = (int)(this->timeStepCount());
|
||||
int partCount = static_cast<int>(m_resultsData->m_femPartResults.size());
|
||||
int tsIdx = static_cast<int>(timeStepIndex);
|
||||
int partCount = static_cast<int>(m_resultsData->m_femPartResults.size());
|
||||
|
||||
for (int pIdx = 0; pIdx < partCount; ++pIdx)
|
||||
{
|
||||
for (int tIdx = 0; tIdx < timestepCount; tIdx++)
|
||||
{
|
||||
const std::vector<float>& values = m_resultsData->resultValues(m_resVarAddr, pIdx, tIdx);
|
||||
size_t undefValueCount = 0;
|
||||
for (size_t cIdx = 0; cIdx < values.size(); ++cIdx)
|
||||
{
|
||||
double value = values[cIdx];
|
||||
if (value == HUGE_VAL || value != value)
|
||||
{
|
||||
++undefValueCount;
|
||||
continue;
|
||||
}
|
||||
for (int pIdx = 0; pIdx < partCount; ++pIdx)
|
||||
{
|
||||
const std::vector<float>& values = m_resultsData->resultValues(m_resVarAddr, pIdx, tsIdx);
|
||||
size_t undefValueCount = 0;
|
||||
for (size_t cIdx = 0; cIdx < values.size(); ++cIdx)
|
||||
{
|
||||
double value = values[cIdx];
|
||||
if (value == HUGE_VAL || value != value)
|
||||
{
|
||||
++undefValueCount;
|
||||
continue;
|
||||
}
|
||||
|
||||
valueSum += value;
|
||||
}
|
||||
valueSum += value;
|
||||
}
|
||||
|
||||
sampleCount += values.size();
|
||||
sampleCount -= undefValueCount;
|
||||
}
|
||||
}
|
||||
sampleCount += values.size();
|
||||
sampleCount -= undefValueCount;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RigFemNativeStatCalc::addDataToHistogramCalculator(RigHistogramCalculator& histogramCalculator)
|
||||
void RigFemNativeStatCalc::addDataToHistogramCalculator(size_t timeStepIndex, RigHistogramCalculator& histogramCalculator)
|
||||
{
|
||||
int timestepCount = (int)(this->timeStepCount());
|
||||
int partCount = static_cast<int>(m_resultsData->m_femPartResults.size());
|
||||
for (int pIdx = 0; pIdx < partCount; ++pIdx)
|
||||
{
|
||||
for (int tIdx = 0; tIdx < timestepCount; tIdx++)
|
||||
{
|
||||
const std::vector<float>& values = m_resultsData->resultValues(m_resVarAddr, pIdx, tIdx);
|
||||
const std::vector<float>& values = m_resultsData->resultValues(m_resVarAddr, pIdx, static_cast<int>(timeStepIndex));
|
||||
|
||||
histogramCalculator.addData(values);
|
||||
}
|
||||
histogramCalculator.addData(values);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -37,9 +37,11 @@ public:
|
||||
|
||||
virtual void minMaxCellScalarValues(size_t timeStepIndex, double& min, double& max);
|
||||
virtual void posNegClosestToZero(size_t timeStepIndex, double& pos, double& neg);
|
||||
virtual void valueSumAndSampleCount(double& valueSum, size_t& sampleCount);
|
||||
|
||||
virtual void addDataToHistogramCalculator(RigHistogramCalculator& histogramCalculator);
|
||||
virtual void valueSumAndSampleCount(size_t timeStepIndex, double& valueSum, size_t& sampleCount);
|
||||
|
||||
virtual void addDataToHistogramCalculator(size_t timeStepIndex, RigHistogramCalculator& histogramCalculator);
|
||||
|
||||
virtual size_t timeStepCount();
|
||||
|
||||
private:
|
||||
|
@ -41,7 +41,37 @@
|
||||
#include "RigFemResultAddress.h"
|
||||
#include "RigFemPartResultsCollection.h"
|
||||
|
||||
#include "RigStatisticsDataCache.h"
|
||||
|
||||
CAF_PDM_SOURCE_INIT(Rim3dOverlayInfoConfig, "View3dOverlayInfoConfig");
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
namespace caf
|
||||
{
|
||||
template<>
|
||||
void caf::AppEnum<Rim3dOverlayInfoConfig::StatisticsTimeRangeType>::setUp()
|
||||
{
|
||||
addItem(Rim3dOverlayInfoConfig::ALL_TIMESTEPS, "ALL_TIMESTEPS", "All Time Steps");
|
||||
addItem(Rim3dOverlayInfoConfig::CURRENT_TIMESTEP, "CURRENT_TIMESTEP", "Current Time Step");
|
||||
setDefault(Rim3dOverlayInfoConfig::ALL_TIMESTEPS);
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
namespace caf
|
||||
{
|
||||
template<>
|
||||
void caf::AppEnum<Rim3dOverlayInfoConfig::StatisticsCellRangeType>::setUp()
|
||||
{
|
||||
addItem(Rim3dOverlayInfoConfig::ALL_CELLS, "ALL_CELLS", "All Active Cells");
|
||||
addItem(Rim3dOverlayInfoConfig::VISIBLE_CELLS, "VISIBLE_CELLS", "Visible Cells");
|
||||
setDefault(Rim3dOverlayInfoConfig::ALL_CELLS);
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
@ -56,6 +86,9 @@ Rim3dOverlayInfoConfig::Rim3dOverlayInfoConfig()
|
||||
CAF_PDM_InitField(&showInfoText, "ShowInfoText", true, "Info Text", "", "", "");
|
||||
CAF_PDM_InitField(&showAnimProgress, "ShowAnimProgress", true, "Animation progress", "", "", "");
|
||||
CAF_PDM_InitField(&showHistogram, "ShowHistogram", true, "Histogram", "", "", "");
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_statisticsTimeRange, "StatisticsTimeRange", "Statistics Time Range", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_statisticsCellRange, "StatisticsCellRange", "Statistics Cell Range", "", "", "");
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -111,7 +144,7 @@ void Rim3dOverlayInfoConfig::update3DInfo()
|
||||
m_viewDef->viewer()->showAnimationProgress(showAnimProgress());
|
||||
|
||||
RimEclipseView * reservoirView = dynamic_cast<RimEclipseView*>(m_viewDef.p());
|
||||
if (reservoirView) updateReservoir3DInfo(reservoirView);
|
||||
if (reservoirView) updateEclipse3DInfo(reservoirView);
|
||||
RimGeoMechView * geoMechView = dynamic_cast<RimGeoMechView*>(m_viewDef.p());
|
||||
if (geoMechView) updateGeoMech3DInfo(geoMechView);
|
||||
}
|
||||
@ -135,7 +168,7 @@ void Rim3dOverlayInfoConfig::setReservoirView(RimView* ownerReservoirView)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void Rim3dOverlayInfoConfig::updateReservoir3DInfo(RimEclipseView * reservoirView)
|
||||
void Rim3dOverlayInfoConfig::updateEclipse3DInfo(RimEclipseView * reservoirView)
|
||||
{
|
||||
if (showInfoText())
|
||||
{
|
||||
@ -183,19 +216,38 @@ void Rim3dOverlayInfoConfig::updateReservoir3DInfo(RimEclipseView * reservoirVie
|
||||
if (reservoirView->hasUserRequestedAnimation() && reservoirView->cellResult()->hasResult())
|
||||
{
|
||||
infoText += QString("<b>Cell Property:</b> %1 ").arg(propName);
|
||||
// Wait until regression tests confirm new statisticks is ok infoText += QString("<br>Statistics for: ") + m_statisticsTimeRange().uiText() + " and " + m_statisticsCellRange().uiText();
|
||||
|
||||
double min, max;
|
||||
double p10, p90;
|
||||
double mean;
|
||||
size_t scalarIndex = reservoirView->cellResult()->scalarResultIndex();
|
||||
reservoirView->currentGridCellResults()->cellResults()->minMaxCellScalarValues(scalarIndex, min, max);
|
||||
reservoirView->currentGridCellResults()->cellResults()->p10p90CellScalarValues(scalarIndex, p10, p90);
|
||||
reservoirView->currentGridCellResults()->cellResults()->meanCellScalarValues(scalarIndex, mean);
|
||||
if (m_statisticsCellRange == ALL_CELLS)
|
||||
{
|
||||
double min, max;
|
||||
double p10, p90;
|
||||
double mean;
|
||||
|
||||
size_t scalarIndex = reservoirView->cellResult()->scalarResultIndex();
|
||||
|
||||
//infoText += QString("<blockquote><b>Min:</b> %1 <b>P10:</b> %2 <b>Mean:</b> %3 <b>P90:</b> %4 <b>Max:</b> %5 </blockquote>").arg(min).arg(p10).arg(mean).arg(p90).arg(max);
|
||||
//infoText += QString("<blockquote><pre>Min: %1 P10: %2 Mean: %3 \n P90: %4 Max: %5 </pre></blockquote>").arg(min).arg(p10).arg(mean).arg(p90).arg(max);
|
||||
infoText += QString("<table border=0 cellspacing=5 ><tr><td>Min</td><td>P10</td> <td>Mean</td> <td>P90</td> <td>Max</td> </tr>"
|
||||
"<tr><td>%1</td><td> %2</td><td> %3</td><td> %4</td><td> %5 </td></tr></table>").arg(min).arg(p10).arg(mean).arg(p90).arg(max);
|
||||
if (m_statisticsTimeRange == ALL_TIMESTEPS)
|
||||
{
|
||||
reservoirView->currentGridCellResults()->cellResults()->minMaxCellScalarValues(scalarIndex, min, max);
|
||||
reservoirView->currentGridCellResults()->cellResults()->p10p90CellScalarValues(scalarIndex, p10, p90);
|
||||
reservoirView->currentGridCellResults()->cellResults()->meanCellScalarValues(scalarIndex, mean);
|
||||
}
|
||||
else if (m_statisticsTimeRange == CURRENT_TIMESTEP)
|
||||
{
|
||||
int timeStepIdx = reservoirView->currentTimeStep();
|
||||
reservoirView->currentGridCellResults()->cellResults()->minMaxCellScalarValues(scalarIndex, timeStepIdx, min, max);
|
||||
//reservoirView->currentGridCellResults()->cellResults()->p10p90CellScalarValues(scalarIndex, timeStepIdx, p10, p90);
|
||||
//reservoirView->currentGridCellResults()->cellResults()->meanCellScalarValues(scalarIndex, timeStepIdx, mean);
|
||||
p10 = HUGE_VAL;
|
||||
p90 = HUGE_VAL;
|
||||
mean = HUGE_VAL;
|
||||
}
|
||||
|
||||
infoText += QString("<table border=0 cellspacing=5 >"
|
||||
"<tr> <td>Min</td> <td>P10</td> <td>Mean</td> <td>P90</td> <td>Max</td> </tr>"
|
||||
"<tr> <td>%1</td> <td> %2</td> <td> %3</td> <td> %4</td> <td> %5 </td></tr>"
|
||||
"</table>").arg(min).arg(p10).arg(mean).arg(p90).arg(max);
|
||||
}
|
||||
|
||||
if (reservoirView->faultResultSettings()->hasValidCustomResult())
|
||||
{
|
||||
@ -257,6 +309,8 @@ void Rim3dOverlayInfoConfig::updateReservoir3DInfo(RimEclipseView * reservoirVie
|
||||
{
|
||||
if (reservoirView->hasUserRequestedAnimation() && reservoirView->cellResult()->hasResult())
|
||||
{
|
||||
if (m_statisticsCellRange == ALL_CELLS && m_statisticsTimeRange == ALL_TIMESTEPS)
|
||||
{
|
||||
double min, max;
|
||||
double p10, p90;
|
||||
double mean;
|
||||
@ -269,6 +323,7 @@ void Rim3dOverlayInfoConfig::updateReservoir3DInfo(RimEclipseView * reservoirVie
|
||||
reservoirView->viewer()->showHistogram(true);
|
||||
reservoirView->viewer()->setHistogram(min, max, reservoirView->currentGridCellResults()->cellResults()->cellScalarValuesHistogram(scalarIndex));
|
||||
reservoirView->viewer()->setHistogramPercentiles(p10, p90, mean);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -322,8 +377,7 @@ void Rim3dOverlayInfoConfig::updateGeoMech3DInfo(RimGeoMechView * geoMechView)
|
||||
break;
|
||||
}
|
||||
|
||||
infoText += QString(
|
||||
"<b>Cell result:</b> %1, %2, %3").arg(resultPos).arg(fieldName).arg(compName);
|
||||
infoText += QString("<b>Cell result:</b> %1, %2, %3").arg(resultPos).arg(fieldName).arg(compName);
|
||||
|
||||
double min = 0, max = 0;
|
||||
double p10 = 0, p90 = 0;
|
||||
@ -332,13 +386,12 @@ void Rim3dOverlayInfoConfig::updateGeoMech3DInfo(RimGeoMechView * geoMechView)
|
||||
RigFemResultAddress resAddress = geoMechView->cellResult()->resultAddress();
|
||||
caseData->femPartResults()->meanScalarValue(resAddress, &mean);
|
||||
caseData->femPartResults()->minMaxScalarValues(resAddress,&min, &max);
|
||||
|
||||
// ToDo: Implement statistics for geomech data
|
||||
|
||||
caseData->femPartResults()->p10p90ScalarValues(resAddress, &p10, &p90);
|
||||
|
||||
infoText += QString("<table border=0 cellspacing=5 ><tr><td>Min</td><td>P10</td> <td>Mean</td> <td>P90</td> <td>Max</td> </tr>"
|
||||
"<tr><td>%1</td><td> %2</td><td> %3</td><td> %4</td><td> %5 </td></tr></table>").arg(min).arg(p10).arg(mean).arg(p90).arg(max);
|
||||
infoText += QString("<table border=0 cellspacing=5 >"
|
||||
"<tr> <td>Min</td> <td>P10</td> <td>Mean</td> <td>P90</td> <td>Max</td> </tr>"
|
||||
"<tr> <td>%1</td> <td> %2</td> <td> %3</td> <td> %4</td> <td> %5</td> </tr>"
|
||||
"</table>").arg(min).arg(p10).arg(mean).arg(p90).arg(max);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -24,12 +24,14 @@
|
||||
#include "cafAppEnum.h"
|
||||
|
||||
#include "cvfAssert.h"
|
||||
#include "cvfObject.h"
|
||||
|
||||
#include "cvfVector2.h"
|
||||
|
||||
class RimEclipseView;
|
||||
class RimGeoMechView;
|
||||
class RimView;
|
||||
class RigStatisticsDataCache;
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
@ -51,18 +53,34 @@ public:
|
||||
caf::PdmField<bool> showInfoText;
|
||||
caf::PdmField<bool> showAnimProgress;
|
||||
caf::PdmField<bool> showHistogram;
|
||||
|
||||
|
||||
enum StatisticsTimeRangeType
|
||||
{
|
||||
ALL_TIMESTEPS,
|
||||
CURRENT_TIMESTEP
|
||||
};
|
||||
|
||||
enum StatisticsCellRangeType
|
||||
{
|
||||
ALL_CELLS,
|
||||
VISIBLE_CELLS
|
||||
};
|
||||
|
||||
protected:
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
|
||||
virtual caf::PdmFieldHandle* objectToggleField();
|
||||
private:
|
||||
|
||||
void updateReservoir3DInfo(RimEclipseView * reservoirView);
|
||||
void updateEclipse3DInfo(RimEclipseView * reservoirView);
|
||||
void updateGeoMech3DInfo(RimGeoMechView * geoMechView);
|
||||
|
||||
|
||||
caf::PdmField<caf::AppEnum<StatisticsTimeRangeType> > m_statisticsTimeRange;
|
||||
caf::PdmField<caf::AppEnum<StatisticsCellRangeType> > m_statisticsCellRange;
|
||||
|
||||
caf::PdmPointer<RimView> m_viewDef;
|
||||
|
||||
cvf::Vec2ui m_position;
|
||||
|
||||
cvf::ref<RigStatisticsDataCache> m_visibleCellStatistics;
|
||||
|
||||
};
|
||||
|
@ -67,30 +67,32 @@ void RigMultipleDatasetStatCalc::posNegClosestToZero(size_t timeStepIndex, doubl
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RigMultipleDatasetStatCalc::valueSumAndSampleCount(double& valueSum, size_t& sampleCount)
|
||||
{
|
||||
for (size_t i = 0; i < m_nativeStatisticsCalculators.size(); i++)
|
||||
{
|
||||
if (m_nativeStatisticsCalculators.at(i))
|
||||
{
|
||||
m_nativeStatisticsCalculators.at(i)->valueSumAndSampleCount(valueSum, sampleCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RigMultipleDatasetStatCalc::addDataToHistogramCalculator(RigHistogramCalculator& histogramCalculator)
|
||||
void RigMultipleDatasetStatCalc::valueSumAndSampleCount(size_t timeStepIndex, double& valueSum, size_t& sampleCount)
|
||||
{
|
||||
for (size_t i = 0; i < m_nativeStatisticsCalculators.size(); i++)
|
||||
{
|
||||
if (m_nativeStatisticsCalculators.at(i))
|
||||
{
|
||||
m_nativeStatisticsCalculators.at(i)->addDataToHistogramCalculator(histogramCalculator);
|
||||
m_nativeStatisticsCalculators.at(i)->valueSumAndSampleCount(timeStepIndex, valueSum, sampleCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RigMultipleDatasetStatCalc::addDataToHistogramCalculator(size_t timeStepIndex, RigHistogramCalculator& histogramCalculator)
|
||||
{
|
||||
for (size_t i = 0; i < m_nativeStatisticsCalculators.size(); i++)
|
||||
{
|
||||
if (m_nativeStatisticsCalculators.at(i))
|
||||
{
|
||||
m_nativeStatisticsCalculators.at(i)->addDataToHistogramCalculator(timeStepIndex, histogramCalculator);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -44,8 +44,9 @@ public:
|
||||
virtual void minMaxCellScalarValues(size_t timeStepIndex, double& min, double& max);
|
||||
virtual void posNegClosestToZero(size_t timeStepIndex, double& pos, double& neg);
|
||||
|
||||
virtual void valueSumAndSampleCount(double& valueSum, size_t& sampleCount);
|
||||
virtual void addDataToHistogramCalculator(RigHistogramCalculator& histogramCalculator);
|
||||
virtual void valueSumAndSampleCount(size_t timeStepIndex, double& valueSum, size_t& sampleCount);
|
||||
|
||||
virtual void addDataToHistogramCalculator(size_t timeStepIndex, RigHistogramCalculator& histogramCalculator);
|
||||
|
||||
virtual size_t timeStepCount();
|
||||
|
||||
|
@ -94,40 +94,36 @@ void RigNativeStatCalc::posNegClosestToZero(size_t timeStepIndex, double& pos, d
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RigNativeStatCalc::addDataToHistogramCalculator(RigHistogramCalculator& histogramCalculator)
|
||||
void RigNativeStatCalc::addDataToHistogramCalculator(size_t timeStepIndex, RigHistogramCalculator& histogramCalculator)
|
||||
{
|
||||
for (size_t tIdx = 0; tIdx < m_resultsData->timeStepCount(m_scalarResultIndex); tIdx++)
|
||||
{
|
||||
std::vector<double>& values = m_resultsData->cellScalarResults(m_scalarResultIndex, tIdx);
|
||||
std::vector<double>& values = m_resultsData->cellScalarResults(m_scalarResultIndex, timeStepIndex);
|
||||
|
||||
histogramCalculator.addData(values);
|
||||
}
|
||||
histogramCalculator.addData(values);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RigNativeStatCalc::valueSumAndSampleCount(double& valueSum, size_t& sampleCount)
|
||||
void RigNativeStatCalc::valueSumAndSampleCount(size_t timeStepIndex, double& valueSum, size_t& sampleCount)
|
||||
{
|
||||
for (size_t tIdx = 0; tIdx < m_resultsData->timeStepCount(m_scalarResultIndex); tIdx++)
|
||||
std::vector<double>& values = m_resultsData->cellScalarResults(m_scalarResultIndex, timeStepIndex);
|
||||
size_t undefValueCount = 0;
|
||||
for (size_t cIdx = 0; cIdx < values.size(); ++cIdx)
|
||||
{
|
||||
std::vector<double>& values = m_resultsData->cellScalarResults(m_scalarResultIndex, tIdx);
|
||||
size_t undefValueCount = 0;
|
||||
for (size_t cIdx = 0; cIdx < values.size(); ++cIdx)
|
||||
double value = values[cIdx];
|
||||
if (value == HUGE_VAL || value != value)
|
||||
{
|
||||
double value = values[cIdx];
|
||||
if (value == HUGE_VAL || value != value)
|
||||
{
|
||||
++undefValueCount;
|
||||
continue;
|
||||
}
|
||||
|
||||
valueSum += value;
|
||||
++undefValueCount;
|
||||
continue;
|
||||
}
|
||||
|
||||
sampleCount += values.size();
|
||||
sampleCount -= undefValueCount;
|
||||
valueSum += value;
|
||||
}
|
||||
|
||||
sampleCount += values.size();
|
||||
sampleCount -= undefValueCount;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -38,9 +38,11 @@ public:
|
||||
|
||||
virtual void minMaxCellScalarValues(size_t timeStepIndex, double& min, double& max);
|
||||
virtual void posNegClosestToZero(size_t timeStepIndex, double& pos, double& neg);
|
||||
virtual void valueSumAndSampleCount(double& valueSum, size_t& sampleCount);
|
||||
|
||||
virtual void addDataToHistogramCalculator(RigHistogramCalculator& histogramCalculator);
|
||||
virtual void valueSumAndSampleCount(size_t timeStepIndex, double& valueSum, size_t& sampleCount);
|
||||
|
||||
virtual void addDataToHistogramCalculator(size_t timeStepIndex, RigHistogramCalculator& histogramCalculator);
|
||||
|
||||
virtual size_t timeStepCount();
|
||||
|
||||
private:
|
||||
|
@ -42,3 +42,48 @@ void RigStatisticsCalculator::meanCellScalarValue(double& meanValue)
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RigStatisticsCalculator::meanCellScalarValue(size_t timeStepIndex, double& meanValue)
|
||||
{
|
||||
double valueSum = 0.0;
|
||||
size_t sampleCount = 0;
|
||||
|
||||
this->valueSumAndSampleCount(timeStepIndex, valueSum, sampleCount);
|
||||
|
||||
if (sampleCount == 0)
|
||||
{
|
||||
meanValue = HUGE_VAL;
|
||||
}
|
||||
else
|
||||
{
|
||||
meanValue = valueSum / sampleCount;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RigStatisticsCalculator::valueSumAndSampleCount(double& valueSum, size_t& sampleCount)
|
||||
{
|
||||
size_t tsCount = this->timeStepCount();
|
||||
for (size_t tIdx = 0; tIdx < tsCount; tIdx++)
|
||||
{
|
||||
this->valueSumAndSampleCount(tIdx, valueSum, sampleCount);
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RigStatisticsCalculator::addDataToHistogramCalculator(RigHistogramCalculator& histogramCalculator)
|
||||
{
|
||||
size_t tsCount = this->timeStepCount();
|
||||
for (size_t tIdx = 0; tIdx < tsCount; tIdx++)
|
||||
{
|
||||
this->addDataToHistogramCalculator(tIdx, histogramCalculator);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -37,8 +37,13 @@ public:
|
||||
virtual void posNegClosestToZero(size_t timeStepIndex, double& pos, double& neg) = 0;
|
||||
|
||||
void meanCellScalarValue(double& meanValue);
|
||||
virtual void valueSumAndSampleCount(double& valueSum, size_t& sampleCount) = 0;
|
||||
virtual void addDataToHistogramCalculator(RigHistogramCalculator& histogramCalculator) = 0;
|
||||
void meanCellScalarValue(size_t timeStepIndex, double& meanValue);
|
||||
|
||||
void valueSumAndSampleCount(double& valueSum, size_t& sampleCount);
|
||||
virtual void valueSumAndSampleCount(size_t timeStepIndex, double& valueSum, size_t& sampleCount) = 0;
|
||||
|
||||
void addDataToHistogramCalculator(RigHistogramCalculator& histogramCalculator);
|
||||
virtual void addDataToHistogramCalculator(size_t timeStepIndex, RigHistogramCalculator& histogramCalculator) = 0;
|
||||
|
||||
virtual size_t timeStepCount() = 0;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user