diff --git a/ApplicationCode/ReservoirDataModel/RigEclipseCrossPlotDataExtractor.cpp b/ApplicationCode/ReservoirDataModel/RigEclipseCrossPlotDataExtractor.cpp index eef86f79eb..0bb217e274 100644 --- a/ApplicationCode/ReservoirDataModel/RigEclipseCrossPlotDataExtractor.cpp +++ b/ApplicationCode/ReservoirDataModel/RigEclipseCrossPlotDataExtractor.cpp @@ -34,18 +34,20 @@ //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RigEclipseCrossPlotResult RigEclipseCrossPlotDataExtractor::extract(RigEclipseCaseData* caseData, - int resultTimeStep, - const RigEclipseResultAddress& xAddress, - const RigEclipseResultAddress& yAddress, - RigGridCrossPlotCurveGrouping groupingType, - const RigEclipseResultAddress& groupAddress, - std::map timeStepCellVisibilityMap) +RigEclipseCrossPlotResult RigEclipseCrossPlotDataExtractor::extract(RigEclipseCaseData* caseData, + int resultTimeStep, + const RigEclipseResultAddress& xAddress, + const RigEclipseResultAddress& yAddress, + RigGridCrossPlotCurveGrouping groupingType, + const RigEclipseResultAddress& groupAddress, + std::map timeStepCellVisibilityMap) { RigEclipseCrossPlotResult result; - RigCaseCellResultsData* resultData = caseData->results(RiaDefines::MATRIX_MODEL); - RigFormationNames* activeFormationNames = resultData->activeFormationNames(); + RigCaseCellResultsData* resultData = caseData->results(RiaDefines::MATRIX_MODEL); + if (!resultData) return result; + + RigFormationNames* activeFormationNames = resultData->activeFormationNames(); std::unique_ptr catBinSorter; const std::vector>* catValuesForAllSteps = nullptr; @@ -55,27 +57,35 @@ RigEclipseCrossPlotResult RigEclipseCrossPlotDataExtractor::extract(RigEclipseCa RigActiveCellInfo* activeCellInfo = resultData->activeCellInfo(); const RigMainGrid* mainGrid = caseData->mainGrid(); - resultData->ensureKnownResultLoaded(xAddress); - resultData->ensureKnownResultLoaded(yAddress); + if (!resultData->ensureKnownResultLoaded(xAddress)) + { + return result; + } + + if (!resultData->ensureKnownResultLoaded(yAddress)) + { + return result; + } const std::vector>& xValuesForAllSteps = resultData->cellScalarResults(xAddress); const std::vector>& yValuesForAllSteps = resultData->cellScalarResults(yAddress); if (groupingType == GROUP_BY_RESULT && groupAddress.isValid()) { - resultData->ensureKnownResultLoaded(groupAddress); - catValuesForAllSteps = &resultData->cellScalarResults(groupAddress); + if (resultData->ensureKnownResultLoaded(groupAddress)) + { + catValuesForAllSteps = &resultData->cellScalarResults(groupAddress); + } } std::set timeStepsToInclude; if (resultTimeStep == -1) { size_t nStepsInData = std::max(xValuesForAllSteps.size(), yValuesForAllSteps.size()); - bool xValid = xValuesForAllSteps.size() == 1u || xValuesForAllSteps.size() == nStepsInData; - bool yValid = yValuesForAllSteps.size() == 1u || yValuesForAllSteps.size() == nStepsInData; - - if (!(xValid && yValid)) - return result; + bool xValid = xValuesForAllSteps.size() == 1u || xValuesForAllSteps.size() == nStepsInData; + bool yValid = yValuesForAllSteps.size() == 1u || yValuesForAllSteps.size() == nStepsInData; + + if (!(xValid && yValid)) return result; for (size_t i = 0; i < nStepsInData; ++i) { @@ -93,7 +103,7 @@ RigEclipseCrossPlotResult RigEclipseCrossPlotDataExtractor::extract(RigEclipseCa if (timeStepCellVisibilityMap.count(timeStep)) { cellVisibility = &timeStepCellVisibilityMap[timeStep]; - } + } int xIndex = timeStep >= (int)xValuesForAllSteps.size() ? 0 : timeStep; int yIndex = timeStep >= (int)yValuesForAllSteps.size() ? 0 : timeStep;