mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -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
|
#pragma once
|
||||||
|
|
||||||
|
#include "RifEclipseSummaryAddress.h"
|
||||||
|
|
||||||
#include "cafPdmField.h"
|
#include "cafPdmField.h"
|
||||||
#include "cafPdmFieldCvfColor.h"
|
#include "cafPdmFieldCvfColor.h"
|
||||||
#include "cafPdmObject.h"
|
#include "cafPdmObject.h"
|
||||||
@ -94,7 +96,7 @@ public:
|
|||||||
void updateCurveNameNoLegendUpdate();
|
void updateCurveNameNoLegendUpdate();
|
||||||
|
|
||||||
QString curveName() const { return m_curveName; }
|
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 setCustomName(const QString& customName);
|
||||||
void updateCurveVisibility(bool updateParentPlot);
|
void updateCurveVisibility(bool updateParentPlot);
|
||||||
void updateLegendEntryVisibilityAndPlotLegend();
|
void updateLegendEntryVisibilityAndPlotLegend();
|
||||||
|
@ -256,6 +256,33 @@ std::vector<double> RimSummaryCurve::valuesY() const
|
|||||||
return values;
|
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;
|
RimEnsembleCurveSetCollection* coll;
|
||||||
firstAncestorOrThisOfType(coll);
|
firstAncestorOrThisOfType(coll);
|
||||||
@ -665,14 +692,14 @@ QString RimSummaryCurve::curveExportDescription() const
|
|||||||
if (group && group->isEnsemble())
|
if (group && group->isEnsemble())
|
||||||
{
|
{
|
||||||
return QString("%1.%2.%3")
|
return QString("%1.%2.%3")
|
||||||
.arg(QString::fromStdString(address.uiText()))
|
.arg(QString::fromStdString(addr.uiText()))
|
||||||
.arg(m_yValuesSummaryCase->caseName())
|
.arg(m_yValuesSummaryCase->caseName())
|
||||||
.arg(group->name());
|
.arg(group->name());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return QString("%1.%2")
|
return QString("%1.%2")
|
||||||
.arg(QString::fromStdString(address.uiText()))
|
.arg(QString::fromStdString(addr.uiText()))
|
||||||
.arg(m_yValuesSummaryCase->caseName());
|
.arg(m_yValuesSummaryCase->caseName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -58,6 +58,8 @@ public:
|
|||||||
RifEclipseSummaryAddress summaryAddressY() const;
|
RifEclipseSummaryAddress summaryAddressY() const;
|
||||||
std::string unitNameY() const;
|
std::string unitNameY() const;
|
||||||
std::vector<double> valuesY() const;
|
std::vector<double> valuesY() const;
|
||||||
|
RifEclipseSummaryAddress errorSummaryAddressY() const;
|
||||||
|
std::vector<double> errorValuesY() const;
|
||||||
void setLeftOrRightAxisY(RiaDefines::PlotAxis plotAxis);
|
void setLeftOrRightAxisY(RiaDefines::PlotAxis plotAxis);
|
||||||
RiaDefines::PlotAxis axisY() const;
|
RiaDefines::PlotAxis axisY() const;
|
||||||
const std::vector<time_t>& timeStepsY() const;
|
const std::vector<time_t>& timeStepsY() const;
|
||||||
@ -74,7 +76,7 @@ public:
|
|||||||
void updateQwtPlotAxis();
|
void updateQwtPlotAxis();
|
||||||
void applyCurveAutoNameSettings(const RimSummaryCurveAutoName& autoNameSettings);
|
void applyCurveAutoNameSettings(const RimSummaryCurveAutoName& autoNameSettings);
|
||||||
|
|
||||||
virtual QString curveExportDescription() const override;
|
virtual QString curveExportDescription(const RifEclipseSummaryAddress& address = RifEclipseSummaryAddress()) const override;
|
||||||
void forceUpdateCurveAppearanceFromCaseType();
|
void forceUpdateCurveAppearanceFromCaseType();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -1734,16 +1734,32 @@ void populateSummaryCurvesData(std::vector<RimSummaryCurve*> curves, SummaryCurv
|
|||||||
}
|
}
|
||||||
|
|
||||||
CurveData curveData = { curve->curveExportDescription(), curve->summaryAddressY(), curve->valuesY() };
|
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)
|
if (casePosInList == cvf::UNDEFINED_SIZE_T)
|
||||||
{
|
{
|
||||||
|
auto curveDataList = std::vector<CurveData>({ curveData });
|
||||||
|
if (hasErrorData) curveDataList.push_back(errorCurveData);
|
||||||
|
|
||||||
curvesData->caseNames.push_back(curveCaseName);
|
curvesData->caseNames.push_back(curveCaseName);
|
||||||
curvesData->timeSteps.push_back(curve->timeStepsY());
|
curvesData->timeSteps.push_back(curve->timeStepsY());
|
||||||
curvesData->allCurveData.push_back(std::vector<CurveData>({ curveData }));
|
curvesData->allCurveData.push_back(curveDataList);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
curvesData->allCurveData[casePosInList].push_back(curveData);
|
curvesData->allCurveData[casePosInList].push_back(curveData);
|
||||||
|
if(hasErrorData) curvesData->allCurveData[casePosInList].push_back(errorCurveData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user