#4114 Regression Test : Remove cached pointer to eclipse case

This commit is contained in:
Magne Sjaastad
2019-02-20 11:35:31 +01:00
parent 66e57890dc
commit f2146c6007
2 changed files with 28 additions and 20 deletions

View File

@@ -178,8 +178,6 @@ void RimEclipseResultDefinition::simpleCopy(const RimEclipseResultDefinition* ot
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimEclipseResultDefinition::setEclipseCase(RimEclipseCase* eclipseCase) void RimEclipseResultDefinition::setEclipseCase(RimEclipseCase* eclipseCase)
{ {
m_eclipseCase = eclipseCase;
assignFlowSolutionFromCase(); assignFlowSolutionFromCase();
} }
@@ -188,9 +186,9 @@ void RimEclipseResultDefinition::setEclipseCase(RimEclipseCase* eclipseCase)
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RigCaseCellResultsData* RimEclipseResultDefinition::currentGridCellResults() const 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<caf::PdmOptionItemInfo> RimEclipseResultDefinition::calculateValueOptions(
if (fieldNeedingOptions == &m_resultTypeUiField) if (fieldNeedingOptions == &m_resultTypeUiField)
{ {
bool hasSourSimRLFile = false; bool hasSourSimRLFile = false;
RimEclipseResultCase* eclResCase = dynamic_cast<RimEclipseResultCase*>(m_eclipseCase.p()); RimEclipseResultCase* eclResCase = dynamic_cast<RimEclipseResultCase*>(ownerEclipseCase());
if (eclResCase && eclResCase->eclipseCaseData()) if (eclResCase && eclResCase->eclipseCaseData())
{ {
hasSourSimRLFile = eclResCase->hasSourSimFile(); hasSourSimRLFile = eclResCase->hasSourSimFile();
@@ -514,9 +512,9 @@ QList<caf::PdmOptionItemInfo> RimEclipseResultDefinition::calculateValueOptions(
bool enableSouring = false; bool enableSouring = false;
#ifdef ENABLE_SOURING #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()) if (cellResultsData->hasFlowDiagUsableFluxes())
{ {
@@ -571,7 +569,7 @@ QList<caf::PdmOptionItemInfo> RimEclipseResultDefinition::calculateValueOptions(
} }
else if (fieldNeedingOptions == &m_flowSolutionUiField) else if (fieldNeedingOptions == &m_flowSolutionUiField)
{ {
RimEclipseResultCase* eclCase = dynamic_cast<RimEclipseResultCase*>(m_eclipseCase.p()); RimEclipseResultCase* eclCase = dynamic_cast<RimEclipseResultCase*>(ownerEclipseCase());
if (eclCase) if (eclCase)
{ {
std::vector<RimFlowDiagSolution*> flowSols = eclCase->flowDiagSolutions(); std::vector<RimFlowDiagSolution*> flowSols = eclCase->flowDiagSolutions();
@@ -902,11 +900,11 @@ void RimEclipseResultDefinition::loadResult()
{ {
if (isFlowDiagOrInjectionFlooding()) return; // Will load automatically on access 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; return;
} }
} }
@@ -915,7 +913,7 @@ void RimEclipseResultDefinition::loadResult()
{ {
if (!m_differenceCase->ensureReservoirCaseIsOpen()) 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; return;
} }
} }
@@ -930,6 +928,7 @@ void RimEclipseResultDefinition::loadResult()
gridCellResults->ensureKnownResultLoaded(this->eclipseResultAddress()); gridCellResults->ensureKnownResultLoaded(this->eclipseResultAddress());
} }
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -1178,8 +1177,8 @@ bool RimEclipseResultDefinition::isCompletionTypeSelected() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool RimEclipseResultDefinition::hasCategoryResult() const bool RimEclipseResultDefinition::hasCategoryResult() const
{ {
if (this->m_resultType() == RiaDefines::FORMATION_NAMES && m_eclipseCase && m_eclipseCase->eclipseCaseData() && if (this->m_resultType() == RiaDefines::FORMATION_NAMES && ownerEclipseCase() && ownerEclipseCase()->eclipseCaseData() &&
m_eclipseCase->eclipseCaseData()->activeFormationNames()) ownerEclipseCase()->eclipseCaseData()->activeFormationNames())
return true; return true;
if (this->m_resultType() == RiaDefines::DYNAMIC_NATIVE && this->resultVariable() == RiaDefines::completionTypeResultName()) if (this->m_resultType() == RiaDefines::DYNAMIC_NATIVE && this->resultVariable() == RiaDefines::completionTypeResultName())
@@ -1378,7 +1377,7 @@ void RimEclipseResultDefinition::assignFlowSolutionFromCase()
{ {
RimFlowDiagSolution* defaultFlowDiagSolution = nullptr; RimFlowDiagSolution* defaultFlowDiagSolution = nullptr;
RimEclipseResultCase* eclCase = dynamic_cast<RimEclipseResultCase*>(m_eclipseCase.p()); RimEclipseResultCase* eclCase = dynamic_cast<RimEclipseResultCase*>(ownerEclipseCase());
if (eclCase) if (eclCase)
{ {
@@ -1387,14 +1386,25 @@ void RimEclipseResultDefinition::assignFlowSolutionFromCase()
this->setFlowSolution(defaultFlowDiagSolution); this->setFlowSolution(defaultFlowDiagSolution);
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimEclipseCase* RimEclipseResultDefinition::ownerEclipseCase() const
{
RimEclipseCase* eclipseCase = nullptr;
this->firstAncestorOrThisOfType(eclipseCase);
return eclipseCase;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool RimEclipseResultDefinition::hasDualPorFractureResult() bool RimEclipseResultDefinition::hasDualPorFractureResult()
{ {
if (m_eclipseCase && m_eclipseCase->eclipseCaseData()) if (ownerEclipseCase() && ownerEclipseCase()->eclipseCaseData())
{ {
return m_eclipseCase->eclipseCaseData()->hasFractureResults(); return ownerEclipseCase()->eclipseCaseData()->hasFractureResults();
} }
return false; return false;

View File

@@ -166,9 +166,6 @@ protected:
caf::PdmField<std::vector<QString> > m_selectedSouringTracersUiField; caf::PdmField<std::vector<QString> > m_selectedSouringTracersUiField;
caf::PdmPointer<RimEclipseCase> m_eclipseCase;
caf::PdmField<std::vector<QString> > m_selectedTracers_OBSOLETE; caf::PdmField<std::vector<QString> > m_selectedTracers_OBSOLETE;
private: private:
struct TracerComp struct TracerComp
@@ -178,6 +175,7 @@ private:
private: private:
void assignFlowSolutionFromCase(); void assignFlowSolutionFromCase();
RimEclipseCase* ownerEclipseCase() const;
bool hasDualPorFractureResult(); bool hasDualPorFractureResult();