From 9820cb45e403445dae3034fd1b174463e875fff7 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Mon, 15 Jan 2018 08:58:15 +0100 Subject: [PATCH] #2371 Fracture Template : Avoid crash when StimPlan xml fails to load --- .../RimStimPlanFractureTemplate.cpp | 62 ++++++++++++++----- .../Completions/RimStimPlanFractureTemplate.h | 2 +- 2 files changed, 46 insertions(+), 18 deletions(-) diff --git a/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp b/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp index c3f13df795..c5273163e9 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp +++ b/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp @@ -191,6 +191,8 @@ void RimStimPlanFractureTemplate::updateFilePathsFromProjectPath(const QString& //-------------------------------------------------------------------------------------------------- void RimStimPlanFractureTemplate::setDefaultsBasedOnXMLfile() { + if (m_stimPlanFractureDefinitionData.isNull()) return; + setDepthOfWellPathAtFracture(); RiaLogging::info(QString("Setting well/fracture intersection depth at %1").arg(m_wellPathDepthAtFracture)); m_activeTimeStepIndex = static_cast(m_stimPlanFractureDefinitionData->totalNumberTimeSteps() - 1); @@ -332,10 +334,14 @@ QString RimStimPlanFractureTemplate::getUnitForStimPlanParameter(QString paramet //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -const std::vector& RimStimPlanFractureTemplate::timeSteps() +std::vector RimStimPlanFractureTemplate::timeSteps() { - if (m_stimPlanFractureDefinitionData.isNull()) loadDataAndUpdate(); - return m_stimPlanFractureDefinitionData->timeSteps(); + if (m_stimPlanFractureDefinitionData.notNull()) + { + return m_stimPlanFractureDefinitionData->timeSteps(); + } + + return std::vector(); } //-------------------------------------------------------------------------------------------------- @@ -367,7 +373,12 @@ void RimStimPlanFractureTemplate::computeMinMax(const QString& resultName, const //-------------------------------------------------------------------------------------------------- std::vector> RimStimPlanFractureTemplate::resultValues(const QString& resultName, const QString& unitName, size_t timeStepIndex) const { - return m_stimPlanFractureDefinitionData->getDataAtTimeIndex(resultName, unitName, timeStepIndex); + if (m_stimPlanFractureDefinitionData.notNull()) + { + return m_stimPlanFractureDefinitionData->getDataAtTimeIndex(resultName, unitName, timeStepIndex); + } + + return std::vector>(); } //-------------------------------------------------------------------------------------------------- @@ -375,7 +386,12 @@ std::vector> RimStimPlanFractureTemplate::resultValues(const //-------------------------------------------------------------------------------------------------- std::vector RimStimPlanFractureTemplate::fractureGridResults(const QString& resultName, const QString& unitName, size_t timeStepIndex) const { - return m_stimPlanFractureDefinitionData->fractureGridResults(resultName, unitName, timeStepIndex); + if (m_stimPlanFractureDefinitionData.notNull()) + { + return m_stimPlanFractureDefinitionData->fractureGridResults(resultName, unitName, timeStepIndex); + } + + return std::vector(); } //-------------------------------------------------------------------------------------------------- @@ -405,9 +421,14 @@ const RigFractureGrid* RimStimPlanFractureTemplate::fractureGrid() const //-------------------------------------------------------------------------------------------------- void RimStimPlanFractureTemplate::updateFractureGrid() { - m_fractureGrid = m_stimPlanFractureDefinitionData->createFractureGrid(m_activeTimeStepIndex, - fractureTemplateUnit, - m_wellPathDepthAtFracture); + m_fractureGrid = nullptr; + + if (m_stimPlanFractureDefinitionData.notNull()) + { + m_fractureGrid = m_stimPlanFractureDefinitionData->createFractureGrid(m_activeTimeStepIndex, + fractureTemplateUnit, + m_wellPathDepthAtFracture); + } } @@ -425,12 +446,14 @@ void RimStimPlanFractureTemplate::fractureTriangleGeometry(std::vectorcreateFractureTriangleGeometry(m_wellPathDepthAtFracture, - neededUnit, - name, - nodeCoords, - triangleIndices); - return; + if (m_stimPlanFractureDefinitionData.notNull()) + { + m_stimPlanFractureDefinitionData->createFractureTriangleGeometry(m_wellPathDepthAtFracture, + neededUnit, + name, + nodeCoords, + triangleIndices); + } } //-------------------------------------------------------------------------------------------------- @@ -442,12 +465,17 @@ std::vector RimStimPlanFractureTemplate::fractureBorderPolygon(RiaEc QString parameterName = m_borderPolygonResultName; QString parameterUnit = getUnitForStimPlanParameter(parameterName); - return m_stimPlanFractureDefinitionData->createFractureBorderPolygon(parameterName, - parameterUnit, - m_activeTimeStepIndex, + if (m_stimPlanFractureDefinitionData.notNull()) + { + return m_stimPlanFractureDefinitionData->createFractureBorderPolygon(parameterName, + parameterUnit, + m_activeTimeStepIndex, m_wellPathDepthAtFracture, neededUnit, name); + } + + return std::vector(); } diff --git a/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.h b/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.h index 52f1e5fc1b..a300481797 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.h +++ b/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.h @@ -76,7 +76,7 @@ public: // Result Access - const std::vector& timeSteps(); + std::vector timeSteps(); std::vector > resultNamesWithUnit() const; void computeMinMax(const QString& resultName, const QString& unitName, double* minValue, double* maxValue, double* posClosestToZero, double* negClosestToZero) const; std::vector> resultValues(const QString& resultName, const QString& unitName, size_t timeStepIndex) const;