mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Merge branch 'dev' into feature-ensemble-rft
This commit is contained in:
@@ -19,6 +19,8 @@
|
||||
#include "RimEclipseGeometrySelectionItem.h"
|
||||
|
||||
#include "RigTimeHistoryResultAccessor.h"
|
||||
#include "RigEclipseCaseData.h"
|
||||
#include "RigGridBase.h"
|
||||
|
||||
#include "RimEclipseCase.h"
|
||||
#include "RimEclipseView.h"
|
||||
@@ -61,6 +63,24 @@ void RimEclipseGeometrySelectionItem::setFromSelectionItem(const RiuEclipseSelec
|
||||
m_eclipseCase = selectionItem->m_view->eclipseCase();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimEclipseGeometrySelectionItem::setFromCaseGridAndIJK(RimEclipseCase* eclipseCase,
|
||||
size_t gridIndex,
|
||||
size_t i,
|
||||
size_t j,
|
||||
size_t k)
|
||||
{
|
||||
m_eclipseCase = eclipseCase;
|
||||
m_gridIndex = gridIndex;
|
||||
|
||||
size_t lgrCellIndex = eclipseCase->eclipseCaseData()->grid(gridIndex)->cellIndexFromIJK(i, j, k);
|
||||
size_t reservoirCellIndex = eclipseCase->eclipseCaseData()->grid(gridIndex)->reservoirCellIndex(lgrCellIndex);
|
||||
m_cellIndex = reservoirCellIndex;
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -39,7 +39,11 @@ public:
|
||||
~RimEclipseGeometrySelectionItem() override;
|
||||
|
||||
void setFromSelectionItem(const RiuEclipseSelectionItem* selectionItem);
|
||||
|
||||
void setFromCaseGridAndIJK(RimEclipseCase* eclipseCase,
|
||||
size_t gridIndex,
|
||||
size_t i,
|
||||
size_t j,
|
||||
size_t k);
|
||||
QString geometrySelectionText() const override;
|
||||
|
||||
RimEclipseCase* eclipseCase() const;
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "RigEclipseCaseData.h"
|
||||
#include "RigFlowDiagResultAddress.h"
|
||||
#include "RigFlowDiagResults.h"
|
||||
#include "RigEclipseResultInfo.h"
|
||||
|
||||
#include "Rim3dView.h"
|
||||
#include "Rim3dWellLogCurve.h"
|
||||
@@ -763,21 +764,32 @@ RigEclipseResultAddress RimEclipseResultDefinition::eclipseResultAddress() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimEclipseResultDefinition::setFromEclipseResultAddress(const RigEclipseResultAddress& address)
|
||||
{
|
||||
m_resultType = address.m_resultCatType;
|
||||
m_resultVariable = address.m_resultName;
|
||||
m_timeLapseBaseTimestep = address.m_timeLapseBaseFrameIdx;
|
||||
RigEclipseResultAddress canonizedAddress = address;
|
||||
|
||||
if (address.hasDifferenceCase())
|
||||
const RigCaseCellResultsData* gridCellResults = this->currentGridCellResults();
|
||||
if (gridCellResults)
|
||||
{
|
||||
auto rinfo = gridCellResults->resultInfo(address);
|
||||
if (rinfo) canonizedAddress = rinfo->eclipseResultAddress();
|
||||
}
|
||||
|
||||
m_resultType = canonizedAddress.m_resultCatType;
|
||||
m_resultVariable = canonizedAddress.m_resultName;
|
||||
m_timeLapseBaseTimestep = canonizedAddress.m_timeLapseBaseFrameIdx;
|
||||
|
||||
if (canonizedAddress.hasDifferenceCase())
|
||||
{
|
||||
auto eclipseCases = RiaApplication::instance()->project()->eclipseCases();
|
||||
for (RimEclipseCase* c : eclipseCases)
|
||||
{
|
||||
if (c && c->caseId() == address.m_differenceCaseId)
|
||||
if (c && c->caseId() == canonizedAddress.m_differenceCaseId)
|
||||
{
|
||||
m_differenceCase = c;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this->updateUiFieldsFromActiveResult();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -135,6 +135,30 @@ void RimGridTimeHistoryCurve::setFromSelectionItem(const RiuSelectionItem* selec
|
||||
updateResultDefinitionFromCase();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimGridTimeHistoryCurve::setFromEclipseCellAndResult(RimEclipseCase* eclCase,
|
||||
size_t gridIdx,
|
||||
size_t i,
|
||||
size_t j,
|
||||
size_t k,
|
||||
const RigEclipseResultAddress& resAddr)
|
||||
{
|
||||
delete m_geometrySelectionItem();
|
||||
delete m_eclipseResultDefinition();
|
||||
delete m_geoMechResultDefinition();
|
||||
|
||||
m_eclipseResultDefinition = new RimEclipseResultDefinition;
|
||||
m_eclipseResultDefinition->setEclipseCase(eclCase);
|
||||
m_eclipseResultDefinition->setFromEclipseResultAddress(resAddr);
|
||||
|
||||
RimEclipseGeometrySelectionItem* geomSelectionItem = new RimEclipseGeometrySelectionItem;
|
||||
m_geometrySelectionItem = geomSelectionItem;
|
||||
geomSelectionItem->setFromCaseGridAndIJK(eclCase, gridIdx, i, j, k);
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -190,6 +214,22 @@ std::vector<double> RimGridTimeHistoryCurve::yValues() const
|
||||
}
|
||||
}
|
||||
|
||||
RimSummaryPlot* plot = nullptr;
|
||||
firstAncestorOrThisOfTypeAsserted(plot);
|
||||
bool isNormalized = plot->isNormalizationEnabled();
|
||||
if (isNormalized)
|
||||
{
|
||||
auto minMaxPair = std::minmax_element(values.begin(), values.end());
|
||||
double min = *minMaxPair.first;
|
||||
double max = *minMaxPair.second;
|
||||
double range = max - min;
|
||||
|
||||
for (double & v: values)
|
||||
{
|
||||
v = (v - min)/range;
|
||||
}
|
||||
}
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@ class RimGeoMechGeometrySelectionItem;
|
||||
class RimGeometrySelectionItem;
|
||||
class RiuFemTimeHistoryResultAccessor;
|
||||
class RiuSelectionItem;
|
||||
class RigEclipseResultAddress;
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
@@ -51,6 +52,12 @@ public:
|
||||
~RimGridTimeHistoryCurve() override;
|
||||
|
||||
void setFromSelectionItem(const RiuSelectionItem* selectionItem);
|
||||
void setFromEclipseCellAndResult(RimEclipseCase* eclCase,
|
||||
size_t gridIdx,
|
||||
size_t i,
|
||||
size_t j,
|
||||
size_t k,
|
||||
const RigEclipseResultAddress& resAddr);
|
||||
RiaDefines::PlotAxis yAxis() const;
|
||||
void setYAxis(RiaDefines::PlotAxis plotAxis);
|
||||
|
||||
|
||||
@@ -426,6 +426,22 @@ RimEnsembleCurveSet::ColorMode RimEnsembleCurveSet::colorMode() const
|
||||
return m_colorMode();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimEnsembleCurveSet::setColorMode(ColorMode mode)
|
||||
{
|
||||
m_colorMode = mode;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimEnsembleCurveSet::setEnsembleParameter(const QString& parameterName)
|
||||
{
|
||||
m_ensembleParameter = parameterName;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -97,6 +97,8 @@ public:
|
||||
RimEnsembleCurveFilterCollection* filterCollection() const;
|
||||
|
||||
ColorMode colorMode() const;
|
||||
void setColorMode(ColorMode mode);
|
||||
void setEnsembleParameter(const QString& parameterName);
|
||||
void updateEnsembleLegendItem();
|
||||
EnsembleParameter::Type currentEnsembleParameterType() const;
|
||||
static QString ensembleParameterUiName(const NameParameterPair& paramPair);
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
#include "RiaDefines.h"
|
||||
#include "RiaGuiApplication.h"
|
||||
#include "RiaPreferences.h"
|
||||
#include "RiaStatisticsTools.h"
|
||||
#include "RiaTimeHistoryCurveMerger.h"
|
||||
|
||||
#include "RifReaderEclipseSummary.h"
|
||||
|
||||
@@ -55,6 +57,7 @@
|
||||
#include "qwt_plot.h"
|
||||
|
||||
#include <QMessageBox>
|
||||
#include "cafPdmUiLineEditor.h"
|
||||
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimSummaryCurve, "SummaryCurve");
|
||||
@@ -72,31 +75,21 @@ RimSummaryCurve::RimSummaryCurve()
|
||||
m_yValuesSummaryCase.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
m_yValuesSummaryCase.uiCapability()->setAutoAddingOptionFromValue(false);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_yValuesSelectedVariableDisplayField, "SelectedVariableDisplayVar", "Vector", "", "", "");
|
||||
m_yValuesSelectedVariableDisplayField.xmlCapability()->disableIO();
|
||||
m_yValuesSelectedVariableDisplayField.uiCapability()->setUiReadOnly(true);
|
||||
CAF_PDM_InitFieldNoDefault(&m_yValuesSummaryAddressUiField, "SelectedVariableDisplayVar", "Vector", "", "", "");
|
||||
m_yValuesSummaryAddressUiField.xmlCapability()->disableIO();
|
||||
m_yValuesSummaryAddressUiField.uiCapability()->setUiEditorTypeName(caf::PdmUiLineEditor::uiEditorTypeName());
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_yValuesSummaryFilter, "VarListFilter", "Filter", "", "", "");
|
||||
m_yValuesSummaryFilter.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
m_yValuesSummaryFilter.uiCapability()->setUiHidden(true);
|
||||
|
||||
m_yValuesSummaryFilter = new RimSummaryFilter;
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_yValuesUiFilterResultSelection, "FilterResultSelection", "Filter Result", "", "", "");
|
||||
m_yValuesUiFilterResultSelection.xmlCapability()->disableIO();
|
||||
m_yValuesUiFilterResultSelection.uiCapability()->setUiEditorTypeName(caf::PdmUiListEditor::uiEditorTypeName());
|
||||
m_yValuesUiFilterResultSelection.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||
m_yValuesUiFilterResultSelection.uiCapability()->setAutoAddingOptionFromValue(false);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_yValuesCurveVariable, "SummaryAddress", "Summary Address", "", "", "");
|
||||
m_yValuesCurveVariable.uiCapability()->setUiHidden(true);
|
||||
m_yValuesCurveVariable.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
CAF_PDM_InitFieldNoDefault(&m_yValuesSummaryAddress, "SummaryAddress", "Summary Address", "", "", "");
|
||||
m_yValuesSummaryAddress.uiCapability()->setUiHidden(true);
|
||||
m_yValuesSummaryAddress.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_yPushButtonSelectSummaryAddress, "SelectAddress", "", "", "", "");
|
||||
caf::PdmUiPushButtonEditor::configureEditorForField(&m_yPushButtonSelectSummaryAddress);
|
||||
m_yPushButtonSelectSummaryAddress.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||
m_yPushButtonSelectSummaryAddress = false;
|
||||
|
||||
m_yValuesCurveVariable = new RimSummaryAddress;
|
||||
m_yValuesSummaryAddress = new RimSummaryAddress;
|
||||
|
||||
|
||||
// X Values
|
||||
@@ -105,31 +98,23 @@ RimSummaryCurve::RimSummaryCurve()
|
||||
m_xValuesSummaryCase.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
m_xValuesSummaryCase.uiCapability()->setAutoAddingOptionFromValue(false);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_xValuesSelectedVariableDisplayField, "SelectedVariableDisplayVarX", "Vector", "", "", "");
|
||||
m_xValuesSelectedVariableDisplayField.xmlCapability()->disableIO();
|
||||
m_xValuesSelectedVariableDisplayField.uiCapability()->setUiReadOnly(true);
|
||||
CAF_PDM_InitFieldNoDefault(&m_xValuesSummaryAddressUiField, "SelectedVariableDisplayVarX", "Vector", "", "", "");
|
||||
m_xValuesSummaryAddressUiField.xmlCapability()->disableIO();
|
||||
m_xValuesSummaryAddressUiField.uiCapability()->setUiEditorTypeName(caf::PdmUiLineEditor::uiEditorTypeName());
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_xValuesSummaryFilter, "VarListFilterX", "Filter", "", "", "");
|
||||
m_xValuesSummaryFilter.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
m_xValuesSummaryFilter.uiCapability()->setUiHidden(true);
|
||||
|
||||
m_xValuesSummaryFilter = new RimSummaryFilter;
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_xValuesUiFilterResultSelection, "FilterResultSelectionX", "Filter Result", "", "", "");
|
||||
m_xValuesUiFilterResultSelection.xmlCapability()->disableIO();
|
||||
m_xValuesUiFilterResultSelection.uiCapability()->setUiEditorTypeName(caf::PdmUiListEditor::uiEditorTypeName());
|
||||
m_xValuesUiFilterResultSelection.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||
m_xValuesUiFilterResultSelection.uiCapability()->setAutoAddingOptionFromValue(false);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_xValuesCurveVariable, "SummaryAddressX", "Summary Address", "", "", "");
|
||||
m_xValuesCurveVariable.uiCapability()->setUiHidden(true);
|
||||
m_xValuesCurveVariable.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
CAF_PDM_InitFieldNoDefault(&m_xValuesSummaryAddress, "SummaryAddressX", "Summary Address", "", "", "");
|
||||
m_xValuesSummaryAddress.uiCapability()->setUiHidden(true);
|
||||
m_xValuesSummaryAddress.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_xPushButtonSelectSummaryAddress, "SelectAddressX", "", "", "", "");
|
||||
caf::PdmUiPushButtonEditor::configureEditorForField(&m_xPushButtonSelectSummaryAddress);
|
||||
m_xPushButtonSelectSummaryAddress.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||
|
||||
m_xPushButtonSelectSummaryAddress = false;
|
||||
|
||||
m_xValuesCurveVariable = new RimSummaryAddress;
|
||||
m_xValuesSummaryAddress = new RimSummaryAddress;
|
||||
|
||||
|
||||
// Other members
|
||||
@@ -147,6 +132,19 @@ RimSummaryCurve::RimSummaryCurve()
|
||||
|
||||
m_symbolSkipPixelDistance = 10.0f;
|
||||
m_curveThickness = 2;
|
||||
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_yValuesSummaryFilter_OBSOLETE, "VarListFilter", "Filter", "", "", "");
|
||||
m_yValuesSummaryFilter_OBSOLETE.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
m_yValuesSummaryFilter_OBSOLETE.uiCapability()->setUiHidden(true);
|
||||
m_yValuesSummaryFilter_OBSOLETE.xmlCapability()->setIOWritable(false);
|
||||
m_yValuesSummaryFilter_OBSOLETE = new RimSummaryFilter;
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_xValuesSummaryFilter_OBSOLETE, "VarListFilterX", "Filter", "", "", "");
|
||||
m_xValuesSummaryFilter_OBSOLETE.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
m_xValuesSummaryFilter_OBSOLETE.uiCapability()->setUiHidden(true);
|
||||
m_xValuesSummaryFilter_OBSOLETE.xmlCapability()->setIOWritable(false);
|
||||
m_xValuesSummaryFilter_OBSOLETE = new RimSummaryFilter;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -182,7 +180,7 @@ RimSummaryCase* RimSummaryCurve::summaryCaseY() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RifEclipseSummaryAddress RimSummaryCurve::summaryAddressX() const
|
||||
{
|
||||
return m_xValuesCurveVariable->address();
|
||||
return m_xValuesSummaryAddress->address();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -190,7 +188,7 @@ RifEclipseSummaryAddress RimSummaryCurve::summaryAddressX() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCurve::setSummaryAddressX(const RifEclipseSummaryAddress& address)
|
||||
{
|
||||
m_xValuesCurveVariable->setAddress(address);
|
||||
m_xValuesSummaryAddress->setAddress(address);
|
||||
|
||||
// TODO: Should interpolation be computed similar to RimSummaryCurve::setSummaryAddressY
|
||||
}
|
||||
@@ -200,7 +198,7 @@ void RimSummaryCurve::setSummaryAddressX(const RifEclipseSummaryAddress& address
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RifEclipseSummaryAddress RimSummaryCurve::summaryAddressY() const
|
||||
{
|
||||
return m_yValuesCurveVariable->address();
|
||||
return m_yValuesSummaryAddress->address();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -218,14 +216,12 @@ void RimSummaryCurve::setSummaryAddressYAndApplyInterpolation(const RifEclipseSu
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCurve::setSummaryAddressY(const RifEclipseSummaryAddress& address)
|
||||
{
|
||||
if (m_yValuesCurveVariable->address() != address)
|
||||
if (m_yValuesSummaryAddress->address() != address)
|
||||
{
|
||||
m_qwtPlotCurve->clearErrorBars();
|
||||
}
|
||||
|
||||
m_yValuesCurveVariable->setAddress(address);
|
||||
|
||||
m_yValuesSummaryFilter->updateFromAddress(address);
|
||||
m_yValuesSummaryAddress->setAddress(address);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -261,9 +257,25 @@ std::vector<double> RimSummaryCurve::valuesY() const
|
||||
|
||||
if ( !reader ) return values;
|
||||
|
||||
RifEclipseSummaryAddress addr = m_yValuesCurveVariable()->address();
|
||||
RifEclipseSummaryAddress addr = m_yValuesSummaryAddress()->address();
|
||||
reader->values(addr, &values);
|
||||
|
||||
RimSummaryPlot* plot = nullptr;
|
||||
firstAncestorOrThisOfTypeAsserted(plot);
|
||||
bool isNormalized = plot->isNormalizationEnabled();
|
||||
if (isNormalized)
|
||||
{
|
||||
auto minMaxPair = std::minmax_element(values.begin(), values.end());
|
||||
double min = *minMaxPair.first;
|
||||
double max = *minMaxPair.second;
|
||||
double range = max - min;
|
||||
|
||||
for (double & v: values)
|
||||
{
|
||||
v = (v - min)/range;
|
||||
}
|
||||
}
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
@@ -308,7 +320,7 @@ std::vector<double> RimSummaryCurve::valuesX() const
|
||||
{
|
||||
RifSummaryReaderInterface* reader = m_xValuesSummaryCase()->summaryReader();
|
||||
|
||||
RifEclipseSummaryAddress addr = m_xValuesCurveVariable()->address();
|
||||
RifEclipseSummaryAddress addr = m_xValuesSummaryAddress()->address();
|
||||
reader->values(addr, &values);
|
||||
}
|
||||
|
||||
@@ -325,7 +337,7 @@ const std::vector<time_t>& RimSummaryCurve::timeStepsY() const
|
||||
|
||||
if ( !reader ) return emptyVector;
|
||||
|
||||
RifEclipseSummaryAddress addr = m_yValuesCurveVariable()->address();
|
||||
RifEclipseSummaryAddress addr = m_yValuesSummaryAddress()->address();
|
||||
|
||||
return reader->timeSteps(addr);
|
||||
}
|
||||
@@ -389,15 +401,14 @@ QList<caf::PdmOptionItemInfo> RimSummaryCurve::calculateValueOptions(const caf::
|
||||
options.push_front(caf::PdmOptionItemInfo("None", nullptr));
|
||||
}
|
||||
}
|
||||
else if(fieldNeedingOptions == &m_yValuesUiFilterResultSelection)
|
||||
else if (&m_yValuesSummaryAddressUiField == fieldNeedingOptions)
|
||||
{
|
||||
appendOptionItemsForSummaryAddresses(&options, m_yValuesSummaryCase(), m_yValuesSummaryFilter());
|
||||
appendOptionItemsForSummaryAddresses(&options, m_yValuesSummaryCase(), nullptr);
|
||||
}
|
||||
else if (fieldNeedingOptions == &m_xValuesUiFilterResultSelection)
|
||||
else if (&m_xValuesSummaryAddressUiField == fieldNeedingOptions)
|
||||
{
|
||||
appendOptionItemsForSummaryAddresses(&options, m_xValuesSummaryCase(), m_xValuesSummaryFilter());
|
||||
appendOptionItemsForSummaryAddresses(&options, m_xValuesSummaryCase(), nullptr);
|
||||
}
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
@@ -410,18 +421,18 @@ QString RimSummaryCurve::createCurveAutoName()
|
||||
firstAncestorOrThisOfTypeAsserted(plot);
|
||||
|
||||
const RimSummaryPlotNameHelper* nameHelper = plot->activePlotTitleHelperAllCurves();
|
||||
QString curveName = m_curveNameConfig->curveNameY(m_yValuesCurveVariable->address(), nameHelper);
|
||||
QString curveName = m_curveNameConfig->curveNameY(m_yValuesSummaryAddress->address(), nameHelper);
|
||||
if (curveName.isEmpty())
|
||||
{
|
||||
curveName = m_curveNameConfig->curveNameY(m_yValuesCurveVariable->address(), nullptr);
|
||||
curveName = m_curveNameConfig->curveNameY(m_yValuesSummaryAddress->address(), nullptr);
|
||||
}
|
||||
|
||||
if (isCrossPlotCurve())
|
||||
{
|
||||
QString curveNameX = m_curveNameConfig->curveNameX(m_xValuesCurveVariable->address(), nameHelper);
|
||||
QString curveNameX = m_curveNameConfig->curveNameX(m_xValuesSummaryAddress->address(), nameHelper);
|
||||
if (curveNameX.isEmpty())
|
||||
{
|
||||
curveNameX = m_curveNameConfig->curveNameX(m_xValuesCurveVariable->address(), nullptr);
|
||||
curveNameX = m_curveNameConfig->curveNameX(m_xValuesSummaryAddress->address(), nullptr);
|
||||
}
|
||||
|
||||
if (!curveName.isEmpty() || !curveNameX.isEmpty())
|
||||
@@ -456,11 +467,8 @@ void RimSummaryCurve::onLoadDataAndUpdate(bool updateParentPlot)
|
||||
{
|
||||
this->RimPlotCurve::updateCurvePresentation(updateParentPlot);
|
||||
|
||||
m_yValuesSelectedVariableDisplayField = QString::fromStdString(m_yValuesCurveVariable->address().uiText());
|
||||
m_yValuesUiFilterResultSelection = m_yValuesCurveVariable->address();
|
||||
|
||||
m_xValuesSelectedVariableDisplayField = QString::fromStdString(m_xValuesCurveVariable->address().uiText());
|
||||
m_xValuesUiFilterResultSelection = m_xValuesCurveVariable->address();
|
||||
m_yValuesSummaryAddressUiField = m_yValuesSummaryAddress->address();
|
||||
m_xValuesSummaryAddressUiField = m_xValuesSummaryAddress->address();
|
||||
|
||||
updateConnectedEditors();
|
||||
|
||||
@@ -615,7 +623,7 @@ void RimSummaryCurve::defineEditorAttribute(const caf::PdmFieldHandle* field, QS
|
||||
caf::PdmUiPushButtonEditorAttribute* attrib = dynamic_cast<caf::PdmUiPushButtonEditorAttribute*> (attribute);
|
||||
if (attrib)
|
||||
{
|
||||
attrib->m_buttonText = "Vector Selection Dialog";
|
||||
attrib->m_buttonText = "...";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -629,18 +637,12 @@ void RimSummaryCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering&
|
||||
|
||||
{
|
||||
QString curveDataGroupName = "Summary Vector";
|
||||
if (isCrossPlotCurve()) curveDataGroupName += " Y";
|
||||
if ( isCrossPlotCurve() ) curveDataGroupName += " Y";
|
||||
caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroupWithKeyword(curveDataGroupName, "Summary Vector Y");
|
||||
curveDataGroup->add(&m_yValuesSummaryCase);
|
||||
curveDataGroup->add(&m_yValuesSelectedVariableDisplayField);
|
||||
curveDataGroup->add(&m_plotAxis);
|
||||
curveDataGroup->add(&m_yPushButtonSelectSummaryAddress);
|
||||
|
||||
QString curveVarSelectionGroupName = "Vector Selection Filter Y";
|
||||
caf::PdmUiGroup* curveVarSelectionGroup = curveDataGroup->addNewGroupWithKeyword("Vector Selection Filter", curveVarSelectionGroupName);
|
||||
curveVarSelectionGroup->setCollapsedByDefault(true);
|
||||
m_yValuesSummaryFilter->uiOrdering(uiConfigName, *curveVarSelectionGroup);
|
||||
curveVarSelectionGroup->add(&m_yValuesUiFilterResultSelection);
|
||||
curveDataGroup->add(&m_yValuesSummaryCase, { true, 3, 1 });
|
||||
curveDataGroup->add(&m_yValuesSummaryAddressUiField, { true, 2, 1 });
|
||||
curveDataGroup->add(&m_yPushButtonSelectSummaryAddress, { false, 1, 0 });
|
||||
curveDataGroup->add(&m_plotAxis, { true, 3, 1 });
|
||||
|
||||
if (isCrossPlotCurve()) m_showErrorBars = false;
|
||||
else curveDataGroup->add(&m_showErrorBars);
|
||||
@@ -649,14 +651,9 @@ void RimSummaryCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering&
|
||||
if (isCrossPlotCurve())
|
||||
{
|
||||
caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroup("Summary Vector X");
|
||||
curveDataGroup->add(&m_xValuesSummaryCase);
|
||||
curveDataGroup->add(&m_xValuesSelectedVariableDisplayField);
|
||||
curveDataGroup->add(&m_xPushButtonSelectSummaryAddress);
|
||||
|
||||
caf::PdmUiGroup* curveVarSelectionGroup = curveDataGroup->addNewGroupWithKeyword("Vector Selection Filter", "Vector Selection Filter X");
|
||||
curveVarSelectionGroup->setCollapsedByDefault(true);
|
||||
m_xValuesSummaryFilter->uiOrdering(uiConfigName, *curveVarSelectionGroup);
|
||||
curveVarSelectionGroup->add(&m_xValuesUiFilterResultSelection);
|
||||
curveDataGroup->add(&m_xValuesSummaryCase, { true, 3, 1 });
|
||||
curveDataGroup->add(&m_xValuesSummaryAddressUiField, { true, 2, 1 });
|
||||
curveDataGroup->add(&m_xPushButtonSelectSummaryAddress, { false, 1, 0});
|
||||
}
|
||||
|
||||
caf::PdmUiGroup* appearanceGroup = uiOrdering.addNewGroup("Appearance");
|
||||
@@ -773,7 +770,7 @@ void RimSummaryCurve::applyCurveAutoNameSettings(const RimSummaryCurveAutoName&
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimSummaryCurve::curveExportDescription(const RifEclipseSummaryAddress& address) const
|
||||
{
|
||||
auto addr = address.isValid() ? address : m_yValuesCurveVariable->address();
|
||||
auto addr = address.isValid() ? address : m_yValuesSummaryAddress->address();
|
||||
|
||||
RimEnsembleCurveSetCollection* coll;
|
||||
firstAncestorOrThisOfType(coll);
|
||||
@@ -781,17 +778,24 @@ QString RimSummaryCurve::curveExportDescription(const RifEclipseSummaryAddress&
|
||||
auto curveSet = coll ? coll->findRimCurveSetFromQwtCurve(m_qwtPlotCurve) : nullptr;
|
||||
auto group = curveSet ? curveSet->summaryCaseCollection() : nullptr;
|
||||
|
||||
auto addressUiText = addr.uiText();
|
||||
if (addr.category() == RifEclipseSummaryAddress::SUMMARY_ENSEMBLE_STATISTICS)
|
||||
{
|
||||
addressUiText = RiaStatisticsTools::replacePercentileByPValueText(QString::fromStdString(addressUiText)).toStdString();
|
||||
|
||||
}
|
||||
|
||||
if (group && group->isEnsemble())
|
||||
{
|
||||
return QString("%1.%2.%3")
|
||||
.arg(QString::fromStdString(addr.uiText()))
|
||||
.arg(QString::fromStdString(addressUiText))
|
||||
.arg(m_yValuesSummaryCase->caseName())
|
||||
.arg(group->name());
|
||||
}
|
||||
else
|
||||
{
|
||||
return QString("%1.%2")
|
||||
.arg(QString::fromStdString(addr.uiText()))
|
||||
.arg(QString::fromStdString(addressUiText))
|
||||
.arg(m_yValuesSummaryCase->caseName());
|
||||
}
|
||||
}
|
||||
@@ -812,7 +816,7 @@ void RimSummaryCurve::setCurveAppearanceFromCaseType()
|
||||
}
|
||||
}
|
||||
|
||||
if (m_yValuesCurveVariable && m_yValuesCurveVariable->address().isHistoryQuantity())
|
||||
if (m_yValuesSummaryAddress && m_yValuesSummaryAddress->address().isHistoryQuantity())
|
||||
{
|
||||
RiaPreferences* prefs = RiaApplication::instance()->preferences();
|
||||
|
||||
@@ -842,7 +846,7 @@ void RimSummaryCurve::setCurveAppearanceFromCaseType()
|
||||
void RimSummaryCurve::markCachedDataForPurge()
|
||||
{
|
||||
auto reader = valuesSummaryReaderY();
|
||||
if(reader) reader->markForCachePurge(m_yValuesCurveVariable->address());
|
||||
if(reader) reader->markForCachePurge(m_yValuesSummaryAddress->address());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -867,22 +871,22 @@ void RimSummaryCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
||||
bool loadAndUpdate = false;
|
||||
bool crossPlotTestForMatchingTimeSteps = false;
|
||||
|
||||
if(changedField == &m_yValuesUiFilterResultSelection)
|
||||
if(changedField == &m_yValuesSummaryAddressUiField)
|
||||
{
|
||||
m_yValuesCurveVariable->setAddress(m_yValuesUiFilterResultSelection());
|
||||
m_yValuesSummaryAddress->setAddress(m_yValuesSummaryAddressUiField());
|
||||
|
||||
this->calculateCurveInterpolationFromAddress();
|
||||
|
||||
loadAndUpdate = true;
|
||||
}
|
||||
else if (changedField == &m_xValuesUiFilterResultSelection)
|
||||
else if(changedField == &m_xValuesSummaryAddressUiField)
|
||||
{
|
||||
m_xValuesCurveVariable->setAddress(m_xValuesUiFilterResultSelection());
|
||||
m_xValuesSummaryAddress->setAddress(m_xValuesSummaryAddressUiField());
|
||||
|
||||
this->calculateCurveInterpolationFromAddress();
|
||||
|
||||
loadAndUpdate = true;
|
||||
}
|
||||
}
|
||||
else if (&m_showCurve == changedField)
|
||||
{
|
||||
plot->updateAxes();
|
||||
@@ -919,7 +923,7 @@ void RimSummaryCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
||||
{
|
||||
RiuSummaryCurveDefSelectionDialog dlg(nullptr);
|
||||
RimSummaryCase* candidateCase = m_yValuesSummaryCase();
|
||||
RifEclipseSummaryAddress candicateAddress = m_yValuesCurveVariable->address();
|
||||
RifEclipseSummaryAddress candicateAddress = m_yValuesSummaryAddress->address();
|
||||
|
||||
if (candidateCase == nullptr)
|
||||
{
|
||||
@@ -928,7 +932,7 @@ void RimSummaryCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
||||
|
||||
if (!candicateAddress.isValid())
|
||||
{
|
||||
candicateAddress = m_xValuesCurveVariable->address();
|
||||
candicateAddress = m_xValuesSummaryAddress->address();
|
||||
}
|
||||
|
||||
dlg.hideEnsembles();
|
||||
@@ -940,7 +944,7 @@ void RimSummaryCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
||||
if (curveSelection.size() > 0)
|
||||
{
|
||||
m_yValuesSummaryCase = curveSelection[0].summaryCase();
|
||||
m_yValuesCurveVariable->setAddress(curveSelection[0].summaryAddress());
|
||||
m_yValuesSummaryAddress->setAddress(curveSelection[0].summaryAddress());
|
||||
|
||||
crossPlotTestForMatchingTimeSteps = true;
|
||||
loadAndUpdate = true;
|
||||
@@ -953,7 +957,7 @@ void RimSummaryCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
||||
{
|
||||
RiuSummaryCurveDefSelectionDialog dlg(nullptr);
|
||||
RimSummaryCase* candidateCase = m_xValuesSummaryCase();
|
||||
RifEclipseSummaryAddress candicateAddress = m_xValuesCurveVariable->address();
|
||||
RifEclipseSummaryAddress candicateAddress = m_xValuesSummaryAddress->address();
|
||||
|
||||
if (candidateCase == nullptr)
|
||||
{
|
||||
@@ -962,7 +966,7 @@ void RimSummaryCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
||||
|
||||
if (!candicateAddress.isValid())
|
||||
{
|
||||
candicateAddress = m_yValuesCurveVariable->address();
|
||||
candicateAddress = m_yValuesSummaryAddress->address();
|
||||
}
|
||||
|
||||
dlg.hideEnsembles();
|
||||
@@ -974,7 +978,7 @@ void RimSummaryCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
||||
if (curveSelection.size() > 0)
|
||||
{
|
||||
m_xValuesSummaryCase = curveSelection[0].summaryCase();
|
||||
m_xValuesCurveVariable->setAddress(curveSelection[0].summaryAddress());
|
||||
m_xValuesSummaryAddress->setAddress(curveSelection[0].summaryAddress());
|
||||
|
||||
crossPlotTestForMatchingTimeSteps = true;
|
||||
loadAndUpdate = true;
|
||||
@@ -1100,7 +1104,7 @@ const std::vector<time_t>& RimSummaryCurve::timeStepsX() const
|
||||
|
||||
if (!reader) return emptyVector;
|
||||
|
||||
RifEclipseSummaryAddress addr = m_xValuesCurveVariable()->address();
|
||||
RifEclipseSummaryAddress addr = m_xValuesSummaryAddress()->address();
|
||||
|
||||
return reader->timeSteps(addr);
|
||||
}
|
||||
@@ -1110,9 +1114,9 @@ const std::vector<time_t>& RimSummaryCurve::timeStepsX() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCurve::calculateCurveInterpolationFromAddress()
|
||||
{
|
||||
if (m_yValuesCurveVariable())
|
||||
if (m_yValuesSummaryAddress())
|
||||
{
|
||||
auto address = m_yValuesCurveVariable()->address();
|
||||
auto address = m_yValuesSummaryAddress()->address();
|
||||
if (address.hasAccumulatedData())
|
||||
{
|
||||
m_curveInterpolation = RiuQwtPlotCurve::INTERPOLATION_POINT_TO_POINT;
|
||||
|
||||
@@ -118,21 +118,22 @@ private:
|
||||
private:
|
||||
// Y values
|
||||
caf::PdmPtrField<RimSummaryCase*> m_yValuesSummaryCase;
|
||||
caf::PdmChildField<RimSummaryAddress*> m_yValuesCurveVariable;
|
||||
caf::PdmField<QString> m_yValuesSelectedVariableDisplayField;
|
||||
caf::PdmChildField<RimSummaryFilter*> m_yValuesSummaryFilter;
|
||||
caf::PdmField<RifEclipseSummaryAddress> m_yValuesUiFilterResultSelection;
|
||||
caf::PdmChildField<RimSummaryAddress*> m_yValuesSummaryAddress;
|
||||
caf::PdmField<RifEclipseSummaryAddress> m_yValuesSummaryAddressUiField;
|
||||
caf::PdmField<bool> m_yPushButtonSelectSummaryAddress;
|
||||
|
||||
// X values
|
||||
caf::PdmPtrField<RimSummaryCase*> m_xValuesSummaryCase;
|
||||
caf::PdmChildField<RimSummaryAddress*> m_xValuesCurveVariable;
|
||||
caf::PdmField<QString> m_xValuesSelectedVariableDisplayField;
|
||||
caf::PdmChildField<RimSummaryFilter*> m_xValuesSummaryFilter;
|
||||
caf::PdmField<RifEclipseSummaryAddress> m_xValuesUiFilterResultSelection;
|
||||
caf::PdmChildField<RimSummaryAddress*> m_xValuesSummaryAddress;
|
||||
caf::PdmField<RifEclipseSummaryAddress> m_xValuesSummaryAddressUiField;
|
||||
caf::PdmField<bool> m_xPushButtonSelectSummaryAddress;
|
||||
|
||||
caf::PdmChildField<RimSummaryCurveAutoName*> m_curveNameConfig;
|
||||
caf::PdmField<caf::AppEnum< RiaDefines::PlotAxis>> m_plotAxis;
|
||||
caf::PdmField<bool> m_isTopZWithinCategory;
|
||||
|
||||
|
||||
// Obsolete fields
|
||||
caf::PdmChildField<RimSummaryFilter*> m_yValuesSummaryFilter_OBSOLETE;
|
||||
caf::PdmChildField<RimSummaryFilter*> m_xValuesSummaryFilter_OBSOLETE;
|
||||
};
|
||||
|
||||
@@ -140,6 +140,9 @@ RimSummaryPlot::RimSummaryPlot()
|
||||
CAF_PDM_InitField(&m_useAutoPlotTitle, "IsUsingAutoName", true, "Auto Name", "", "", "");
|
||||
m_useAutoPlotTitle.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||
|
||||
CAF_PDM_InitField(&m_normalizeCurveYValues, "normalizeCurveYValues", false, "Normalize all curves", "", "", "");
|
||||
m_normalizeCurveYValues.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_curveFilters_OBSOLETE, "SummaryCurveFilters", "", "", "", "");
|
||||
m_curveFilters_OBSOLETE.uiCapability()->setUiTreeHidden(true);
|
||||
|
||||
@@ -635,6 +638,22 @@ bool RimSummaryPlot::applyFontSize(RiaDefines::FontSettingType fontSettingType,
|
||||
return anyChange;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::setNormalizationEnabled(bool enable)
|
||||
{
|
||||
m_normalizeCurveYValues = enable;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimSummaryPlot::isNormalizationEnabled()
|
||||
{
|
||||
return m_normalizeCurveYValues();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -1227,6 +1246,11 @@ void RimSummaryPlot::fieldChangedByUi(const caf::PdmFieldHandle* changedField, c
|
||||
c->updateCurveNameNoLegendUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
if (changedField == &m_normalizeCurveYValues)
|
||||
{
|
||||
this->loadDataAndUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -1510,6 +1534,8 @@ void RimSummaryPlot::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering&
|
||||
uiOrdering.add(&m_legendFontSize);
|
||||
}
|
||||
|
||||
uiOrdering.add(&m_normalizeCurveYValues);
|
||||
|
||||
m_userDefinedPlotTitle.uiCapability()->setUiReadOnly(m_useAutoPlotTitle);
|
||||
|
||||
uiOrdering.skipRemainingFields(true);
|
||||
@@ -1794,6 +1820,14 @@ caf::PdmObject* RimSummaryPlot::findRimPlotObjectFromQwtCurve(const QwtPlotCurve
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::showLegend(bool enable)
|
||||
{
|
||||
m_showLegend = enable;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -1809,7 +1843,8 @@ void RimSummaryPlot::defineEditorAttribute(const caf::PdmFieldHandle* field, QSt
|
||||
{
|
||||
if (field == &m_showLegend ||
|
||||
field == &m_showPlotTitle ||
|
||||
field == &m_useAutoPlotTitle)
|
||||
field == &m_useAutoPlotTitle ||
|
||||
field == &m_normalizeCurveYValues)
|
||||
{
|
||||
caf::PdmUiCheckBoxEditorAttribute* myAttr = dynamic_cast<caf::PdmUiCheckBoxEditorAttribute*>(attribute);
|
||||
if (myAttr)
|
||||
|
||||
@@ -140,6 +140,9 @@ public:
|
||||
bool hasCustomFontSizes(RiaDefines::FontSettingType fontSettingType, int defaultFontSize) const override;
|
||||
bool applyFontSize(RiaDefines::FontSettingType fontSettingType, int oldFontSize, int fontSize, bool forceChange = false) override;
|
||||
|
||||
void setNormalizationEnabled(bool enable);
|
||||
bool isNormalizationEnabled();
|
||||
void showLegend(bool enable);
|
||||
public:
|
||||
// Rim2dPlotInterface overrides
|
||||
void updateAxisScaling() override;
|
||||
@@ -194,6 +197,8 @@ private:
|
||||
private:
|
||||
caf::PdmField<bool> m_showPlotTitle;
|
||||
caf::PdmField<bool> m_showLegend;
|
||||
caf::PdmField<bool> m_normalizeCurveYValues;
|
||||
|
||||
caf::PdmField<int> m_legendFontSize;
|
||||
|
||||
caf::PdmField<bool> m_useAutoPlotTitle;
|
||||
|
||||
@@ -301,8 +301,7 @@ bool RimSummaryTimeAxisProperties::isActive() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QDateTime RimSummaryTimeAxisProperties::visibleDateTimeMin() const
|
||||
{
|
||||
QDateTime fullMin(m_visibleDateRangeMin(), m_visibleTimeRangeMin());
|
||||
return fullMin;
|
||||
return RiaQDateTimeTools::createUtcDateTime(m_visibleDateRangeMin(), m_visibleTimeRangeMin());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -310,8 +309,7 @@ QDateTime RimSummaryTimeAxisProperties::visibleDateTimeMin() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QDateTime RimSummaryTimeAxisProperties::visibleDateTimeMax() const
|
||||
{
|
||||
QDateTime fullMax(m_visibleDateRangeMax(), m_visibleTimeRangeMax());
|
||||
return fullMax;
|
||||
return RiaQDateTimeTools::createUtcDateTime(m_visibleDateRangeMax(), m_visibleTimeRangeMax());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user