mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-11 07:56:08 -06:00
#3173 Summary plot export. Include error data in plot export
This commit is contained in:
parent
f50497ea72
commit
532cbe01e9
@ -17,6 +17,8 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
#pragma once
|
||||
|
||||
#include "RifEclipseSummaryAddress.h"
|
||||
|
||||
#include "cafPdmField.h"
|
||||
#include "cafPdmFieldCvfColor.h"
|
||||
#include "cafPdmObject.h"
|
||||
@ -94,7 +96,7 @@ public:
|
||||
void updateCurveNameNoLegendUpdate();
|
||||
|
||||
QString curveName() const { return m_curveName; }
|
||||
virtual QString curveExportDescription() const { return m_curveName; }
|
||||
virtual QString curveExportDescription(const RifEclipseSummaryAddress& address = RifEclipseSummaryAddress()) const { return m_curveName; }
|
||||
void setCustomName(const QString& customName);
|
||||
void updateCurveVisibility(bool updateParentPlot);
|
||||
void updateLegendEntryVisibilityAndPlotLegend();
|
||||
|
@ -256,6 +256,33 @@ std::vector<double> RimSummaryCurve::valuesY() const
|
||||
return values;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RifEclipseSummaryAddress RimSummaryCurve::errorSummaryAddressY() const
|
||||
{
|
||||
auto addr = summaryAddressY();
|
||||
addr.setAsErrorResult();
|
||||
return addr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<double> RimSummaryCurve::errorValuesY() const
|
||||
{
|
||||
std::vector<double> values;
|
||||
|
||||
RifSummaryReaderInterface* reader = valuesSummaryReaderY();
|
||||
|
||||
if (!reader) return values;
|
||||
|
||||
RifEclipseSummaryAddress addr = errorSummaryAddressY();
|
||||
reader->values(addr, &values);
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -652,9 +679,9 @@ void RimSummaryCurve::applyCurveAutoNameSettings(const RimSummaryCurveAutoName&
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimSummaryCurve::curveExportDescription() const
|
||||
QString RimSummaryCurve::curveExportDescription(const RifEclipseSummaryAddress& address) const
|
||||
{
|
||||
auto address = m_yValuesCurveVariable->address();
|
||||
auto addr = address.isValid() ? address : m_yValuesCurveVariable->address();
|
||||
|
||||
RimEnsembleCurveSetCollection* coll;
|
||||
firstAncestorOrThisOfType(coll);
|
||||
@ -665,14 +692,14 @@ QString RimSummaryCurve::curveExportDescription() const
|
||||
if (group && group->isEnsemble())
|
||||
{
|
||||
return QString("%1.%2.%3")
|
||||
.arg(QString::fromStdString(address.uiText()))
|
||||
.arg(QString::fromStdString(addr.uiText()))
|
||||
.arg(m_yValuesSummaryCase->caseName())
|
||||
.arg(group->name());
|
||||
}
|
||||
else
|
||||
{
|
||||
return QString("%1.%2")
|
||||
.arg(QString::fromStdString(address.uiText()))
|
||||
.arg(QString::fromStdString(addr.uiText()))
|
||||
.arg(m_yValuesSummaryCase->caseName());
|
||||
}
|
||||
}
|
||||
|
@ -58,6 +58,8 @@ public:
|
||||
RifEclipseSummaryAddress summaryAddressY() const;
|
||||
std::string unitNameY() const;
|
||||
std::vector<double> valuesY() const;
|
||||
RifEclipseSummaryAddress errorSummaryAddressY() const;
|
||||
std::vector<double> errorValuesY() const;
|
||||
void setLeftOrRightAxisY(RiaDefines::PlotAxis plotAxis);
|
||||
RiaDefines::PlotAxis axisY() const;
|
||||
const std::vector<time_t>& timeStepsY() const;
|
||||
@ -74,7 +76,7 @@ public:
|
||||
void updateQwtPlotAxis();
|
||||
void applyCurveAutoNameSettings(const RimSummaryCurveAutoName& autoNameSettings);
|
||||
|
||||
virtual QString curveExportDescription() const override;
|
||||
virtual QString curveExportDescription(const RifEclipseSummaryAddress& address = RifEclipseSummaryAddress()) const override;
|
||||
void forceUpdateCurveAppearanceFromCaseType();
|
||||
|
||||
protected:
|
||||
|
@ -1734,16 +1734,32 @@ void populateSummaryCurvesData(std::vector<RimSummaryCurve*> curves, SummaryCurv
|
||||
}
|
||||
|
||||
CurveData curveData = { curve->curveExportDescription(), curve->summaryAddressY(), curve->valuesY() };
|
||||
CurveData errorCurveData;
|
||||
|
||||
// Error data
|
||||
auto errorValues = curve->errorValuesY();
|
||||
bool hasErrorData = !errorValues.empty();
|
||||
|
||||
if (hasErrorData)
|
||||
{
|
||||
errorCurveData.name = curve->curveExportDescription(curve->errorSummaryAddressY());
|
||||
errorCurveData.address = curve->errorSummaryAddressY();
|
||||
errorCurveData.values = errorValues;
|
||||
}
|
||||
|
||||
if (casePosInList == cvf::UNDEFINED_SIZE_T)
|
||||
{
|
||||
auto curveDataList = std::vector<CurveData>({ curveData });
|
||||
if (hasErrorData) curveDataList.push_back(errorCurveData);
|
||||
|
||||
curvesData->caseNames.push_back(curveCaseName);
|
||||
curvesData->timeSteps.push_back(curve->timeStepsY());
|
||||
curvesData->allCurveData.push_back(std::vector<CurveData>({ curveData }));
|
||||
curvesData->allCurveData.push_back(curveDataList);
|
||||
}
|
||||
else
|
||||
{
|
||||
curvesData->allCurveData[casePosInList].push_back(curveData);
|
||||
if(hasErrorData) curvesData->allCurveData[casePosInList].push_back(errorCurveData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user