From 97796329e95021f2afb45e81c70e296013e2da97 Mon Sep 17 00:00:00 2001 From: astridkbjorke Date: Wed, 30 Aug 2017 10:10:50 +0200 Subject: [PATCH] #1787 Fixing issues with data not present at all time steps. --- ...igNumberOfFloodedPoreVolumesCalculator.cpp | 87 ++++++++++++------- 1 file changed, 56 insertions(+), 31 deletions(-) diff --git a/ApplicationCode/ReservoirDataModel/RigNumberOfFloodedPoreVolumesCalculator.cpp b/ApplicationCode/ReservoirDataModel/RigNumberOfFloodedPoreVolumesCalculator.cpp index c6289aa907..0db0396d54 100644 --- a/ApplicationCode/ReservoirDataModel/RigNumberOfFloodedPoreVolumesCalculator.cpp +++ b/ApplicationCode/ReservoirDataModel/RigNumberOfFloodedPoreVolumesCalculator.cpp @@ -77,18 +77,32 @@ RigNumberOfFloodedPoreVolumesCalculator::RigNumberOfFloodedPoreVolumesCalculator std::vector daysSinceSimulationStart = caseToApply->eclipseCaseData()->results(RiaDefines::MATRIX_MODEL)->daysSinceSimulationStart(); - for (size_t timeStep = 1; timeStep < daysSinceSimulationStart.size(); timeStep++) + for (size_t timeStep = 0; timeStep < daysSinceSimulationStart.size(); timeStep++) { - const std::vector* flowrateI = &(eclipseCaseData->results(RiaDefines::MATRIX_MODEL)->cellScalarResults(scalarResultIndexFlowrateI, - timeStep)); + const std::vector* flowrateI = nullptr; + if (scalarResultIndexFlowrateI != cvf::UNDEFINED_SIZE_T) + { + flowrateI = &(eclipseCaseData->results(RiaDefines::MATRIX_MODEL)->cellScalarResults(scalarResultIndexFlowrateI, + timeStep)); + } flowrateIatAllTimeSteps.push_back(flowrateI); - const std::vector* flowrateJ = &(eclipseCaseData->results(RiaDefines::MATRIX_MODEL)->cellScalarResults(scalarResultIndexFlowrateJ, - timeStep)); + + const std::vector* flowrateJ = nullptr; + if (scalarResultIndexFlowrateJ != cvf::UNDEFINED_SIZE_T) + { + flowrateI = &(eclipseCaseData->results(RiaDefines::MATRIX_MODEL)->cellScalarResults(scalarResultIndexFlowrateJ, + timeStep)); + } flowrateJatAllTimeSteps.push_back(flowrateJ); - - const std::vector* flowrateK = &(eclipseCaseData->results(RiaDefines::MATRIX_MODEL)->cellScalarResults(scalarResultIndexFlowrateK, - timeStep)); + + + const std::vector* flowrateK = nullptr; + if (scalarResultIndexFlowrateK != cvf::UNDEFINED_SIZE_T) + { + flowrateK = &(eclipseCaseData->results(RiaDefines::MATRIX_MODEL)->cellScalarResults(scalarResultIndexFlowrateK, + timeStep)); + } flowrateKatAllTimeSteps.push_back(flowrateK); const std::vector* connectionFlowrate = nncData->dynamicConnectionScalarResultByName(nncConnectionProperty, @@ -100,11 +114,14 @@ RigNumberOfFloodedPoreVolumesCalculator::RigNumberOfFloodedPoreVolumesCalculator std::vector summedTracerValues(porvResults->size()); for (size_t tracerIndex : scalarResultIndexTracers) { - const std::vector* tracerResult = &(eclipseCaseData->results(RiaDefines::MATRIX_MODEL)->cellScalarResults(tracerIndex, timeStep)); - - for (size_t i = 0; i < summedTracerValues.size(); i++) + if (tracerIndex != cvf::UNDEFINED_SIZE_T) { - summedTracerValues[i] += tracerResult->at(i); + const std::vector* tracerResult = &(eclipseCaseData->results(RiaDefines::MATRIX_MODEL)->cellScalarResults(tracerIndex, timeStep)); + + for (size_t i = 0; i < summedTracerValues.size(); i++) + { + summedTracerValues[i] += tracerResult->at(i); + } } } summedTracersAtAllTimesteps.push_back(summedTracerValues); @@ -162,35 +179,42 @@ void RigNumberOfFloodedPoreVolumesCalculator::calculate(RigMainGrid* mainGrid, for (size_t timeStep = 1; timeStep < daysSinceSimulationStart.size(); timeStep++) { - double daysSinceSimStartNow = daysSinceSimulationStart[timeStep]; - double daysSinceSimStartLastTimeStep = daysSinceSimulationStart[timeStep - 1]; - double deltaT = daysSinceSimStartNow - daysSinceSimStartLastTimeStep; - - const std::vector* flowrateI = flowrateIatAllTimeSteps[timeStep]; - const std::vector* flowrateJ = flowrateJatAllTimeSteps[timeStep]; - const std::vector* flowrateK = flowrateKatAllTimeSteps[timeStep]; - - const std::vector* flowrateNNC = flowrateNNCatAllTimeSteps[timeStep]; - std::vector totoalFlowrateIntoCell(totalNumberOfCells); + if (flowrateIatAllTimeSteps[timeStep] != nullptr + && flowrateJatAllTimeSteps[timeStep] != nullptr + && flowrateKatAllTimeSteps[timeStep] != nullptr) + { + const std::vector* flowrateI = flowrateIatAllTimeSteps[timeStep]; + const std::vector* flowrateJ = flowrateJatAllTimeSteps[timeStep]; + const std::vector* flowrateK = flowrateKatAllTimeSteps[timeStep]; - distributeNeighbourCellFlow(mainGrid, - caseToApply, - summedTracersAtAllTimesteps[timeStep], - flowrateI, - flowrateJ, - flowrateK, - totoalFlowrateIntoCell); + distributeNeighbourCellFlow(mainGrid, + caseToApply, + summedTracersAtAllTimesteps[timeStep], + flowrateI, + flowrateJ, + flowrateK, + totoalFlowrateIntoCell); + } + + const std::vector* flowrateNNC = flowrateNNCatAllTimeSteps[timeStep]; distributeNNCflow(connections, summedTracersAtAllTimesteps[timeStep], flowrateNNC, totoalFlowrateIntoCell); + + + std::vector CellQwIn(totalNumberOfCells); + double daysSinceSimStartNow = daysSinceSimulationStart[timeStep]; + double daysSinceSimStartLastTimeStep = daysSinceSimulationStart[timeStep - 1]; + double deltaT = daysSinceSimStartNow - daysSinceSimStartLastTimeStep; + for (size_t globalCellIndex = 0; globalCellIndex < totalNumberOfCells; globalCellIndex++) { CellQwIn[globalCellIndex] = cellQwInAtAllTimeSteps[timeStep - 1][globalCellIndex] @@ -207,12 +231,13 @@ void RigNumberOfFloodedPoreVolumesCalculator::calculate(RigMainGrid* mainGrid, for (size_t timeStep = 1; timeStep < daysSinceSimulationStart.size(); timeStep++) { + std::vector cumWinflowPV(totalNumberOfCells); for (size_t globalCellIndex = 0; globalCellIndex < totalNumberOfCells; globalCellIndex++) { - m_cumWinflowPVAllTimeSteps[timeStep][globalCellIndex] = cellQwInAtAllTimeSteps[timeStep][globalCellIndex] + cumWinflowPV[globalCellIndex] = cellQwInAtAllTimeSteps[timeStep][globalCellIndex] / porvResults->at(globalCellIndex); - } + m_cumWinflowPVAllTimeSteps.push_back(cumWinflowPV); } }