mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#724 Grid Case Group Statistics: Add option to include in-active cell value as zero
This commit is contained in:
@@ -109,6 +109,8 @@ RimEclipseStatisticsCase::RimEclipseStatisticsCase()
|
|||||||
CAF_PDM_InitField(&m_highPercentile, "HighPercentile", 90.0, "High", "", "", "");
|
CAF_PDM_InitField(&m_highPercentile, "HighPercentile", 90.0, "High", "", "", "");
|
||||||
|
|
||||||
CAF_PDM_InitField(&m_wellDataSourceCase, "WellDataSourceCase", RimDefines::undefinedResultName(), "Well Data Source Case", "", "", "" );
|
CAF_PDM_InitField(&m_wellDataSourceCase, "WellDataSourceCase", RimDefines::undefinedResultName(), "Well Data Source Case", "", "", "" );
|
||||||
|
|
||||||
|
CAF_PDM_InitField(&m_useZeroAsInactiveCellValue, "UseZeroAsInactiveCellValue", false, "Use Zero as Inactive Cell Value", "", "", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -255,6 +257,12 @@ void RimEclipseStatisticsCase::computeStatistics()
|
|||||||
}
|
}
|
||||||
|
|
||||||
RimEclipseStatisticsCaseEvaluator stat(sourceCases, timeStepIndices, statisticsConfig, resultCase);
|
RimEclipseStatisticsCaseEvaluator stat(sourceCases, timeStepIndices, statisticsConfig, resultCase);
|
||||||
|
|
||||||
|
if (m_useZeroAsInactiveCellValue)
|
||||||
|
{
|
||||||
|
stat.useZeroAsValueForInActiveCellsBasedOnUnionOfActiveCells(gridCaseGroup);
|
||||||
|
}
|
||||||
|
|
||||||
stat.evaluateForResults(resultSpecification);
|
stat.evaluateForResults(resultSpecification);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -341,6 +349,8 @@ void RimEclipseStatisticsCase::defineUiOrdering(QString uiConfigName, caf::PdmUi
|
|||||||
group->add(&m_lowPercentile);
|
group->add(&m_lowPercentile);
|
||||||
group->add(&m_midPercentile);
|
group->add(&m_midPercentile);
|
||||||
group->add(&m_highPercentile);
|
group->add(&m_highPercentile);
|
||||||
|
|
||||||
|
uiOrdering.add(&m_useZeroAsInactiveCellValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<caf::PdmOptionItemInfo> toOptionList(const QStringList& varList)
|
QList<caf::PdmOptionItemInfo> toOptionList(const QStringList& varList)
|
||||||
|
|||||||
@@ -119,4 +119,6 @@ private:
|
|||||||
caf::PdmField<double > m_highPercentile;
|
caf::PdmField<double > m_highPercentile;
|
||||||
|
|
||||||
caf::PdmField<QString> m_wellDataSourceCase;
|
caf::PdmField<QString> m_wellDataSourceCase;
|
||||||
|
|
||||||
|
caf::PdmField< bool > m_useZeroAsInactiveCellValue;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
#include "RigResultModifierFactory.h"
|
#include "RigResultModifierFactory.h"
|
||||||
#include "RigStatisticsMath.h"
|
#include "RigStatisticsMath.h"
|
||||||
|
|
||||||
|
#include "RimIdenticalGridCaseGroup.h"
|
||||||
#include "RimReservoirCellResultsStorage.h"
|
#include "RimReservoirCellResultsStorage.h"
|
||||||
|
|
||||||
#include "cafProgressInfo.h"
|
#include "cafProgressInfo.h"
|
||||||
@@ -203,12 +204,19 @@ void RimEclipseStatisticsCaseEvaluator::evaluateForResults(const QList<ResSpec>&
|
|||||||
{
|
{
|
||||||
// Extract the cell values from each of the cases and assemble them into one vector
|
// Extract the cell values from each of the cases and assemble them into one vector
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool foundAnyValidValues = false;
|
bool foundAnyValidValues = false;
|
||||||
for (size_t caseIdx = 0; caseIdx < sourceDataAccessList.size(); caseIdx++)
|
for (size_t caseIdx = 0; caseIdx < sourceDataAccessList.size(); caseIdx++)
|
||||||
{
|
{
|
||||||
double val = sourceDataAccessList.at(caseIdx)->cellScalar(cellIdx);
|
double val = sourceDataAccessList.at(caseIdx)->cellScalar(cellIdx);
|
||||||
|
|
||||||
|
// If identical grid case group is set, treat huge_val as zero in the statistical computation
|
||||||
|
if (m_identicalGridCaseGroup && m_identicalGridCaseGroup->unionOfActiveCells(poroModel)->isActive(reservoirCellIndex))
|
||||||
|
{
|
||||||
|
if (val == HUGE_VAL)
|
||||||
|
{
|
||||||
|
val = 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
values[caseIdx] = val;
|
values[caseIdx] = val;
|
||||||
|
|
||||||
if (val != HUGE_VAL)
|
if (val != HUGE_VAL)
|
||||||
@@ -217,6 +225,7 @@ void RimEclipseStatisticsCaseEvaluator::evaluateForResults(const QList<ResSpec>&
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Do the real statistics calculations
|
// Do the real statistics calculations
|
||||||
|
|
||||||
|
|
||||||
@@ -311,7 +320,8 @@ RimEclipseStatisticsCaseEvaluator::RimEclipseStatisticsCaseEvaluator(const std::
|
|||||||
m_statisticsConfig(statisticsConfig),
|
m_statisticsConfig(statisticsConfig),
|
||||||
m_destinationCase(destinationCase),
|
m_destinationCase(destinationCase),
|
||||||
m_reservoirCellCount(0),
|
m_reservoirCellCount(0),
|
||||||
m_timeStepIndices(timeStepIndices)
|
m_timeStepIndices(timeStepIndices),
|
||||||
|
m_identicalGridCaseGroup(NULL)
|
||||||
{
|
{
|
||||||
if (sourceCases.size() > 0)
|
if (sourceCases.size() > 0)
|
||||||
{
|
{
|
||||||
@@ -321,3 +331,11 @@ RimEclipseStatisticsCaseEvaluator::RimEclipseStatisticsCaseEvaluator(const std::
|
|||||||
CVF_ASSERT(m_destinationCase);
|
CVF_ASSERT(m_destinationCase);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimEclipseStatisticsCaseEvaluator::useZeroAsValueForInActiveCellsBasedOnUnionOfActiveCells(RimIdenticalGridCaseGroup* identicalGridCaseGroup)
|
||||||
|
{
|
||||||
|
m_identicalGridCaseGroup = identicalGridCaseGroup;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -73,6 +73,8 @@ public:
|
|||||||
QString m_resVarName;
|
QString m_resVarName;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void useZeroAsValueForInActiveCellsBasedOnUnionOfActiveCells(RimIdenticalGridCaseGroup* identicalGridCaseGroup);
|
||||||
|
|
||||||
void evaluateForResults(const QList<ResSpec >& resultSpecification);
|
void evaluateForResults(const QList<ResSpec >& resultSpecification);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -88,5 +90,6 @@ private:
|
|||||||
size_t m_reservoirCellCount;
|
size_t m_reservoirCellCount;
|
||||||
RimStatisticsConfig m_statisticsConfig;
|
RimStatisticsConfig m_statisticsConfig;
|
||||||
RigCaseData* m_destinationCase;
|
RigCaseData* m_destinationCase;
|
||||||
|
RimIdenticalGridCaseGroup* m_identicalGridCaseGroup;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user