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
@ -33,7 +33,7 @@
|
||||
#include "RimProject.h"
|
||||
#include "RimSummaryCaseCollection.h"
|
||||
#include "RimSummaryCurve.h"
|
||||
#include "RimSummaryCurveFilter.h"
|
||||
#include "RimSummaryCurveAppearanceCalculator.h"
|
||||
#include "RimSummaryPlot.h"
|
||||
#include "RimSummaryPlotCollection.h"
|
||||
#include "RimView.h"
|
||||
@ -94,67 +94,85 @@ void RicPlotProductionRateFeature::onActionTriggered(bool isChecked)
|
||||
RimGridSummaryCase* gridSummaryCase = RicPlotProductionRateFeature::gridSummaryCaseForWell(well);
|
||||
if (!gridSummaryCase) continue;
|
||||
|
||||
QString curveFilterText = "W*PR:";
|
||||
QString description = "Well Production Rates : ";
|
||||
|
||||
RigSingleWellResultsData* wRes = well->wellResults();
|
||||
if (wRes)
|
||||
if (isInjector(well))
|
||||
{
|
||||
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)
|
||||
{
|
||||
curveFilterText = "W*IR:";
|
||||
description = "Well Injection Rates : ";
|
||||
}
|
||||
}
|
||||
description = "Well Injection Rates : ";
|
||||
}
|
||||
|
||||
curveFilterText += well->name();
|
||||
description += well->name();
|
||||
|
||||
RimSummaryPlot* plot = new RimSummaryPlot();
|
||||
summaryPlotColl->summaryPlots().push_back(plot);
|
||||
|
||||
description += well->name();
|
||||
plot->setDescription(description);
|
||||
|
||||
if (isInjector(well))
|
||||
{
|
||||
RimSummaryCurveFilter* newCurveFilter = new RimSummaryCurveFilter();
|
||||
plot->addCurveFilter(newCurveFilter);
|
||||
// Left Axis
|
||||
|
||||
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();
|
||||
plot->addCurve(newCurve);
|
||||
RimDefines::PlotAxis plotAxis = RimDefines::PLOT_AXIS_RIGHT;
|
||||
|
||||
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",
|
||||
-1,
|
||||
-1,
|
||||
"",
|
||||
well->name().toStdString(),
|
||||
-1,
|
||||
"",
|
||||
-1,
|
||||
-1,
|
||||
-1);
|
||||
|
||||
newCurve->setSummaryAddress(addr);
|
||||
newCurve->setYAxis(RimDefines::PlotAxis::PLOT_AXIS_RIGHT);
|
||||
{
|
||||
RimSummaryCurve* curve = RicPlotProductionRateFeature::addSummaryCurve(plot, well, gridSummaryCase, "WBHP", plotAxis);
|
||||
curve->setColor(RimSummaryCurveAppearanceCalculator::cycledNoneRGBBrColor(1));
|
||||
//curve->setSymbol(RimPlotCurve::SYMBOL_DIAMOND);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
summaryPlotColl->updateConnectedEditors();
|
||||
@ -210,3 +228,66 @@ RimGridSummaryCase* RicPlotProductionRateFeature::gridSummaryCaseForWell(RimEcli
|
||||
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 "RimFlowDiagSolution.h"
|
||||
#include "RimDefines.h"
|
||||
|
||||
class RimGridSummaryCase;
|
||||
class RimEclipseWell;
|
||||
class RimSummaryPlot;
|
||||
class RimSummaryCurve;
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
@ -39,7 +42,11 @@ protected:
|
||||
virtual void setupActionLook( QAction* actionToSetup ) override;
|
||||
|
||||
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