() Use single curves to represent production rates

Use colors from RimSummaryCurveAppearanceCalculator
This commit is contained in:
Magne Sjaastad 2017-05-29 08:34:05 +02:00
parent cfe7b683be
commit 07696e49cc
2 changed files with 133 additions and 45 deletions

View File

@ -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;
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(); 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;
}

View File

@ -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;
//================================================================================================== //==================================================================================================
/// ///
@ -40,6 +43,10 @@ protected:
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);
}; };