diff --git a/ApplicationCode/ModelVisualization/RivFaultPartMgr.cpp b/ApplicationCode/ModelVisualization/RivFaultPartMgr.cpp index 0a3c973992..f9d820ae75 100644 --- a/ApplicationCode/ModelVisualization/RivFaultPartMgr.cpp +++ b/ApplicationCode/ModelVisualization/RivFaultPartMgr.cpp @@ -649,12 +649,19 @@ void RivFaultPartMgr::updateNNCColors(RimResultSlot* cellResultSlot) { if (m_NNCFaces.isNull()) return; - if (cellResultSlot - && ( cellResultSlot->resultVariable() == RimDefines::combinedTransmissibilityResultName() - || cellResultSlot->resultVariable() == RimDefines::combinedRiTransResultName() - || cellResultSlot->resultVariable() == RimDefines::combinedRiMultResultName() - || cellResultSlot->resultVariable() == RimDefines::combinedRiAreaNormTransResultName() - )) + bool showNncsWithScalarMappedColor = false; + + if (cellResultSlot) + { + size_t scalarSetIndex = cellResultSlot->scalarResultIndex(); + + if (m_grid->mainGrid()->nncData()->hasScalarValues(scalarSetIndex)) + { + showNncsWithScalarMappedColor = true; + } + } + + if (showNncsWithScalarMappedColor) { size_t scalarSetIndex = cellResultSlot->scalarResultIndex(); diff --git a/ApplicationCode/ModelVisualization/RivReservoirFaultsPartMgr.cpp b/ApplicationCode/ModelVisualization/RivReservoirFaultsPartMgr.cpp index 88e955d882..046527b5e4 100644 --- a/ApplicationCode/ModelVisualization/RivReservoirFaultsPartMgr.cpp +++ b/ApplicationCode/ModelVisualization/RivReservoirFaultsPartMgr.cpp @@ -93,6 +93,8 @@ void RivReservoirFaultsPartMgr::appendPartsToModel(cvf::ModelBasicList* model) RimFaultCollection* faultCollection = m_reservoirView->faultCollection(); if (!faultCollection) return; + RimFaultResultSlot* faultResultSlot = m_reservoirView->faultResultSettings(); + bool isShowingGrid = faultCollection->isGridVisualizationMode(); if (!faultCollection->showFaultCollection() && !isShowingGrid) return; @@ -144,7 +146,16 @@ void RivReservoirFaultsPartMgr::appendPartsToModel(cvf::ModelBasicList* model) { if (faultCollection->showNNCs()) { - rivFaultPart->appendNNCFacesToModel(&parts); + bool showNncs = true; + if (faultResultSlot->hideNncsWhenNoResultIsAvailable()) + { + showNncs = faultResultSlot->isNncResultAvailable(); + } + + if (showNncs) + { + rivFaultPart->appendNNCFacesToModel(&parts); + } } } } diff --git a/ApplicationCode/ModelVisualization/RivReservoirViewPartMgr.cpp b/ApplicationCode/ModelVisualization/RivReservoirViewPartMgr.cpp index 2f13d9f2e6..5c7e50575b 100644 --- a/ApplicationCode/ModelVisualization/RivReservoirViewPartMgr.cpp +++ b/ApplicationCode/ModelVisualization/RivReservoirViewPartMgr.cpp @@ -713,7 +713,7 @@ void RivReservoirViewPartMgr::computePropertyVisibility(cvf::UByteArray* cellVis const double lowerBound = (*pfIt)->lowerBound(); const double upperBound = (*pfIt)->upperBound(); - size_t scalarResultIndex = (*pfIt)->resultDefinition->gridScalarIndex(); + size_t scalarResultIndex = (*pfIt)->resultDefinition->scalarResultIndex(); size_t adjustedTimeStepIndex = timeStepIndex; diff --git a/ApplicationCode/ProjectDataModel/RimCellPropertyFilter.cpp b/ApplicationCode/ProjectDataModel/RimCellPropertyFilter.cpp index 5db902ff18..4ced6073c9 100644 --- a/ApplicationCode/ProjectDataModel/RimCellPropertyFilter.cpp +++ b/ApplicationCode/ProjectDataModel/RimCellPropertyFilter.cpp @@ -236,7 +236,7 @@ void RimCellPropertyFilter::computeResultValueRange() double min = 0.0; double max = 0.0; - size_t scalarIndex = resultDefinition->gridScalarIndex(); + size_t scalarIndex = resultDefinition->scalarResultIndex(); if (scalarIndex != cvf::UNDEFINED_SIZE_T) { RimReservoirCellResultsStorage* results = resultDefinition->currentGridCellResults(); diff --git a/ApplicationCode/ProjectDataModel/RimFaultResultSlot.cpp b/ApplicationCode/ProjectDataModel/RimFaultResultSlot.cpp index 898458fbe3..67171fb3c8 100644 --- a/ApplicationCode/ProjectDataModel/RimFaultResultSlot.cpp +++ b/ApplicationCode/ProjectDataModel/RimFaultResultSlot.cpp @@ -18,10 +18,14 @@ #include "RimFaultResultSlot.h" +#include "RigCaseData.h" +#include "RigMainGrid.h" + +#include "RimCase.h" #include "RimReservoirView.h" #include "RimResultSlot.h" -#include "RiuMainWindow.h" #include "RimUiTreeModelPdm.h" +#include "RiuMainWindow.h" @@ -47,6 +51,8 @@ RimFaultResultSlot::RimFaultResultSlot() m_customFaultResult->m_porosityModelUiField.setOwnerObject(this); m_customFaultResult->m_resultVariableUiField.setOwnerObject(this); + CAF_PDM_InitField(&hideNncsWhenNoResultIsAvailable, "HideNncsWhenNoResultIsAvailable", true, "Hide NNC geometry if no NNC result is available", "", "", ""); + updateFieldVisibility(); } @@ -150,3 +156,22 @@ bool RimFaultResultSlot::hasValidCustomResult() return false; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +bool RimFaultResultSlot::isNncResultAvailable() +{ + if (this->hasValidCustomResult()) + { + size_t scalarSetIndex = this->customFaultResult()->scalarResultIndex(); + + RigMainGrid* mainGrid = m_reservoirView->eclipseCase()->reservoirData()->mainGrid(); + if (mainGrid && mainGrid->nncData()->hasScalarValues(scalarSetIndex)) + { + return true; + } + } + + return false; +} + diff --git a/ApplicationCode/ProjectDataModel/RimFaultResultSlot.h b/ApplicationCode/ProjectDataModel/RimFaultResultSlot.h index 0e30db8422..e7362fd6e3 100644 --- a/ApplicationCode/ProjectDataModel/RimFaultResultSlot.h +++ b/ApplicationCode/ProjectDataModel/RimFaultResultSlot.h @@ -40,8 +40,10 @@ public: void setReservoirView(RimReservoirView* ownerReservoirView); caf::PdmField showCustomFaultResult; + caf::PdmField hideNncsWhenNoResultIsAvailable; bool hasValidCustomResult(); + bool isNncResultAvailable(); RimResultSlot* customFaultResult(); void updateFieldVisibility();