Merged from maintenance branch

This commit is contained in:
Magne Sjaastad
2016-08-05 12:13:13 +02:00
27 changed files with 524 additions and 54 deletions

View File

@@ -197,6 +197,7 @@ void Rim3dOverlayInfoConfig::updateEclipse3DInfo(RimEclipseView * eclipseView)
double min = HUGE_VAL, max = HUGE_VAL;
double p10 = HUGE_VAL, p90 = HUGE_VAL;
double mean = HUGE_VAL;
double sum = 0.0;
const std::vector<size_t>* histogram = NULL;
bool isResultsInfoRelevant = eclipseView->hasUserRequestedAnimation() && eclipseView->cellResult()->hasResult();
@@ -213,6 +214,7 @@ void Rim3dOverlayInfoConfig::updateEclipse3DInfo(RimEclipseView * eclipseView)
eclipseView->currentGridCellResults()->cellResults()->minMaxCellScalarValues(scalarIndex, min, max);
eclipseView->currentGridCellResults()->cellResults()->p10p90CellScalarValues(scalarIndex, p10, p90);
eclipseView->currentGridCellResults()->cellResults()->meanCellScalarValues(scalarIndex, mean);
eclipseView->currentGridCellResults()->cellResults()->sumCellScalarValues(scalarIndex, sum);
histogram = &(eclipseView->currentGridCellResults()->cellResults()->cellScalarValuesHistogram(scalarIndex));
}
else if (m_statisticsTimeRange == CURRENT_TIMESTEP )
@@ -220,7 +222,8 @@ void Rim3dOverlayInfoConfig::updateEclipse3DInfo(RimEclipseView * eclipseView)
int timeStepIdx = eclipseView->currentTimeStep();
eclipseView->currentGridCellResults()->cellResults()->minMaxCellScalarValues(scalarIndex, timeStepIdx, min, max);
eclipseView->currentGridCellResults()->cellResults()->p10p90CellScalarValues(scalarIndex, timeStepIdx, p10, p90);
eclipseView->currentGridCellResults()->cellResults()->meanCellScalarValues(scalarIndex, timeStepIdx, mean);
eclipseView->currentGridCellResults()->cellResults()->meanCellScalarValues(scalarIndex, timeStepIdx, mean);
eclipseView->currentGridCellResults()->cellResults()->sumCellScalarValues(scalarIndex, timeStepIdx, sum);
histogram = &(eclipseView->currentGridCellResults()->cellResults()->cellScalarValuesHistogram(scalarIndex, timeStepIdx));
}
else
@@ -237,6 +240,7 @@ void Rim3dOverlayInfoConfig::updateEclipse3DInfo(RimEclipseView * eclipseView)
m_visibleCellStatistics->meanCellScalarValues(mean);
m_visibleCellStatistics->minMaxCellScalarValues(min, max);
m_visibleCellStatistics->p10p90CellScalarValues(p10, p90);
m_visibleCellStatistics->sumCellScalarValues(sum);
histogram = &(m_visibleCellStatistics->cellScalarValuesHistogram());
}
@@ -246,6 +250,7 @@ void Rim3dOverlayInfoConfig::updateEclipse3DInfo(RimEclipseView * eclipseView)
m_visibleCellStatistics->meanCellScalarValues(currentTimeStep, mean);
m_visibleCellStatistics->minMaxCellScalarValues(currentTimeStep, min, max);
m_visibleCellStatistics->p10p90CellScalarValues(currentTimeStep, p10, p90);
m_visibleCellStatistics->sumCellScalarValues(currentTimeStep, sum);
histogram = &(m_visibleCellStatistics->cellScalarValuesHistogram(currentTimeStep));
}
@@ -303,9 +308,9 @@ void Rim3dOverlayInfoConfig::updateEclipse3DInfo(RimEclipseView * eclipseView)
infoText += QString("<b>Cell Property:</b> %1 ").arg(propName);
infoText += QString("<br><b>Statistics:</b> ") + m_statisticsTimeRange().uiText() + " and " + m_statisticsCellRange().uiText();
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);
"<tr> <td>Min</td> <td>P10</td> <td>Mean</td> <td>P90</td> <td>Max</td> <td>Sum</td> </tr>"
"<tr> <td>%1</td> <td> %2</td> <td> %3</td> <td> %4</td> <td> %5</td> <td> %6</td> </tr>"
"</table>").arg(min).arg(p10).arg(mean).arg(p90).arg(max).arg(sum);
if (eclipseView->faultResultSettings()->hasValidCustomResult())
{
@@ -381,6 +386,7 @@ void Rim3dOverlayInfoConfig::updateGeoMech3DInfo(RimGeoMechView * geoMechView)
double min = HUGE_VAL, max = HUGE_VAL;
double p10 = HUGE_VAL, p90 = HUGE_VAL;
double mean = HUGE_VAL;
double sum = 0.0;
const std::vector<size_t>* histogram = NULL;
if (showResultInfo() || showHistogram())
@@ -395,6 +401,7 @@ void Rim3dOverlayInfoConfig::updateGeoMech3DInfo(RimGeoMechView * geoMechView)
caseData->femPartResults()->meanScalarValue(resAddress, &mean);
caseData->femPartResults()->minMaxScalarValues(resAddress, &min, &max);
caseData->femPartResults()->p10p90ScalarValues(resAddress, &p10, &p90);
caseData->femPartResults()->sumScalarValue(resAddress, &sum);
histogram = &(caseData->femPartResults()->scalarValuesHistogram(resAddress));
}
@@ -404,6 +411,7 @@ void Rim3dOverlayInfoConfig::updateGeoMech3DInfo(RimGeoMechView * geoMechView)
caseData->femPartResults()->meanScalarValue(resAddress, timeStepIdx, &mean);
caseData->femPartResults()->minMaxScalarValues(resAddress, timeStepIdx, &min, &max);
caseData->femPartResults()->p10p90ScalarValues(resAddress, timeStepIdx, &p10, &p90);
caseData->femPartResults()->sumScalarValue(resAddress, timeStepIdx, &sum);
histogram = &(caseData->femPartResults()->scalarValuesHistogram(resAddress, timeStepIdx));
}
@@ -418,6 +426,7 @@ void Rim3dOverlayInfoConfig::updateGeoMech3DInfo(RimGeoMechView * geoMechView)
m_visibleCellStatistics->meanCellScalarValues(mean);
m_visibleCellStatistics->minMaxCellScalarValues(min, max);
m_visibleCellStatistics->p10p90CellScalarValues(p10, p90);
m_visibleCellStatistics->sumCellScalarValues(sum);
histogram = &(m_visibleCellStatistics->cellScalarValuesHistogram());
}
@@ -427,6 +436,7 @@ void Rim3dOverlayInfoConfig::updateGeoMech3DInfo(RimGeoMechView * geoMechView)
m_visibleCellStatistics->meanCellScalarValues(timeStepIdx, mean);
m_visibleCellStatistics->minMaxCellScalarValues(timeStepIdx, min, max);
m_visibleCellStatistics->p10p90CellScalarValues(timeStepIdx, p10, p90);
m_visibleCellStatistics->sumCellScalarValues(timeStepIdx, sum);
histogram = &(m_visibleCellStatistics->cellScalarValuesHistogram(timeStepIdx));
}
@@ -488,10 +498,9 @@ void Rim3dOverlayInfoConfig::updateGeoMech3DInfo(RimGeoMechView * geoMechView)
{
infoText += QString("<br><b>Statistics:</b> ") + m_statisticsTimeRange().uiText() + " and " + m_statisticsCellRange().uiText();
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);
"<tr> <td>Min</td> <td>P10</td> <td>Mean</td> <td>P90</td> <td>Max</td> <td>Sum</td> </tr>"
"<tr> <td>%1</td> <td> %2</td> <td> %3</td> <td> %4</td> <td> %5</td> <td> %6</td> </tr>"
"</table>").arg(min).arg(p10).arg(mean).arg(p90).arg(max).arg(sum);
}
}

View File

@@ -69,11 +69,16 @@ RimEclipsePropertyFilter::RimEclipsePropertyFilter()
resultDefinition.uiCapability()->setUiHidden(true);
resultDefinition.uiCapability()->setUiChildrenHidden(true);
CAF_PDM_InitField(&lowerBound, "LowerBound", 0.0, "Min", "", "", "");
lowerBound.uiCapability()->setUiEditorTypeName(caf::PdmUiDoubleSliderEditor::uiEditorTypeName());
CAF_PDM_InitField(&m_lowerBound, "LowerBound", 0.0, "Min", "", "", "");
m_lowerBound.uiCapability()->setUiEditorTypeName(caf::PdmUiDoubleSliderEditor::uiEditorTypeName());
CAF_PDM_InitField(&upperBound, "UpperBound", 0.0, "Max", "", "", "");
upperBound.uiCapability()->setUiEditorTypeName(caf::PdmUiDoubleSliderEditor::uiEditorTypeName());
CAF_PDM_InitField(&m_upperBound, "UpperBound", 0.0, "Max", "", "", "");
m_upperBound.uiCapability()->setUiEditorTypeName(caf::PdmUiDoubleSliderEditor::uiEditorTypeName());
CAF_PDM_InitFieldNoDefault(&m_selectedValues, "SelectedValues", "Values", "", "", "");
CAF_PDM_InitField(&m_valueSelection, "ValueSelection", false, "Value Selection", "", "", "");
m_upperBound.uiCapability()->setUiEditorTypeName(caf::PdmUiDoubleSliderEditor::uiEditorTypeName());
updateIconState();
@@ -92,17 +97,50 @@ RimEclipsePropertyFilter::~RimEclipsePropertyFilter()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEclipsePropertyFilter::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
void RimEclipsePropertyFilter::rangeValues(double* lower, double* upper) const
{
if (&name == changedField)
*lower = this->m_lowerBound;
*upper = this->m_upperBound;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimEclipsePropertyFilter::isValueSelectionActive() const
{
if (resultDefinition->hasCategoryResult() && m_valueSelection)
{
return true;
}
if ( &lowerBound == changedField
|| &upperBound == changedField
return false;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<int> RimEclipsePropertyFilter::selectedValues() const
{
return m_selectedValues;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEclipsePropertyFilter::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{
if (&m_valueSelection == changedField)
{
updateFieldVisibility();
}
if ( &m_lowerBound == changedField
|| &m_upperBound == changedField
|| &obsoleteField_evaluationRegion == changedField
|| &isActive == changedField
|| &filterMode == changedField)
|| &filterMode == changedField
|| &m_selectedValues == changedField
|| &m_valueSelection == changedField)
{
updateFilterName();
this->updateIconState();
@@ -129,8 +167,13 @@ void RimEclipsePropertyFilter::setToDefaultValues()
computeResultValueRange();
lowerBound = m_minimumResultValue;
upperBound = m_maximumResultValue;
m_lowerBound = m_minimumResultValue;
m_upperBound = m_maximumResultValue;
m_selectedValues = m_uniqueCellValues;
m_valueSelection = true;
updateFieldVisibility();
}
//--------------------------------------------------------------------------------------------------
@@ -148,13 +191,16 @@ void RimEclipsePropertyFilter::defineUiOrdering(QString uiConfigName, caf::PdmUi
group1->add(&(resultDefinition->m_resultVariableUiField));
// Fields declared in RimCellFilter
uiOrdering.add(&isActive);
uiOrdering.add(&filterMode);
uiOrdering.add(&m_valueSelection);
// Fields declared in this class (RimCellPropertyFilter)
uiOrdering.add(&lowerBound);
uiOrdering.add(&upperBound);
uiOrdering.add(&filterMode);
uiOrdering.add(&m_lowerBound);
uiOrdering.add(&m_upperBound);
uiOrdering.add(&m_selectedValues);
uiOrdering.setForgetRemainingFields(true);
updateReadOnlyStateOfAllFields();
}
@@ -169,6 +215,27 @@ void RimEclipsePropertyFilter::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTr
updateActiveState();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QList<caf::PdmOptionItemInfo> RimEclipsePropertyFilter::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly)
{
QList<caf::PdmOptionItemInfo> optionList;
if (&m_selectedValues == fieldNeedingOptions)
{
if (useOptionsOnly) *useOptionsOnly = true;
for (auto it : m_uniqueCellValues)
{
QString str = QString::number(it);
optionList.push_back(caf::PdmOptionItemInfo(str, it));
}
}
return optionList;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -217,6 +284,38 @@ void RimEclipsePropertyFilter::updateActiveState()
isActive.uiCapability()->setUiReadOnly(isPropertyFilterControlled());
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEclipsePropertyFilter::updateFieldVisibility()
{
if (resultDefinition->hasCategoryResult())
{
m_valueSelection.uiCapability()->setUiHidden(false);
if (!m_valueSelection)
{
m_selectedValues.uiCapability()->setUiHidden(true);
m_lowerBound.uiCapability()->setUiHidden(false);
m_upperBound.uiCapability()->setUiHidden(false);
}
else
{
m_selectedValues.uiCapability()->setUiHidden(false);
m_lowerBound.uiCapability()->setUiHidden(true);
m_upperBound.uiCapability()->setUiHidden(true);
}
}
else
{
m_lowerBound.uiCapability()->setUiHidden(false);
m_upperBound.uiCapability()->setUiHidden(false);
m_selectedValues.uiCapability()->setUiHidden(true);
m_valueSelection.uiCapability()->setUiHidden(true);
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -227,7 +326,7 @@ void RimEclipsePropertyFilter::defineEditorAttribute(const caf::PdmFieldHandle*
return;
}
if (field == &lowerBound || field == &upperBound)
if (field == &m_lowerBound || field == &m_upperBound)
{
caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast<caf::PdmUiDoubleSliderEditorAttribute*>(attribute);
if (!myAttr)
@@ -250,6 +349,8 @@ void RimEclipsePropertyFilter::computeResultValueRange()
double min = 0.0;
double max = 0.0;
m_uniqueCellValues.clear();
size_t scalarIndex = resultDefinition->scalarResultIndex();
if (scalarIndex != cvf::UNDEFINED_SIZE_T)
{
@@ -257,14 +358,24 @@ void RimEclipsePropertyFilter::computeResultValueRange()
if (results)
{
results->cellResults()->minMaxCellScalarValues(scalarIndex, min, max);
if (resultDefinition->hasCategoryResult())
{
std::set<int> vals = results->cellResults()->uniqueCellScalarValues(scalarIndex);
for (auto val : vals)
{
m_uniqueCellValues.push_back(val);
}
}
}
}
m_maximumResultValue = max;
m_minimumResultValue = min;
lowerBound.uiCapability()->setUiName(QString("Min (%1)").arg(min));
upperBound.uiCapability()->setUiName(QString("Max (%1)").arg(max));
m_lowerBound.uiCapability()->setUiName(QString("Min (%1)").arg(min));
m_upperBound.uiCapability()->setUiName(QString("Max (%1)").arg(max));
}
//--------------------------------------------------------------------------------------------------
@@ -272,12 +383,38 @@ void RimEclipsePropertyFilter::computeResultValueRange()
//--------------------------------------------------------------------------------------------------
void RimEclipsePropertyFilter::updateFilterName()
{
QString newFiltername;
newFiltername = resultDefinition->resultVariable() + " ("
+ QString::number(lowerBound()) + " .. " + QString::number(upperBound) + ")";
this->name = newFiltername;
QString newFiltername = resultDefinition->resultVariable() + " (";
uiCapability()->updateConnectedEditors();
if (isValueSelectionActive())
{
if (m_selectedValues().size() == m_uniqueCellValues.size())
{
newFiltername += QString::number(m_selectedValues()[0]);
newFiltername += "..";
newFiltername += QString::number(m_selectedValues()[m_selectedValues().size() - 1]);
}
else
{
for (size_t i = 0; i < m_selectedValues().size(); i++)
{
int val = m_selectedValues()[i];
newFiltername += QString::number(val);
if (i < m_selectedValues().size() - 1)
{
newFiltername += ", ";
}
}
}
newFiltername += ")";
}
else
{
newFiltername += QString::number(m_lowerBound) + " .. " + QString::number(m_upperBound) + ")";
}
this->name = newFiltername;
}
//--------------------------------------------------------------------------------------------------
@@ -291,5 +428,6 @@ void RimEclipsePropertyFilter::initAfterRead()
resultDefinition->loadResult();
updateIconState();
computeResultValueRange();
updateFieldVisibility();
}

View File

@@ -44,10 +44,11 @@ public:
RimEclipsePropertyFilter();
virtual ~RimEclipsePropertyFilter();
caf::PdmChildField<RimEclipseResultDefinition*> resultDefinition;
caf::PdmChildField<RimEclipseResultDefinition*> resultDefinition;
caf::PdmField<double> lowerBound;
caf::PdmField<double> upperBound;
void rangeValues(double* lower, double* upper) const;
bool isValueSelectionActive() const;
std::vector<int> selectedValues() const;
RimEclipsePropertyFilterCollection* parentContainer();
void setToDefaultValues();
@@ -57,20 +58,30 @@ public:
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
virtual void initAfterRead();
void updateActiveState();
protected:
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering);
virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName);
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly);
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute);
private:
friend class RimEclipsePropertyFilterCollection;
friend class RicEclipsePropertyFilterFeatureImpl;
void updateActiveState();
void updateFieldVisibility();
void updateReadOnlyStateOfAllFields();
bool isPropertyFilterControlled();
private:
double m_minimumResultValue;
caf::PdmField<double> m_lowerBound;
caf::PdmField<double> m_upperBound;
caf::PdmField< std::vector<int> > m_selectedValues;
caf::PdmField<bool> m_valueSelection;
double m_minimumResultValue;
double m_maximumResultValue;
public:
@@ -82,6 +93,6 @@ public:
};
private:
caf::PdmField< caf::AppEnum< EvaluationRegionType > > obsoleteField_evaluationRegion;
std::vector<int> m_uniqueCellValues;
};

View File

@@ -424,6 +424,16 @@ bool RimEclipseResultDefinition::isTernarySaturationSelected() const
return isTernary;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimEclipseResultDefinition::hasCategoryResult() const
{
if (!this->hasStaticResult()) return false;
return this->resultVariable().contains("NUM", Qt::CaseInsensitive);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -58,6 +58,7 @@ public:
bool hasDynamicResult() const;
bool hasResult() const;
bool isTernarySaturationSelected() const;
bool hasCategoryResult() const;
RimReservoirCellResultsStorage* currentGridCellResults() const;