#2371 Fracture Template : Avoid crash when StimPlan xml fails to load

This commit is contained in:
Magne Sjaastad 2018-01-15 08:58:15 +01:00
parent e5aaf73a84
commit 9820cb45e4
2 changed files with 46 additions and 18 deletions

View File

@ -191,6 +191,8 @@ void RimStimPlanFractureTemplate::updateFilePathsFromProjectPath(const QString&
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimStimPlanFractureTemplate::setDefaultsBasedOnXMLfile() void RimStimPlanFractureTemplate::setDefaultsBasedOnXMLfile()
{ {
if (m_stimPlanFractureDefinitionData.isNull()) return;
setDepthOfWellPathAtFracture(); setDepthOfWellPathAtFracture();
RiaLogging::info(QString("Setting well/fracture intersection depth at %1").arg(m_wellPathDepthAtFracture)); RiaLogging::info(QString("Setting well/fracture intersection depth at %1").arg(m_wellPathDepthAtFracture));
m_activeTimeStepIndex = static_cast<int>(m_stimPlanFractureDefinitionData->totalNumberTimeSteps() - 1); m_activeTimeStepIndex = static_cast<int>(m_stimPlanFractureDefinitionData->totalNumberTimeSteps() - 1);
@ -332,10 +334,14 @@ QString RimStimPlanFractureTemplate::getUnitForStimPlanParameter(QString paramet
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
const std::vector<double>& RimStimPlanFractureTemplate::timeSteps() std::vector<double> RimStimPlanFractureTemplate::timeSteps()
{ {
if (m_stimPlanFractureDefinitionData.isNull()) loadDataAndUpdate(); if (m_stimPlanFractureDefinitionData.notNull())
return m_stimPlanFractureDefinitionData->timeSteps(); {
return m_stimPlanFractureDefinitionData->timeSteps();
}
return std::vector<double>();
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -367,7 +373,12 @@ void RimStimPlanFractureTemplate::computeMinMax(const QString& resultName, const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
std::vector<std::vector<double>> RimStimPlanFractureTemplate::resultValues(const QString& resultName, const QString& unitName, size_t timeStepIndex) const std::vector<std::vector<double>> 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<std::vector<double>>();
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -375,7 +386,12 @@ std::vector<std::vector<double>> RimStimPlanFractureTemplate::resultValues(const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
std::vector<double> RimStimPlanFractureTemplate::fractureGridResults(const QString& resultName, const QString& unitName, size_t timeStepIndex) const std::vector<double> 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<double>();
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -405,9 +421,14 @@ const RigFractureGrid* RimStimPlanFractureTemplate::fractureGrid() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimStimPlanFractureTemplate::updateFractureGrid() void RimStimPlanFractureTemplate::updateFractureGrid()
{ {
m_fractureGrid = m_stimPlanFractureDefinitionData->createFractureGrid(m_activeTimeStepIndex, m_fractureGrid = nullptr;
fractureTemplateUnit,
m_wellPathDepthAtFracture); if (m_stimPlanFractureDefinitionData.notNull())
{
m_fractureGrid = m_stimPlanFractureDefinitionData->createFractureGrid(m_activeTimeStepIndex,
fractureTemplateUnit,
m_wellPathDepthAtFracture);
}
} }
@ -425,12 +446,14 @@ void RimStimPlanFractureTemplate::fractureTriangleGeometry(std::vector<cvf::Vec3
loadDataAndUpdate(); loadDataAndUpdate();
} }
m_stimPlanFractureDefinitionData->createFractureTriangleGeometry(m_wellPathDepthAtFracture, if (m_stimPlanFractureDefinitionData.notNull())
neededUnit, {
name, m_stimPlanFractureDefinitionData->createFractureTriangleGeometry(m_wellPathDepthAtFracture,
nodeCoords, neededUnit,
triangleIndices); name,
return; nodeCoords,
triangleIndices);
}
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -442,12 +465,17 @@ std::vector<cvf::Vec3f> RimStimPlanFractureTemplate::fractureBorderPolygon(RiaEc
QString parameterName = m_borderPolygonResultName; QString parameterName = m_borderPolygonResultName;
QString parameterUnit = getUnitForStimPlanParameter(parameterName); QString parameterUnit = getUnitForStimPlanParameter(parameterName);
return m_stimPlanFractureDefinitionData->createFractureBorderPolygon(parameterName, if (m_stimPlanFractureDefinitionData.notNull())
parameterUnit, {
m_activeTimeStepIndex, return m_stimPlanFractureDefinitionData->createFractureBorderPolygon(parameterName,
parameterUnit,
m_activeTimeStepIndex,
m_wellPathDepthAtFracture, m_wellPathDepthAtFracture,
neededUnit, neededUnit,
name); name);
}
return std::vector<cvf::Vec3f>();
} }

View File

@ -76,7 +76,7 @@ public:
// Result Access // Result Access
const std::vector<double>& timeSteps(); std::vector<double> timeSteps();
std::vector<std::pair<QString, QString> > resultNamesWithUnit() const; std::vector<std::pair<QString, QString> > resultNamesWithUnit() const;
void computeMinMax(const QString& resultName, const QString& unitName, double* minValue, double* maxValue, double* posClosestToZero, double* negClosestToZero) const; void computeMinMax(const QString& resultName, const QString& unitName, double* minValue, double* maxValue, double* posClosestToZero, double* negClosestToZero) const;
std::vector<std::vector<double>> resultValues(const QString& resultName, const QString& unitName, size_t timeStepIndex) const; std::vector<std::vector<double>> resultValues(const QString& resultName, const QString& unitName, size_t timeStepIndex) const;