(#612) Time history result accessor and display of curve from selection

This commit is contained in:
Magne Sjaastad
2015-11-04 14:18:52 +01:00
parent 30adb2661e
commit 0011f090de
9 changed files with 256 additions and 41 deletions

View File

@@ -26,9 +26,11 @@
#include "Commands/WellLogCommands/RicNewWellLogCurveExtractionFeature.h"
#include "RigCaseData.h"
#include "RigCaseCellResultsData.h"
#include "RigFemPartCollection.h"
#include "RigFemPartGrid.h"
#include "RigGeoMechCaseData.h"
#include "RigTimeHistoryResultAccessor.h"
#include "RimCellRangeFilter.h"
#include "RimCellRangeFilterCollection.h"
@@ -55,6 +57,7 @@
#include "RiuFemResultTextBuilder.h"
#include "RiuMainWindow.h"
#include "RiuResultTextBuilder.h"
#include "RiuTimeHistoryQwtPlot.h"
#include "RiuViewer.h"
#include "RivFemPartGeometryGenerator.h"
@@ -489,6 +492,13 @@ void RiuViewerCommands::handlePickAction(int winPosX, int winPosY)
resultInfo = textBuilder.mainResultText();
pickInfo = textBuilder.topologyText(", ");
if (eclipseView->cellResult()->hasDynamicResult() &&
eclipseView->eclipseCase() &&
eclipseView->eclipseCase()->reservoirData())
{
addTimeHistoryCurve(eclipseView, gridIndex, cellIndex);
}
}
else if (geomView)
{
@@ -517,6 +527,34 @@ void RiuViewerCommands::handlePickAction(int winPosX, int winPosY)
mainWnd->setResultInfo(resultInfo);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuViewerCommands::addTimeHistoryCurve(RimEclipseView* eclipseView, size_t gridIndex, size_t cellIndex)
{
RifReaderInterface::PorosityModelResultType porosityModel = RigCaseCellResultsData::convertFromProjectModelPorosityModel(eclipseView->cellResult()->porosityModel());
std::vector<QDateTime> timeStepDates = eclipseView->eclipseCase()->reservoirData()->results(porosityModel)->timeStepDates(eclipseView->cellResult()->scalarResultIndex());
RigTimeHistoryResultAccessor timeHistResultAccessor(eclipseView->eclipseCase()->reservoirData(), gridIndex, cellIndex, eclipseView->cellResult()->scalarResultIndex(), porosityModel);
timeHistResultAccessor.computeCurveData();
QString curveName = eclipseView->eclipseCase()->caseUserDescription();
curveName += " - Result : ";
curveName += eclipseView->cellResult()->resultVariable();
curveName += " - ";
curveName += timeHistResultAccessor.topologyText();
std::vector<double> yValues = timeHistResultAccessor.yValues();
CVF_ASSERT(timeStepDates.size() == yValues.size());
RiuMainWindow* mainWnd = RiuMainWindow::instance();
mainWnd->timeHistoryPlot()->deleteAllCurves();
mainWnd->timeHistoryPlot()->addCurve(curveName, timeStepDates, yValues);
}
//--------------------------------------------------------------------------------------------------
/// Perform picking and return the index of the face that was hit, if a drawable geo was hit
//--------------------------------------------------------------------------------------------------