From 9b42f1ca8c26d4f8205294dcf4d089c9e127fd5a Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Thu, 19 Jan 2017 10:37:59 +0100 Subject: [PATCH] Reverted 4ec7c97a77efe89bffffc52938fbe242c5a2343b Access of RimEclipseCase was done by firstAncestorOf from, and in several cases RimEclipseCase is not parent of RimEclipseCellColors. RimEclipseCase must be explicitly specified. --- .../RivIntersectionBoxPartMgr.cpp | 3 ++- .../Intersections/RivIntersectionPartMgr.cpp | 3 ++- .../RivCellEdgeGeometryUtils.cpp | 24 +++++++++++++++++-- .../RivCellEdgeGeometryUtils.h | 6 +++++ .../RivReservoirViewPartMgr.cpp | 4 +++- .../RivTextureCoordsCreator.cpp | 2 +- .../RimWellLogExtractionCurve.cpp | 3 ++- .../RigResultAccessorFactory.cpp | 18 +++++--------- .../RigResultAccessorFactory.h | 3 ++- .../UserInterface/RiuResultTextBuilder.cpp | 4 ++-- 10 files changed, 48 insertions(+), 22 deletions(-) diff --git a/ApplicationCode/ModelVisualization/Intersections/RivIntersectionBoxPartMgr.cpp b/ApplicationCode/ModelVisualization/Intersections/RivIntersectionBoxPartMgr.cpp index 8915be00d4..7d3c8cc9bf 100644 --- a/ApplicationCode/ModelVisualization/Intersections/RivIntersectionBoxPartMgr.cpp +++ b/ApplicationCode/ModelVisualization/Intersections/RivIntersectionBoxPartMgr.cpp @@ -126,7 +126,8 @@ void RivIntersectionBoxPartMgr::updateCellResultColor(size_t timeStepIndex) } else { - resultAccessor = RigResultAccessorFactory::createFromResultDefinition(0, + resultAccessor = RigResultAccessorFactory::createFromResultDefinition(cellResultColors->reservoirView()->eclipseCase()->reservoirData(), + 0, timeStepIndex, cellResultColors); } diff --git a/ApplicationCode/ModelVisualization/Intersections/RivIntersectionPartMgr.cpp b/ApplicationCode/ModelVisualization/Intersections/RivIntersectionPartMgr.cpp index 6f5f184daf..d537d982c6 100644 --- a/ApplicationCode/ModelVisualization/Intersections/RivIntersectionPartMgr.cpp +++ b/ApplicationCode/ModelVisualization/Intersections/RivIntersectionPartMgr.cpp @@ -134,7 +134,8 @@ void RivIntersectionPartMgr::updateCellResultColor(size_t timeStepIndex) } else { - resultAccessor = RigResultAccessorFactory::createFromResultDefinition(0, + resultAccessor = RigResultAccessorFactory::createFromResultDefinition(cellResultColors->reservoirView()->eclipseCase()->reservoirData(), + 0, timeStepIndex, cellResultColors); } diff --git a/ApplicationCode/ModelVisualization/RivCellEdgeGeometryUtils.cpp b/ApplicationCode/ModelVisualization/RivCellEdgeGeometryUtils.cpp index 0e5ab12425..054d318df0 100644 --- a/ApplicationCode/ModelVisualization/RivCellEdgeGeometryUtils.cpp +++ b/ApplicationCode/ModelVisualization/RivCellEdgeGeometryUtils.cpp @@ -60,7 +60,7 @@ void RivCellEdgeGeometryUtils::addCellEdgeResultsToDrawableGeo( // Create result access objects - cvf::ref cellCenterDataAccessObject = RigResultAccessorFactory::createFromResultDefinition(gridIndex, timeStepIndex, cellResultColors); + cvf::ref cellCenterDataAccessObject = createCellCenterResultAccessor(cellResultColors, timeStepIndex, eclipseCase, eclipseCase->grid(gridIndex)); cvf::ref cellEdgeResultAccessor = createCellEdgeResultAccessor(cellResultColors, cellEdgeResultColors, timeStepIndex, eclipseCase, eclipseCase->grid(gridIndex)); size_t vertexCount = geo->vertexArray()->size(); @@ -303,7 +303,7 @@ cvf::ref RivCellEdgeGeometryUtils::createCellEdgeResultAccess if (cellEdgeResultColors->propertyType() == RimCellEdgeColors::ANY_SINGLE_PROPERTY) { - cvf::ref daObj = RigResultAccessorFactory::createFromResultDefinition(grid->gridIndex(), timeStepIndex, cellEdgeResultColors->singleVarEdgeResultColors()); + cvf::ref daObj = RivCellEdgeGeometryUtils::createCellCenterResultAccessor(cellEdgeResultColors->singleVarEdgeResultColors(), timeStepIndex, eclipseCase, grid); for (size_t cubeFaceIdx = 0; cubeFaceIdx < 6; cubeFaceIdx++) { @@ -335,3 +335,23 @@ cvf::ref RivCellEdgeGeometryUtils::createCellEdgeResultAccess return cellEdgeResultAccessor; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +cvf::ref RivCellEdgeGeometryUtils::createCellCenterResultAccessor(RimEclipseCellColors* cellResultColors, size_t timeStepIndex, RigEclipseCaseData* eclipseCase, const RigGridBase* grid) +{ + cvf::ref resultAccessor = NULL; + + if (cellResultColors->hasResult()) + { + resultAccessor = RigResultAccessorFactory::createFromResultDefinition(eclipseCase, grid->gridIndex(), timeStepIndex, cellResultColors); + } + + if (resultAccessor.isNull()) + { + resultAccessor = new RigHugeValResultAccessor; + } + + return resultAccessor; +} + diff --git a/ApplicationCode/ModelVisualization/RivCellEdgeGeometryUtils.h b/ApplicationCode/ModelVisualization/RivCellEdgeGeometryUtils.h index 977e744a23..4a8a313736 100644 --- a/ApplicationCode/ModelVisualization/RivCellEdgeGeometryUtils.h +++ b/ApplicationCode/ModelVisualization/RivCellEdgeGeometryUtils.h @@ -57,6 +57,12 @@ public: private: + static cvf::ref createCellCenterResultAccessor( + RimEclipseCellColors* cellResultColors, + size_t timeStepIndex, + RigEclipseCaseData* eclipseCase, + const RigGridBase* grid); + static cvf::ref createCellEdgeResultAccessor( RimEclipseCellColors* cellResultColors, RimCellEdgeColors* cellEdgeResultColors, diff --git a/ApplicationCode/ModelVisualization/RivReservoirViewPartMgr.cpp b/ApplicationCode/ModelVisualization/RivReservoirViewPartMgr.cpp index 7b5f3c94d3..0a970889a9 100644 --- a/ApplicationCode/ModelVisualization/RivReservoirViewPartMgr.cpp +++ b/ApplicationCode/ModelVisualization/RivReservoirViewPartMgr.cpp @@ -789,7 +789,9 @@ void RivReservoirViewPartMgr::computePropertyVisibility(cvf::UByteArray* cellVis { const RimCellFilter::FilterModeType filterType = propertyFilter->filterMode(); - cvf::ref resultAccessor = RigResultAccessorFactory::createFromResultDefinition(grid->gridIndex(), timeStepIndex, propertyFilter->resultDefinition); + RigEclipseCaseData* eclipseCase = propFilterColl->reservoirView()->eclipseCase()->reservoirData(); + + cvf::ref resultAccessor = RigResultAccessorFactory::createFromResultDefinition(eclipseCase, grid->gridIndex(), timeStepIndex, propertyFilter->resultDefinition); CVF_ASSERT(resultAccessor.notNull()); diff --git a/ApplicationCode/ModelVisualization/RivTextureCoordsCreator.cpp b/ApplicationCode/ModelVisualization/RivTextureCoordsCreator.cpp index 25e4204c79..c75de10969 100644 --- a/ApplicationCode/ModelVisualization/RivTextureCoordsCreator.cpp +++ b/ApplicationCode/ModelVisualization/RivTextureCoordsCreator.cpp @@ -45,7 +45,7 @@ RivTextureCoordsCreator::RivTextureCoordsCreator(RimEclipseCellColors* cellResul m_quadMapper = quadMapper; CVF_ASSERT(quadMapper && eclipseCase ); - m_resultAccessor = RigResultAccessorFactory::createFromResultDefinition(gridIndex, timeStepIndex, cellResultColors); + m_resultAccessor = RigResultAccessorFactory::createFromResultDefinition(eclipseCase, gridIndex, timeStepIndex, cellResultColors); cvf::ref pipeInCellEval = new RigPipeInCellEvaluator(cellResultColors->reservoirView()->wellCollection()->resultWellGeometryVisibilities(timeStepIndex), diff --git a/ApplicationCode/ProjectDataModel/RimWellLogExtractionCurve.cpp b/ApplicationCode/ProjectDataModel/RimWellLogExtractionCurve.cpp index ffc9c51fbf..2d950c2054 100644 --- a/ApplicationCode/ProjectDataModel/RimWellLogExtractionCurve.cpp +++ b/ApplicationCode/ProjectDataModel/RimWellLogExtractionCurve.cpp @@ -250,7 +250,8 @@ void RimWellLogExtractionCurve::onLoadDataAndUpdate() m_eclipseResultDefinition->loadResult(); - cvf::ref resAcc = RigResultAccessorFactory::createFromResultDefinition(0, + cvf::ref resAcc = RigResultAccessorFactory::createFromResultDefinition(eclipseCase->reservoirData(), + 0, m_timeStep, m_eclipseResultDefinition); diff --git a/ApplicationCode/ReservoirDataModel/RigResultAccessorFactory.cpp b/ApplicationCode/ReservoirDataModel/RigResultAccessorFactory.cpp index 5560b1277f..5b1411e14e 100644 --- a/ApplicationCode/ReservoirDataModel/RigResultAccessorFactory.cpp +++ b/ApplicationCode/ReservoirDataModel/RigResultAccessorFactory.cpp @@ -23,19 +23,18 @@ #include "RigActiveCellsResultAccessor.h" #include "RigAllGridCellsResultAccessor.h" #include "RigCaseCellResultsData.h" +#include "RigEclipseCaseData.h" #include "RigCombMultResultAccessor.h" #include "RigCombTransResultAccessor.h" -#include "RigEclipseCaseData.h" -#include "RigFlowDiagResults.h" #include "RigGridBase.h" #include "RigMainGrid.h" #include "RigResultAccessor.h" -#include "RimEclipseCase.h" #include "RimEclipseResultDefinition.h" -#include "RimFlowDiagSolution.h" #include +#include "RimFlowDiagSolution.h" +#include "RigFlowDiagResults.h" //-------------------------------------------------------------------------------------------------- /// @@ -168,16 +167,11 @@ cvf::ref RigResultAccessorFactory::createFromNameAndType(RigE //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -cvf::ref RigResultAccessorFactory::createFromResultDefinition(size_t gridIndex, +cvf::ref RigResultAccessorFactory::createFromResultDefinition(RigEclipseCaseData* eclipseCase, + size_t gridIndex, size_t timeStepIndex, RimEclipseResultDefinition* resultDefinition) { - RimEclipseCase* rimEclipseCase = nullptr; - resultDefinition->firstAncestorOrThisOfType(rimEclipseCase); - - RigEclipseCaseData* eclipseCase = rimEclipseCase->reservoirData(); - if (!eclipseCase) return new RigHugeValResultAccessor; - RifReaderInterface::PorosityModelResultType porosityModel = RigCaseCellResultsData::convertFromProjectModelPorosityModel(resultDefinition->porosityModel()); if (resultDefinition->resultType() != RimDefines::FLOW_DIAGNOSTICS) @@ -198,7 +192,7 @@ cvf::ref RigResultAccessorFactory::createFromResultDefinition else { RimFlowDiagSolution* flowSol = resultDefinition->flowDiagSolution(); - if (!flowSol) return new RigHugeValResultAccessor; + if (!flowSol) return new RigHugeValResultAccessor;; const std::vector* resultValues = flowSol->flowDiagResults()->resultValues( resultDefinition->flowDiagResAddress(), timeStepIndex); if (!resultValues) return new RigHugeValResultAccessor; diff --git a/ApplicationCode/ReservoirDataModel/RigResultAccessorFactory.h b/ApplicationCode/ReservoirDataModel/RigResultAccessorFactory.h index 1fb800e3a4..5cb2e83b13 100644 --- a/ApplicationCode/ReservoirDataModel/RigResultAccessorFactory.h +++ b/ApplicationCode/ReservoirDataModel/RigResultAccessorFactory.h @@ -33,7 +33,8 @@ class RigResultAccessorFactory { public: static cvf::ref - createFromResultDefinition(size_t gridIndex, + createFromResultDefinition(RigEclipseCaseData* eclipseCase, + size_t gridIndex, size_t timeStepIndex, RimEclipseResultDefinition* resultDefinition); diff --git a/ApplicationCode/UserInterface/RiuResultTextBuilder.cpp b/ApplicationCode/UserInterface/RiuResultTextBuilder.cpp index 60e3ec846e..c5ca780486 100644 --- a/ApplicationCode/UserInterface/RiuResultTextBuilder.cpp +++ b/ApplicationCode/UserInterface/RiuResultTextBuilder.cpp @@ -494,7 +494,7 @@ void RiuResultTextBuilder::appendTextFromResultColors(RigEclipseCaseData* eclips } else { - resultAccessor = RigResultAccessorFactory::createFromResultDefinition(gridIndex, timeStepIndex, resultColors); + resultAccessor = RigResultAccessorFactory::createFromResultDefinition(eclipseCase, gridIndex, timeStepIndex, resultColors); } if (resultAccessor.notNull()) @@ -700,7 +700,7 @@ QString RiuResultTextBuilder::cellResultText(RimEclipseCellColors* resultColors) adjustedTimeStep = 0; } - cvf::ref resultAccessor = RigResultAccessorFactory::createFromResultDefinition(m_gridIndex, adjustedTimeStep, resultColors); + cvf::ref resultAccessor = RigResultAccessorFactory::createFromResultDefinition(eclipseCaseData, m_gridIndex, adjustedTimeStep, resultColors); if (resultAccessor.notNull()) { double scalarValue = resultAccessor->cellFaceScalar(m_cellIndex, m_face);