#2371 Fracture : Guard for null pointer access

This commit is contained in:
Magne Sjaastad
2018-01-15 08:58:51 +01:00
parent 9820cb45e4
commit 85ead20ec9
3 changed files with 22 additions and 13 deletions

View File

@@ -145,8 +145,10 @@ std::vector<RigCompletionData> RicExportFractureCompletionsImpl::generateCompdat
if (!fracTemplate) continue; if (!fracTemplate) continue;
bool useFiniteConductivityInFracture = (fracTemplate->conductivityType() == RimFractureTemplate::FINITE_CONDUCTIVITY);
const RigFractureGrid* fractureGrid = fracTemplate->fractureGrid(); const RigFractureGrid* fractureGrid = fracTemplate->fractureGrid();
if (!fractureGrid) continue;
bool useFiniteConductivityInFracture = (fracTemplate->conductivityType() == RimFractureTemplate::FINITE_CONDUCTIVITY);
//If finite cond chosen and conductivity not present in stimplan file, do not calculate trans for this fracture //If finite cond chosen and conductivity not present in stimplan file, do not calculate trans for this fracture
if (useFiniteConductivityInFracture) if (useFiniteConductivityInFracture)
@@ -278,6 +280,8 @@ std::vector<RigCompletionData> RicExportFractureCompletionsImpl::generateCompdat
|| fracture->fractureTemplate()->orientationType() == RimFractureTemplate::TRANSVERSE_WELL_PATH) || fracture->fractureTemplate()->orientationType() == RimFractureTemplate::TRANSVERSE_WELL_PATH)
{ {
const RigFractureGrid* fracGrid = fracture->fractureTemplate()->fractureGrid(); const RigFractureGrid* fracGrid = fracture->fractureTemplate()->fractureGrid();
if (fracGrid)
{
std::pair<size_t, size_t> wellCellIJ = fracGrid->fractureCellAtWellCenter(); std::pair<size_t, size_t> wellCellIJ = fracGrid->fractureCellAtWellCenter();
size_t wellCellIndex = fracGrid->getGlobalIndexFromIJ(wellCellIJ.first, wellCellIJ.second); size_t wellCellIndex = fracGrid->getGlobalIndexFromIJ(wellCellIJ.first, wellCellIJ.second);
@@ -294,6 +298,7 @@ std::vector<RigCompletionData> RicExportFractureCompletionsImpl::generateCompdat
{ false, RigTransmissibilityCondenser::CellAddress::STIMPLAN, wellCellIndex }, { false, RigTransmissibilityCondenser::CellAddress::STIMPLAN, wellCellIndex },
radialTrans); radialTrans);
} }
}
else if (fracture->fractureTemplate()->orientationType() == RimFractureTemplate::ALONG_WELL_PATH) else if (fracture->fractureTemplate()->orientationType() == RimFractureTemplate::ALONG_WELL_PATH)
{ {

View File

@@ -270,6 +270,8 @@ cvf::ref<cvf::Part> RivWellFracturePartMgr::createStimPlanElementColorSurfacePar
RimStimPlanFractureTemplate* stimPlanFracTemplate = dynamic_cast<RimStimPlanFractureTemplate*>(m_rimFracture->fractureTemplate()); RimStimPlanFractureTemplate* stimPlanFracTemplate = dynamic_cast<RimStimPlanFractureTemplate*>(m_rimFracture->fractureTemplate());
CVF_ASSERT(stimPlanFracTemplate); CVF_ASSERT(stimPlanFracTemplate);
if (!stimPlanFracTemplate->fractureGrid()) return nullptr;
auto displayCoordTransform = activeView.displayCoordTransform(); auto displayCoordTransform = activeView.displayCoordTransform();
if (displayCoordTransform.isNull()) return nullptr; if (displayCoordTransform.isNull()) return nullptr;
@@ -543,6 +545,7 @@ cvf::ref<cvf::DrawableGeo> RivWellFracturePartMgr::createStimPlanMeshDrawable(Ri
//Should probably be moved, since it now is called twice in some cases... //Should probably be moved, since it now is called twice in some cases...
stimPlanFracTemplate->updateFractureGrid(); stimPlanFracTemplate->updateFractureGrid();
if (!stimPlanFracTemplate->fractureGrid()) return nullptr;
auto displayCoordTransform = activeView.displayCoordTransform(); auto displayCoordTransform = activeView.displayCoordTransform();
if (displayCoordTransform.isNull()) return nullptr; if (displayCoordTransform.isNull()) return nullptr;

View File

@@ -182,6 +182,7 @@ void RimCompletionCellIntersectionCalc::calculatePerforationIntersections(const
void RimCompletionCellIntersectionCalc::calculateFractureIntersections(const RigMainGrid* mainGrid, const RimFracture* fracture, std::vector<double>& values) void RimCompletionCellIntersectionCalc::calculateFractureIntersections(const RigMainGrid* mainGrid, const RimFracture* fracture, std::vector<double>& values)
{ {
if (!fracture->fractureTemplate()) return; if (!fracture->fractureTemplate()) return;
if (!fracture->fractureTemplate()->fractureGrid()) return;
for (const RigFractureCell& fractureCell : fracture->fractureTemplate()->fractureGrid()->fractureCells()) for (const RigFractureCell& fractureCell : fracture->fractureTemplate()->fractureGrid()->fractureCells())
{ {