mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
(#1525) Use single curves to represent production rates
Use colors from RimSummaryCurveAppearanceCalculator
This commit is contained in:
parent
cfe7b683be
commit
07696e49cc
ApplicationCode/Commands/FlowCommands
@ -33,7 +33,7 @@
|
|||||||
#include "RimProject.h"
|
#include "RimProject.h"
|
||||||
#include "RimSummaryCaseCollection.h"
|
#include "RimSummaryCaseCollection.h"
|
||||||
#include "RimSummaryCurve.h"
|
#include "RimSummaryCurve.h"
|
||||||
#include "RimSummaryCurveFilter.h"
|
#include "RimSummaryCurveAppearanceCalculator.h"
|
||||||
#include "RimSummaryPlot.h"
|
#include "RimSummaryPlot.h"
|
||||||
#include "RimSummaryPlotCollection.h"
|
#include "RimSummaryPlotCollection.h"
|
||||||
#include "RimView.h"
|
#include "RimView.h"
|
||||||
@ -94,67 +94,85 @@ void RicPlotProductionRateFeature::onActionTriggered(bool isChecked)
|
|||||||
RimGridSummaryCase* gridSummaryCase = RicPlotProductionRateFeature::gridSummaryCaseForWell(well);
|
RimGridSummaryCase* gridSummaryCase = RicPlotProductionRateFeature::gridSummaryCaseForWell(well);
|
||||||
if (!gridSummaryCase) continue;
|
if (!gridSummaryCase) continue;
|
||||||
|
|
||||||
QString curveFilterText = "W*PR:";
|
|
||||||
QString description = "Well Production Rates : ";
|
QString description = "Well Production Rates : ";
|
||||||
|
|
||||||
RigSingleWellResultsData* wRes = well->wellResults();
|
if (isInjector(well))
|
||||||
if (wRes)
|
|
||||||
{
|
{
|
||||||
RimView* rimView = nullptr;
|
description = "Well Injection Rates : ";
|
||||||
well->firstAncestorOrThisOfTypeAsserted(rimView);
|
|
||||||
|
|
||||||
int currentTimeStep = rimView->currentTimeStep();
|
|
||||||
|
|
||||||
if (wRes->hasWellResult(currentTimeStep))
|
|
||||||
{
|
|
||||||
const RigWellResultFrame& wrf = wRes->wellResultFrame(currentTimeStep);
|
|
||||||
|
|
||||||
if ( wrf.m_productionType == RigWellResultFrame::OIL_INJECTOR
|
|
||||||
|| wrf.m_productionType == RigWellResultFrame::GAS_INJECTOR
|
|
||||||
|| wrf.m_productionType == RigWellResultFrame::WATER_INJECTOR)
|
|
||||||
{
|
|
||||||
curveFilterText = "W*IR:";
|
|
||||||
description = "Well Injection Rates : ";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
curveFilterText += well->name();
|
|
||||||
description += well->name();
|
|
||||||
|
|
||||||
RimSummaryPlot* plot = new RimSummaryPlot();
|
RimSummaryPlot* plot = new RimSummaryPlot();
|
||||||
summaryPlotColl->summaryPlots().push_back(plot);
|
summaryPlotColl->summaryPlots().push_back(plot);
|
||||||
|
|
||||||
|
description += well->name();
|
||||||
plot->setDescription(description);
|
plot->setDescription(description);
|
||||||
|
|
||||||
|
if (isInjector(well))
|
||||||
{
|
{
|
||||||
RimSummaryCurveFilter* newCurveFilter = new RimSummaryCurveFilter();
|
// Left Axis
|
||||||
plot->addCurveFilter(newCurveFilter);
|
|
||||||
|
|
||||||
newCurveFilter->createCurves(gridSummaryCase, curveFilterText);
|
RimDefines::PlotAxis plotAxis = RimDefines::PLOT_AXIS_LEFT;
|
||||||
|
|
||||||
|
{
|
||||||
|
// Water
|
||||||
|
QString parameterName = "WWIR";
|
||||||
|
RimSummaryCurve* curve = RicPlotProductionRateFeature::addSummaryCurve(plot, well, gridSummaryCase, parameterName, plotAxis);
|
||||||
|
curve->setColor(RimSummaryCurveAppearanceCalculator::cycledBlueColor(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
// Gas
|
||||||
|
QString parameterName = "WGIR";
|
||||||
|
RimSummaryCurve* curve = RicPlotProductionRateFeature::addSummaryCurve(plot, well, gridSummaryCase, parameterName, plotAxis);
|
||||||
|
curve->setColor(RimSummaryCurveAppearanceCalculator::cycledRedColor(0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Left Axis
|
||||||
|
|
||||||
|
RimDefines::PlotAxis plotAxis = RimDefines::PLOT_AXIS_LEFT;
|
||||||
|
|
||||||
|
{
|
||||||
|
// Oil
|
||||||
|
QString parameterName = "WOPR";
|
||||||
|
RimSummaryCurve* curve = RicPlotProductionRateFeature::addSummaryCurve(plot, well, gridSummaryCase, parameterName, plotAxis);
|
||||||
|
curve->setColor(RimSummaryCurveAppearanceCalculator::cycledGreenColor(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
// Water
|
||||||
|
QString parameterName = "WWPR";
|
||||||
|
RimSummaryCurve* curve = RicPlotProductionRateFeature::addSummaryCurve(plot, well, gridSummaryCase, parameterName, plotAxis);
|
||||||
|
curve->setColor(RimSummaryCurveAppearanceCalculator::cycledBlueColor(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
// Gas
|
||||||
|
QString parameterName = "WGPR";
|
||||||
|
RimSummaryCurve* curve = RicPlotProductionRateFeature::addSummaryCurve(plot, well, gridSummaryCase, parameterName, plotAxis);
|
||||||
|
curve->setColor(RimSummaryCurveAppearanceCalculator::cycledRedColor(0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Right Axis
|
||||||
|
|
||||||
{
|
{
|
||||||
RimSummaryCurve* newCurve = new RimSummaryCurve();
|
RimDefines::PlotAxis plotAxis = RimDefines::PLOT_AXIS_RIGHT;
|
||||||
plot->addCurve(newCurve);
|
|
||||||
|
|
||||||
newCurve->setSummaryCase(gridSummaryCase);
|
{
|
||||||
|
RimSummaryCurve* curve = RicPlotProductionRateFeature::addSummaryCurve(plot, well, gridSummaryCase, "WTHP", plotAxis);
|
||||||
|
curve->setColor(RimSummaryCurveAppearanceCalculator::cycledNoneRGBBrColor(0));
|
||||||
|
//curve->setSymbol(RimPlotCurve::SYMBOL_DIAMOND);
|
||||||
|
}
|
||||||
|
|
||||||
RifEclipseSummaryAddress addr( RifEclipseSummaryAddress::SUMMARY_WELL,
|
{
|
||||||
"WBHP",
|
RimSummaryCurve* curve = RicPlotProductionRateFeature::addSummaryCurve(plot, well, gridSummaryCase, "WBHP", plotAxis);
|
||||||
-1,
|
curve->setColor(RimSummaryCurveAppearanceCalculator::cycledNoneRGBBrColor(1));
|
||||||
-1,
|
//curve->setSymbol(RimPlotCurve::SYMBOL_DIAMOND);
|
||||||
"",
|
}
|
||||||
well->name().toStdString(),
|
|
||||||
-1,
|
|
||||||
"",
|
|
||||||
-1,
|
|
||||||
-1,
|
|
||||||
-1);
|
|
||||||
|
|
||||||
newCurve->setSummaryAddress(addr);
|
|
||||||
newCurve->setYAxis(RimDefines::PlotAxis::PLOT_AXIS_RIGHT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
summaryPlotColl->updateConnectedEditors();
|
summaryPlotColl->updateConnectedEditors();
|
||||||
@ -210,3 +228,66 @@ RimGridSummaryCase* RicPlotProductionRateFeature::gridSummaryCaseForWell(RimEcli
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
bool RicPlotProductionRateFeature::isInjector(RimEclipseWell* well)
|
||||||
|
{
|
||||||
|
RigSingleWellResultsData* wRes = well->wellResults();
|
||||||
|
if (wRes)
|
||||||
|
{
|
||||||
|
RimView* rimView = nullptr;
|
||||||
|
well->firstAncestorOrThisOfTypeAsserted(rimView);
|
||||||
|
|
||||||
|
int currentTimeStep = rimView->currentTimeStep();
|
||||||
|
|
||||||
|
if (wRes->hasWellResult(currentTimeStep))
|
||||||
|
{
|
||||||
|
const RigWellResultFrame& wrf = wRes->wellResultFrame(currentTimeStep);
|
||||||
|
|
||||||
|
if ( wrf.m_productionType == RigWellResultFrame::OIL_INJECTOR
|
||||||
|
|| wrf.m_productionType == RigWellResultFrame::GAS_INJECTOR
|
||||||
|
|| wrf.m_productionType == RigWellResultFrame::WATER_INJECTOR)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RimSummaryCurve* RicPlotProductionRateFeature::addSummaryCurve( RimSummaryPlot* plot, const RimEclipseWell* well,
|
||||||
|
RimGridSummaryCase* gridSummaryCase, const QString& vectorName,
|
||||||
|
RimDefines::PlotAxis plotAxis)
|
||||||
|
{
|
||||||
|
CVF_ASSERT(plot);
|
||||||
|
CVF_ASSERT(gridSummaryCase);
|
||||||
|
CVF_ASSERT(well);
|
||||||
|
|
||||||
|
RimSummaryCurve* newCurve = new RimSummaryCurve();
|
||||||
|
plot->addCurve(newCurve);
|
||||||
|
|
||||||
|
newCurve->setSummaryCase(gridSummaryCase);
|
||||||
|
|
||||||
|
RifEclipseSummaryAddress addr(RifEclipseSummaryAddress::SUMMARY_WELL,
|
||||||
|
vectorName.toStdString(),
|
||||||
|
-1,
|
||||||
|
-1,
|
||||||
|
"",
|
||||||
|
well->name().toStdString(),
|
||||||
|
-1,
|
||||||
|
"",
|
||||||
|
-1,
|
||||||
|
-1,
|
||||||
|
-1);
|
||||||
|
|
||||||
|
newCurve->setSummaryAddress(addr);
|
||||||
|
newCurve->setYAxis(plotAxis);
|
||||||
|
|
||||||
|
return newCurve;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -21,9 +21,12 @@
|
|||||||
#include "cafCmdFeature.h"
|
#include "cafCmdFeature.h"
|
||||||
|
|
||||||
#include "RimFlowDiagSolution.h"
|
#include "RimFlowDiagSolution.h"
|
||||||
|
#include "RimDefines.h"
|
||||||
|
|
||||||
class RimGridSummaryCase;
|
class RimGridSummaryCase;
|
||||||
class RimEclipseWell;
|
class RimEclipseWell;
|
||||||
|
class RimSummaryPlot;
|
||||||
|
class RimSummaryCurve;
|
||||||
|
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
///
|
///
|
||||||
@ -39,7 +42,11 @@ protected:
|
|||||||
virtual void setupActionLook( QAction* actionToSetup ) override;
|
virtual void setupActionLook( QAction* actionToSetup ) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static RimGridSummaryCase* gridSummaryCaseForWell(RimEclipseWell* well);
|
static RimGridSummaryCase* gridSummaryCaseForWell(RimEclipseWell* well);
|
||||||
|
static bool isInjector(RimEclipseWell* well);
|
||||||
|
static RimSummaryCurve* addSummaryCurve(RimSummaryPlot* plot, const RimEclipseWell* well,
|
||||||
|
RimGridSummaryCase* gridSummaryCase, const QString& vectorName,
|
||||||
|
RimDefines::PlotAxis plotAxis);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user