From 51fd5e39b016f0af257ba9c9cd2a4dc533fba6bc Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Sat, 16 May 2020 15:51:59 +0200 Subject: [PATCH] NNC: Compute data on demand --- ApplicationCode/Application/RiaDefines.cpp | 16 ++++++++++ ApplicationCode/Application/RiaDefines.h | 6 ++-- .../Commands/RicCreateTemporaryLgrFeature.cpp | 11 +------ .../ProjectDataModel/RimEclipseCase.cpp | 32 +++++++++++++++++++ .../ProjectDataModel/RimEclipseCase.h | 2 ++ .../RimEclipseResultDefinition.cpp | 14 ++++++++ .../ReservoirDataModel/RigNNCData.cpp | 6 ++-- .../ReservoirDataModel/RigNNCData.h | 2 +- 8 files changed, 74 insertions(+), 15 deletions(-) diff --git a/ApplicationCode/Application/RiaDefines.cpp b/ApplicationCode/Application/RiaDefines.cpp index 35f9cd179b..2c64a712cd 100644 --- a/ApplicationCode/Application/RiaDefines.cpp +++ b/ApplicationCode/Application/RiaDefines.cpp @@ -399,6 +399,22 @@ QString RiaDefines::formationAllanResultName() return "Formation Allan"; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +std::set RiaDefines::nncResultNames() +{ + return {combinedTransmissibilityResultName(), + formationAllanResultName(), + formationBinaryAllanResultName(), + combinedWaterFluxResultName(), + combinedGasFluxResultName(), + combinedOilFluxResultName(), + combinedRiAreaNormTranResultName(), + combinedRiMultResultName(), + combinedRiTranResultName()}; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/Application/RiaDefines.h b/ApplicationCode/Application/RiaDefines.h index a827574106..f25a9e3108 100644 --- a/ApplicationCode/Application/RiaDefines.h +++ b/ApplicationCode/Application/RiaDefines.h @@ -21,6 +21,7 @@ #pragma once #include +#include #include namespace RiaDefines @@ -106,8 +107,9 @@ QString mobilePoreVolumeName(); QString completionTypeResultName(); // Fault results -QString formationBinaryAllanResultName(); -QString formationAllanResultName(); +QString formationBinaryAllanResultName(); +QString formationAllanResultName(); +std::set nncResultNames(); // Mock model text identifiers QString mockModelBasic(); diff --git a/ApplicationCode/Commands/RicCreateTemporaryLgrFeature.cpp b/ApplicationCode/Commands/RicCreateTemporaryLgrFeature.cpp index 276c1cfbda..6ae1b7ffc5 100644 --- a/ApplicationCode/Commands/RicCreateTemporaryLgrFeature.cpp +++ b/ApplicationCode/Commands/RicCreateTemporaryLgrFeature.cpp @@ -125,16 +125,7 @@ void RicCreateTemporaryLgrFeature::updateViews( RimEclipseCase* eclipseCase ) RimProject::current()->mainPlotCollection()->wellLogPlotCollection()->reloadAllPlots(); - for ( const auto& v : eclipseCase->views() ) - { - RimEclipseView* eclipseView = dynamic_cast( v ); - if ( eclipseView ) - { - eclipseView->scheduleReservoirGridGeometryRegen(); - } - - v->loadDataAndUpdate(); - } + eclipseCase->createDisplayModelAndUpdateAllViews(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/RimEclipseCase.cpp b/ApplicationCode/ProjectDataModel/RimEclipseCase.cpp index fa0c2485f4..3fbdd589ea 100644 --- a/ApplicationCode/ProjectDataModel/RimEclipseCase.cpp +++ b/ApplicationCode/ProjectDataModel/RimEclipseCase.cpp @@ -707,6 +707,38 @@ void RimEclipseCase::ensureFaultDataIsComputed() } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +bool RimEclipseCase::ensureNncDataIsComputed() +{ + bool computedData = false; + RigEclipseCaseData* rigEclipseCase = eclipseCaseData(); + if ( rigEclipseCase && rigEclipseCase->mainGrid() ) + { + computedData = rigEclipseCase->mainGrid()->nncData()->ensureConnectionDataIsProcecced(); + } + + return computedData; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimEclipseCase::createDisplayModelAndUpdateAllViews() +{ + for ( const auto& v : views() ) + { + RimEclipseView* eclipseView = dynamic_cast( v ); + if ( eclipseView ) + { + eclipseView->scheduleReservoirGridGeometryRegen(); + } + + v->loadDataAndUpdate(); + } +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/RimEclipseCase.h b/ApplicationCode/ProjectDataModel/RimEclipseCase.h index 5f9a34a952..7c25b52856 100644 --- a/ApplicationCode/ProjectDataModel/RimEclipseCase.h +++ b/ApplicationCode/ProjectDataModel/RimEclipseCase.h @@ -116,6 +116,8 @@ public: void loadAndSyncronizeInputProperties( bool includeGridFileName ); void ensureFaultDataIsComputed(); + bool ensureNncDataIsComputed(); + void createDisplayModelAndUpdateAllViews(); protected: void initAfterRead() override; diff --git a/ApplicationCode/ProjectDataModel/RimEclipseResultDefinition.cpp b/ApplicationCode/ProjectDataModel/RimEclipseResultDefinition.cpp index df28c79e7a..f6f2d242a1 100644 --- a/ApplicationCode/ProjectDataModel/RimEclipseResultDefinition.cpp +++ b/ApplicationCode/ProjectDataModel/RimEclipseResultDefinition.cpp @@ -22,6 +22,7 @@ #include "RiaColorTables.h" #include "RiaLogging.h" +#include "RiaNncDefines.h" #include "RiaQDateTimeTools.h" #include "RicfCommandObject.h" @@ -1150,6 +1151,19 @@ void RimEclipseResultDefinition::loadResult() gridCellResults->createResultEntry( this->eclipseResultAddress(), false ); } + QString resultName = m_resultVariable(); + std::set eclipseResultNamesWithNncData = RiaDefines::nncResultNames(); + if ( eclipseResultNamesWithNncData.find( resultName ) != eclipseResultNamesWithNncData.end() ) + { + eclipseCase()->ensureFaultDataIsComputed(); + + bool dataWasComputed = eclipseCase()->ensureNncDataIsComputed(); + if ( dataWasComputed ) + { + eclipseCase()->createDisplayModelAndUpdateAllViews(); + } + } + gridCellResults->ensureKnownResultLoaded( this->eclipseResultAddress() ); } } diff --git a/ApplicationCode/ReservoirDataModel/RigNNCData.cpp b/ApplicationCode/ReservoirDataModel/RigNNCData.cpp index 24ae9f49f6..e3be5e855f 100644 --- a/ApplicationCode/ReservoirDataModel/RigNNCData.cpp +++ b/ApplicationCode/ReservoirDataModel/RigNNCData.cpp @@ -187,9 +187,9 @@ size_t RigNNCData::connectionsWithNoCommonArea( QStringList& connectionTextFirst //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RigNNCData::ensureConnectionDataIsProcecced() +bool RigNNCData::ensureConnectionDataIsProcecced() { - if ( m_connectionsAreProcessed ) return; + if ( m_connectionsAreProcessed ) return false; if ( m_mainGrid ) { @@ -229,6 +229,8 @@ void RigNNCData::ensureConnectionDataIsProcecced() } } } + + return true; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ReservoirDataModel/RigNNCData.h b/ApplicationCode/ReservoirDataModel/RigNNCData.h index 008114a25b..90f5d6bd33 100644 --- a/ApplicationCode/ReservoirDataModel/RigNNCData.h +++ b/ApplicationCode/ReservoirDataModel/RigNNCData.h @@ -50,7 +50,7 @@ public: RigNNCData(); - void ensureConnectionDataIsProcecced(); + bool ensureConnectionDataIsProcecced(); void setSourceDataForProcessing( RigMainGrid* mainGrid, const RigActiveCellInfo* activeCellInfo, bool includeInactiveCells );