From a986f3a4d22da98ba83c8794890fbe1a7cac1057 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Wed, 9 May 2018 08:39:36 +0200 Subject: [PATCH] #2868 Completion Type : Simplify update code paths --- .../RiaCompletionTypeCalculationScheduler.cpp | 24 ++++++++---- .../RiaCompletionTypeCalculationScheduler.h | 4 +- .../Completions/RimFracture.cpp | 6 +-- .../ProjectDataModel/RimEclipseCase.cpp | 39 ------------------- .../ProjectDataModel/RimEclipseCase.h | 3 -- .../ProjectDataModel/RimProject.cpp | 2 +- 6 files changed, 23 insertions(+), 55 deletions(-) diff --git a/ApplicationCode/Application/RiaCompletionTypeCalculationScheduler.cpp b/ApplicationCode/Application/RiaCompletionTypeCalculationScheduler.cpp index d125d4de23..6a5dd39b71 100644 --- a/ApplicationCode/Application/RiaCompletionTypeCalculationScheduler.cpp +++ b/ApplicationCode/Application/RiaCompletionTypeCalculationScheduler.cpp @@ -21,10 +21,11 @@ #include "RiaApplication.h" #include "RigEclipseCaseData.h" +#include "RigCaseCellResultsData.h" -#include "Rim3dView.h" #include "RimEclipseCase.h" #include "RimEclipseCaseCollection.h" +#include "RimEclipseView.h" #include "RimOilField.h" #include "RimProject.h" @@ -56,24 +57,24 @@ void RiaCompletionTypeCalculationScheduler::scheduleRecalculateCompletionTypeAnd std::vector eclipseCases = RiaApplication::instance()->project()->activeOilField()->analysisModels->cases().childObjects(); - scheduleRecalculateCompletionTypeAndRedrawEclipseCases(eclipseCases); + scheduleRecalculateCompletionTypeAndRedrawAllViews(eclipseCases); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RiaCompletionTypeCalculationScheduler::scheduleRecalculateCompletionTypeAndRedrawEclipseCase(RimEclipseCase* eclipseCase) +void RiaCompletionTypeCalculationScheduler::scheduleRecalculateCompletionTypeAndRedrawAllViews(RimEclipseCase* eclipseCase) { std::vector eclipseCases; eclipseCases.push_back(eclipseCase); - scheduleRecalculateCompletionTypeAndRedrawEclipseCases(eclipseCases); + scheduleRecalculateCompletionTypeAndRedrawAllViews(eclipseCases); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RiaCompletionTypeCalculationScheduler::scheduleRecalculateCompletionTypeAndRedrawEclipseCases( +void RiaCompletionTypeCalculationScheduler::scheduleRecalculateCompletionTypeAndRedrawAllViews( const std::vector& eclipseCases) { for (RimEclipseCase* eclipseCase : eclipseCases) @@ -82,6 +83,9 @@ void RiaCompletionTypeCalculationScheduler::scheduleRecalculateCompletionTypeAnd if (eclipseCase->eclipseCaseData()) { + eclipseCase->eclipseCaseData()->results(RiaDefines::MATRIX_MODEL)->clearScalarResult(RiaDefines::DYNAMIC_NATIVE, RiaDefines::completionTypeResultName()); + + // Delete virtual perforation transmissibilities, as these are the basis for the computation of completion type eclipseCase->eclipseCaseData()->setVirtualPerforationTransmissibilities(nullptr); } @@ -103,8 +107,14 @@ void RiaCompletionTypeCalculationScheduler::slotRecalculateCompletionType() for (RimEclipseCase* eclipseCase : uniqueCases) { - eclipseCase->recalculateCompletionTypeAndRedrawAllViews(); - eclipseCase->deleteVirtualConnectionFactorDataAndRedrawRequiredViews(); + for (const auto& w : eclipseCase->views()) + { + RimEclipseView* eclView = dynamic_cast(w); + if (eclView) + { + eclView->calculateCompletionTypeAndRedrawIfRequired(); + } + } } m_eclipseCasesToRecalculate.clear(); diff --git a/ApplicationCode/Application/RiaCompletionTypeCalculationScheduler.h b/ApplicationCode/Application/RiaCompletionTypeCalculationScheduler.h index ecc58a91ae..205f415f9f 100644 --- a/ApplicationCode/Application/RiaCompletionTypeCalculationScheduler.h +++ b/ApplicationCode/Application/RiaCompletionTypeCalculationScheduler.h @@ -33,7 +33,7 @@ class RiaCompletionTypeCalculationScheduler : public QObject public: static RiaCompletionTypeCalculationScheduler* instance(); void scheduleRecalculateCompletionTypeAndRedrawAllViews(); - void scheduleRecalculateCompletionTypeAndRedrawEclipseCase(RimEclipseCase* eclipseCase); + void scheduleRecalculateCompletionTypeAndRedrawAllViews(RimEclipseCase* eclipseCase); private slots: void slotRecalculateCompletionType(); @@ -45,7 +45,7 @@ private: RiaCompletionTypeCalculationScheduler(const RiaCompletionTypeCalculationScheduler& o) = delete; void operator=(const RiaCompletionTypeCalculationScheduler& o) = delete; - void scheduleRecalculateCompletionTypeAndRedrawEclipseCases(const std::vector& eclipseCases); + void scheduleRecalculateCompletionTypeAndRedrawAllViews(const std::vector& eclipseCases); void startTimer(); diff --git a/ApplicationCode/ProjectDataModel/Completions/RimFracture.cpp b/ApplicationCode/ProjectDataModel/Completions/RimFracture.cpp index d805211568..8edc8a8dc1 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimFracture.cpp +++ b/ApplicationCode/ProjectDataModel/Completions/RimFracture.cpp @@ -19,6 +19,7 @@ #include "RimFracture.h" #include "RiaApplication.h" +#include "RiaCompletionTypeCalculationScheduler.h" #include "RiaEclipseUnitTools.h" #include "RiaLogging.h" @@ -226,7 +227,7 @@ void RimFracture::fieldChangedByUi(const caf::PdmFieldHandle* changedField, cons changedField == &m_tilt || changedField == &m_perforationLength) { - Rim3dView* rimView = nullptr; + RimEclipseView* rimView = nullptr; this->firstAncestorOrThisOfType(rimView); if (rimView) { @@ -234,8 +235,7 @@ void RimFracture::fieldChangedByUi(const caf::PdmFieldHandle* changedField, cons rimView->firstAncestorOrThisOfType(eclipseCase); if (eclipseCase) { - eclipseCase->recalculateCompletionTypeAndRedrawAllViews(); - eclipseCase->deleteVirtualConnectionFactorDataAndRedrawRequiredViews(); + RiaCompletionTypeCalculationScheduler::instance()->scheduleRecalculateCompletionTypeAndRedrawAllViews(eclipseCase); } } else diff --git a/ApplicationCode/ProjectDataModel/RimEclipseCase.cpp b/ApplicationCode/ProjectDataModel/RimEclipseCase.cpp index 5c745998ff..04e6ea9c39 100644 --- a/ApplicationCode/ProjectDataModel/RimEclipseCase.cpp +++ b/ApplicationCode/ProjectDataModel/RimEclipseCase.cpp @@ -297,45 +297,6 @@ RimEclipseView* RimEclipseCase::createCopyAndAddView(const RimEclipseView* sourc return rimEclipseView; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimEclipseCase::recalculateCompletionTypeAndRedrawAllViews() -{ - results(RiaDefines::MATRIX_MODEL)->clearScalarResult(RiaDefines::DYNAMIC_NATIVE, RiaDefines::completionTypeResultName()); - - for (Rim3dView* view : views()) - { - RimEclipseView* eclipseView = dynamic_cast(view); - if (eclipseView) - { - eclipseView->calculateCompletionTypeAndRedrawIfRequired(); - } - } -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimEclipseCase::deleteVirtualConnectionFactorDataAndRedrawRequiredViews() -{ - RigEclipseCaseData* rigEclipseCase = eclipseCaseData(); - - if (rigEclipseCase) - { - rigEclipseCase->setVirtualPerforationTransmissibilities(nullptr); - } - - for (Rim3dView* view : views()) - { - RimEclipseView* eclipseView = dynamic_cast(view); - if (eclipseView && eclipseView->isVirtualConnectionFactorGeometryVisible()) - { - eclipseView->scheduleCreateDisplayModelAndRedraw(); - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/RimEclipseCase.h b/ApplicationCode/ProjectDataModel/RimEclipseCase.h index a658c2547b..16faea32cc 100644 --- a/ApplicationCode/ProjectDataModel/RimEclipseCase.h +++ b/ApplicationCode/ProjectDataModel/RimEclipseCase.h @@ -87,9 +87,6 @@ public: RimEclipseView* createAndAddReservoirView(); RimEclipseView* createCopyAndAddView(const RimEclipseView* sourceView); - void recalculateCompletionTypeAndRedrawAllViews(); - - void deleteVirtualConnectionFactorDataAndRedrawRequiredViews(); const RigVirtualPerforationTransmissibilities* computeAndGetVirtualPerforationTransmissibilities(); virtual QString locationOnDisc() const { return QString(); } diff --git a/ApplicationCode/ProjectDataModel/RimProject.cpp b/ApplicationCode/ProjectDataModel/RimProject.cpp index 22ed1110f3..76b8eb90a4 100644 --- a/ApplicationCode/ProjectDataModel/RimProject.cpp +++ b/ApplicationCode/ProjectDataModel/RimProject.cpp @@ -1016,7 +1016,7 @@ void RimProject::reloadCompletionTypeResultsForEclipseCase(RimEclipseCase* eclip views[viewIdx]->scheduleCreateDisplayModelAndRedraw(); } - RiaCompletionTypeCalculationScheduler::instance()->scheduleRecalculateCompletionTypeAndRedrawEclipseCase(eclipseCase); + RiaCompletionTypeCalculationScheduler::instance()->scheduleRecalculateCompletionTypeAndRedrawAllViews(eclipseCase); } //--------------------------------------------------------------------------------------------------