From f2146c600705280c85391f88a861a070812ae83a Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Wed, 20 Feb 2019 11:35:31 +0100 Subject: [PATCH] #4114 Regression Test : Remove cached pointer to eclipse case --- .../RimEclipseResultDefinition.cpp | 44 ++++++++++++------- .../RimEclipseResultDefinition.h | 4 +- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/ApplicationCode/ProjectDataModel/RimEclipseResultDefinition.cpp b/ApplicationCode/ProjectDataModel/RimEclipseResultDefinition.cpp index 3302f464f7..9e1e873ca3 100644 --- a/ApplicationCode/ProjectDataModel/RimEclipseResultDefinition.cpp +++ b/ApplicationCode/ProjectDataModel/RimEclipseResultDefinition.cpp @@ -178,8 +178,6 @@ void RimEclipseResultDefinition::simpleCopy(const RimEclipseResultDefinition* ot //-------------------------------------------------------------------------------------------------- void RimEclipseResultDefinition::setEclipseCase(RimEclipseCase* eclipseCase) { - m_eclipseCase = eclipseCase; - assignFlowSolutionFromCase(); } @@ -188,9 +186,9 @@ void RimEclipseResultDefinition::setEclipseCase(RimEclipseCase* eclipseCase) //-------------------------------------------------------------------------------------------------- RigCaseCellResultsData* RimEclipseResultDefinition::currentGridCellResults() const { - if (!m_eclipseCase) return nullptr; + if (!ownerEclipseCase()) return nullptr; - return m_eclipseCase->results(m_porosityModel()); + return ownerEclipseCase()->results(m_porosityModel()); } //-------------------------------------------------------------------------------------------------- @@ -499,7 +497,7 @@ QList RimEclipseResultDefinition::calculateValueOptions( if (fieldNeedingOptions == &m_resultTypeUiField) { bool hasSourSimRLFile = false; - RimEclipseResultCase* eclResCase = dynamic_cast(m_eclipseCase.p()); + RimEclipseResultCase* eclResCase = dynamic_cast(ownerEclipseCase()); if (eclResCase && eclResCase->eclipseCaseData()) { hasSourSimRLFile = eclResCase->hasSourSimFile(); @@ -514,9 +512,9 @@ QList RimEclipseResultDefinition::calculateValueOptions( bool enableSouring = false; #ifdef ENABLE_SOURING - if (m_eclipseCase.notNull()) + if (ownerEclipseCase()) { - RigCaseCellResultsData* cellResultsData = m_eclipseCase->results(this->porosityModel()); + RigCaseCellResultsData* cellResultsData = ownerEclipseCase()->results(this->porosityModel()); if (cellResultsData->hasFlowDiagUsableFluxes()) { @@ -571,7 +569,7 @@ QList RimEclipseResultDefinition::calculateValueOptions( } else if (fieldNeedingOptions == &m_flowSolutionUiField) { - RimEclipseResultCase* eclCase = dynamic_cast(m_eclipseCase.p()); + RimEclipseResultCase* eclCase = dynamic_cast(ownerEclipseCase()); if (eclCase) { std::vector flowSols = eclCase->flowDiagSolutions(); @@ -902,11 +900,11 @@ void RimEclipseResultDefinition::loadResult() { if (isFlowDiagOrInjectionFlooding()) return; // Will load automatically on access - if (m_eclipseCase) + if (ownerEclipseCase()) { - if (!m_eclipseCase->ensureReservoirCaseIsOpen()) + if (!ownerEclipseCase()->ensureReservoirCaseIsOpen()) { - RiaLogging::error("Could not open the Eclipse Grid file: " + m_eclipseCase->gridFileName()); + RiaLogging::error("Could not open the Eclipse Grid file: " + ownerEclipseCase()->gridFileName()); return; } } @@ -915,7 +913,7 @@ void RimEclipseResultDefinition::loadResult() { if (!m_differenceCase->ensureReservoirCaseIsOpen()) { - RiaLogging::error("Could not open the Eclipse Grid file: " + m_eclipseCase->gridFileName()); + RiaLogging::error("Could not open the Eclipse Grid file: " + m_differenceCase->gridFileName()); return; } } @@ -930,6 +928,7 @@ void RimEclipseResultDefinition::loadResult() gridCellResults->ensureKnownResultLoaded(this->eclipseResultAddress()); } + } //-------------------------------------------------------------------------------------------------- @@ -1178,8 +1177,8 @@ bool RimEclipseResultDefinition::isCompletionTypeSelected() const //-------------------------------------------------------------------------------------------------- bool RimEclipseResultDefinition::hasCategoryResult() const { - if (this->m_resultType() == RiaDefines::FORMATION_NAMES && m_eclipseCase && m_eclipseCase->eclipseCaseData() && - m_eclipseCase->eclipseCaseData()->activeFormationNames()) + if (this->m_resultType() == RiaDefines::FORMATION_NAMES && ownerEclipseCase() && ownerEclipseCase()->eclipseCaseData() && + ownerEclipseCase()->eclipseCaseData()->activeFormationNames()) return true; if (this->m_resultType() == RiaDefines::DYNAMIC_NATIVE && this->resultVariable() == RiaDefines::completionTypeResultName()) @@ -1378,7 +1377,7 @@ void RimEclipseResultDefinition::assignFlowSolutionFromCase() { RimFlowDiagSolution* defaultFlowDiagSolution = nullptr; - RimEclipseResultCase* eclCase = dynamic_cast(m_eclipseCase.p()); + RimEclipseResultCase* eclCase = dynamic_cast(ownerEclipseCase()); if (eclCase) { @@ -1387,14 +1386,25 @@ void RimEclipseResultDefinition::assignFlowSolutionFromCase() this->setFlowSolution(defaultFlowDiagSolution); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RimEclipseCase* RimEclipseResultDefinition::ownerEclipseCase() const +{ + RimEclipseCase* eclipseCase = nullptr; + this->firstAncestorOrThisOfType(eclipseCase); + + return eclipseCase; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- bool RimEclipseResultDefinition::hasDualPorFractureResult() { - if (m_eclipseCase && m_eclipseCase->eclipseCaseData()) + if (ownerEclipseCase() && ownerEclipseCase()->eclipseCaseData()) { - return m_eclipseCase->eclipseCaseData()->hasFractureResults(); + return ownerEclipseCase()->eclipseCaseData()->hasFractureResults(); } return false; diff --git a/ApplicationCode/ProjectDataModel/RimEclipseResultDefinition.h b/ApplicationCode/ProjectDataModel/RimEclipseResultDefinition.h index f9a83fa715..ad6f0d5d69 100644 --- a/ApplicationCode/ProjectDataModel/RimEclipseResultDefinition.h +++ b/ApplicationCode/ProjectDataModel/RimEclipseResultDefinition.h @@ -166,9 +166,6 @@ protected: caf::PdmField > m_selectedSouringTracersUiField; - - caf::PdmPointer m_eclipseCase; - caf::PdmField > m_selectedTracers_OBSOLETE; private: struct TracerComp @@ -178,6 +175,7 @@ private: private: void assignFlowSolutionFromCase(); + RimEclipseCase* ownerEclipseCase() const; bool hasDualPorFractureResult();