mirror of
				https://github.com/OPM/ResInsight.git
				synced 2025-02-25 18:55:39 -06:00 
			
		
		
		
	#4230 Grid Cross Plot: Return if required data is missing
This commit is contained in:
		@@ -34,18 +34,20 @@
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
///
 | 
			
		||||
//--------------------------------------------------------------------------------------------------
 | 
			
		||||
RigEclipseCrossPlotResult RigEclipseCrossPlotDataExtractor::extract(RigEclipseCaseData*                 caseData,
 | 
			
		||||
                                                                    int                                 resultTimeStep,
 | 
			
		||||
                                                                    const RigEclipseResultAddress&      xAddress,
 | 
			
		||||
                                                                    const RigEclipseResultAddress&      yAddress,
 | 
			
		||||
                                                                    RigGridCrossPlotCurveGrouping       groupingType,
 | 
			
		||||
                                                                    const RigEclipseResultAddress&      groupAddress,
 | 
			
		||||
                                                                    std::map<int, cvf::UByteArray>      timeStepCellVisibilityMap)
 | 
			
		||||
RigEclipseCrossPlotResult RigEclipseCrossPlotDataExtractor::extract(RigEclipseCaseData*            caseData,
 | 
			
		||||
                                                                    int                            resultTimeStep,
 | 
			
		||||
                                                                    const RigEclipseResultAddress& xAddress,
 | 
			
		||||
                                                                    const RigEclipseResultAddress& yAddress,
 | 
			
		||||
                                                                    RigGridCrossPlotCurveGrouping  groupingType,
 | 
			
		||||
                                                                    const RigEclipseResultAddress& groupAddress,
 | 
			
		||||
                                                                    std::map<int, cvf::UByteArray> 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<RigEclipseResultBinSorter> catBinSorter;
 | 
			
		||||
    const std::vector<std::vector<double>>*    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<std::vector<double>>& xValuesForAllSteps = resultData->cellScalarResults(xAddress);
 | 
			
		||||
        const std::vector<std::vector<double>>& 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<int> 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;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user