#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)
{
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<caf::PdmOptionItemInfo> RimEclipseResultDefinition::calculateValueOptions(
if (fieldNeedingOptions == &m_resultTypeUiField)
{
bool hasSourSimRLFile = false;
RimEclipseResultCase* eclResCase = dynamic_cast<RimEclipseResultCase*>(m_eclipseCase.p());
RimEclipseResultCase* eclResCase = dynamic_cast<RimEclipseResultCase*>(ownerEclipseCase());
if (eclResCase && eclResCase->eclipseCaseData())
{
hasSourSimRLFile = eclResCase->hasSourSimFile();
@@ -514,9 +512,9 @@ QList<caf::PdmOptionItemInfo> 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<caf::PdmOptionItemInfo> RimEclipseResultDefinition::calculateValueOptions(
}
else if (fieldNeedingOptions == &m_flowSolutionUiField)
{
RimEclipseResultCase* eclCase = dynamic_cast<RimEclipseResultCase*>(m_eclipseCase.p());
RimEclipseResultCase* eclCase = dynamic_cast<RimEclipseResultCase*>(ownerEclipseCase());
if (eclCase)
{
std::vector<RimFlowDiagSolution*> 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<RimEclipseResultCase*>(m_eclipseCase.p());
RimEclipseResultCase* eclCase = dynamic_cast<RimEclipseResultCase*>(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;

View File

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