From b41df5a62a72d169ff8252749d9be79fec228707 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 f459d77fc0..5423722e30 100644 --- a/ApplicationCode/Application/RiaDefines.cpp +++ b/ApplicationCode/Application/RiaDefines.cpp @@ -386,6 +386,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 04385e6e40..e88528c590 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 c91bd91cfe..2da099ffda 100644 --- a/ApplicationCode/Commands/RicCreateTemporaryLgrFeature.cpp +++ b/ApplicationCode/Commands/RicCreateTemporaryLgrFeature.cpp @@ -124,16 +124,7 @@ void RicCreateTemporaryLgrFeature::updateViews( RimEclipseCase* eclipseCase ) RiaApplication::instance()->project()->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 44e1830b2d..ac1fe571ad 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 b2def83ded..619df2822f 100644 --- a/ApplicationCode/ProjectDataModel/RimEclipseResultDefinition.cpp +++ b/ApplicationCode/ProjectDataModel/RimEclipseResultDefinition.cpp @@ -23,6 +23,7 @@ #include "RiaApplication.h" #include "RiaColorTables.h" #include "RiaLogging.h" +#include "RiaNncDefines.h" #include "RiaQDateTimeTools.h" #include "RicfCommandObject.h" @@ -1141,6 +1142,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 130e980345..dc70fb88de 100644 --- a/ApplicationCode/ReservoirDataModel/RigNNCData.cpp +++ b/ApplicationCode/ReservoirDataModel/RigNNCData.cpp @@ -186,9 +186,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 ) { @@ -228,6 +228,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 );