#2868 Completion Type : Simplify update code paths

This commit is contained in:
Magne Sjaastad 2018-05-09 08:39:36 +02:00
parent 9bb8f36052
commit a986f3a4d2
6 changed files with 23 additions and 55 deletions

View File

@ -21,10 +21,11 @@
#include "RiaApplication.h" #include "RiaApplication.h"
#include "RigEclipseCaseData.h" #include "RigEclipseCaseData.h"
#include "RigCaseCellResultsData.h"
#include "Rim3dView.h"
#include "RimEclipseCase.h" #include "RimEclipseCase.h"
#include "RimEclipseCaseCollection.h" #include "RimEclipseCaseCollection.h"
#include "RimEclipseView.h"
#include "RimOilField.h" #include "RimOilField.h"
#include "RimProject.h" #include "RimProject.h"
@ -56,24 +57,24 @@ void RiaCompletionTypeCalculationScheduler::scheduleRecalculateCompletionTypeAnd
std::vector<RimEclipseCase*> eclipseCases = std::vector<RimEclipseCase*> eclipseCases =
RiaApplication::instance()->project()->activeOilField()->analysisModels->cases().childObjects(); RiaApplication::instance()->project()->activeOilField()->analysisModels->cases().childObjects();
scheduleRecalculateCompletionTypeAndRedrawEclipseCases(eclipseCases); scheduleRecalculateCompletionTypeAndRedrawAllViews(eclipseCases);
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RiaCompletionTypeCalculationScheduler::scheduleRecalculateCompletionTypeAndRedrawEclipseCase(RimEclipseCase* eclipseCase) void RiaCompletionTypeCalculationScheduler::scheduleRecalculateCompletionTypeAndRedrawAllViews(RimEclipseCase* eclipseCase)
{ {
std::vector<RimEclipseCase*> eclipseCases; std::vector<RimEclipseCase*> eclipseCases;
eclipseCases.push_back(eclipseCase); eclipseCases.push_back(eclipseCase);
scheduleRecalculateCompletionTypeAndRedrawEclipseCases(eclipseCases); scheduleRecalculateCompletionTypeAndRedrawAllViews(eclipseCases);
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RiaCompletionTypeCalculationScheduler::scheduleRecalculateCompletionTypeAndRedrawEclipseCases( void RiaCompletionTypeCalculationScheduler::scheduleRecalculateCompletionTypeAndRedrawAllViews(
const std::vector<RimEclipseCase*>& eclipseCases) const std::vector<RimEclipseCase*>& eclipseCases)
{ {
for (RimEclipseCase* eclipseCase : eclipseCases) for (RimEclipseCase* eclipseCase : eclipseCases)
@ -82,6 +83,9 @@ void RiaCompletionTypeCalculationScheduler::scheduleRecalculateCompletionTypeAnd
if (eclipseCase->eclipseCaseData()) 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); eclipseCase->eclipseCaseData()->setVirtualPerforationTransmissibilities(nullptr);
} }
@ -103,8 +107,14 @@ void RiaCompletionTypeCalculationScheduler::slotRecalculateCompletionType()
for (RimEclipseCase* eclipseCase : uniqueCases) for (RimEclipseCase* eclipseCase : uniqueCases)
{ {
eclipseCase->recalculateCompletionTypeAndRedrawAllViews(); for (const auto& w : eclipseCase->views())
eclipseCase->deleteVirtualConnectionFactorDataAndRedrawRequiredViews(); {
RimEclipseView* eclView = dynamic_cast<RimEclipseView*>(w);
if (eclView)
{
eclView->calculateCompletionTypeAndRedrawIfRequired();
}
}
} }
m_eclipseCasesToRecalculate.clear(); m_eclipseCasesToRecalculate.clear();

View File

@ -33,7 +33,7 @@ class RiaCompletionTypeCalculationScheduler : public QObject
public: public:
static RiaCompletionTypeCalculationScheduler* instance(); static RiaCompletionTypeCalculationScheduler* instance();
void scheduleRecalculateCompletionTypeAndRedrawAllViews(); void scheduleRecalculateCompletionTypeAndRedrawAllViews();
void scheduleRecalculateCompletionTypeAndRedrawEclipseCase(RimEclipseCase* eclipseCase); void scheduleRecalculateCompletionTypeAndRedrawAllViews(RimEclipseCase* eclipseCase);
private slots: private slots:
void slotRecalculateCompletionType(); void slotRecalculateCompletionType();
@ -45,7 +45,7 @@ private:
RiaCompletionTypeCalculationScheduler(const RiaCompletionTypeCalculationScheduler& o) = delete; RiaCompletionTypeCalculationScheduler(const RiaCompletionTypeCalculationScheduler& o) = delete;
void operator=(const RiaCompletionTypeCalculationScheduler& o) = delete; void operator=(const RiaCompletionTypeCalculationScheduler& o) = delete;
void scheduleRecalculateCompletionTypeAndRedrawEclipseCases(const std::vector<RimEclipseCase*>& eclipseCases); void scheduleRecalculateCompletionTypeAndRedrawAllViews(const std::vector<RimEclipseCase*>& eclipseCases);
void startTimer(); void startTimer();

View File

@ -19,6 +19,7 @@
#include "RimFracture.h" #include "RimFracture.h"
#include "RiaApplication.h" #include "RiaApplication.h"
#include "RiaCompletionTypeCalculationScheduler.h"
#include "RiaEclipseUnitTools.h" #include "RiaEclipseUnitTools.h"
#include "RiaLogging.h" #include "RiaLogging.h"
@ -226,7 +227,7 @@ void RimFracture::fieldChangedByUi(const caf::PdmFieldHandle* changedField, cons
changedField == &m_tilt || changedField == &m_tilt ||
changedField == &m_perforationLength) changedField == &m_perforationLength)
{ {
Rim3dView* rimView = nullptr; RimEclipseView* rimView = nullptr;
this->firstAncestorOrThisOfType(rimView); this->firstAncestorOrThisOfType(rimView);
if (rimView) if (rimView)
{ {
@ -234,8 +235,7 @@ void RimFracture::fieldChangedByUi(const caf::PdmFieldHandle* changedField, cons
rimView->firstAncestorOrThisOfType(eclipseCase); rimView->firstAncestorOrThisOfType(eclipseCase);
if (eclipseCase) if (eclipseCase)
{ {
eclipseCase->recalculateCompletionTypeAndRedrawAllViews(); RiaCompletionTypeCalculationScheduler::instance()->scheduleRecalculateCompletionTypeAndRedrawAllViews(eclipseCase);
eclipseCase->deleteVirtualConnectionFactorDataAndRedrawRequiredViews();
} }
} }
else else

View File

@ -297,45 +297,6 @@ RimEclipseView* RimEclipseCase::createCopyAndAddView(const RimEclipseView* sourc
return rimEclipseView; return rimEclipseView;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEclipseCase::recalculateCompletionTypeAndRedrawAllViews()
{
results(RiaDefines::MATRIX_MODEL)->clearScalarResult(RiaDefines::DYNAMIC_NATIVE, RiaDefines::completionTypeResultName());
for (Rim3dView* view : views())
{
RimEclipseView* eclipseView = dynamic_cast<RimEclipseView*>(view);
if (eclipseView)
{
eclipseView->calculateCompletionTypeAndRedrawIfRequired();
}
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEclipseCase::deleteVirtualConnectionFactorDataAndRedrawRequiredViews()
{
RigEclipseCaseData* rigEclipseCase = eclipseCaseData();
if (rigEclipseCase)
{
rigEclipseCase->setVirtualPerforationTransmissibilities(nullptr);
}
for (Rim3dView* view : views())
{
RimEclipseView* eclipseView = dynamic_cast<RimEclipseView*>(view);
if (eclipseView && eclipseView->isVirtualConnectionFactorGeometryVisible())
{
eclipseView->scheduleCreateDisplayModelAndRedraw();
}
}
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -87,9 +87,6 @@ public:
RimEclipseView* createAndAddReservoirView(); RimEclipseView* createAndAddReservoirView();
RimEclipseView* createCopyAndAddView(const RimEclipseView* sourceView); RimEclipseView* createCopyAndAddView(const RimEclipseView* sourceView);
void recalculateCompletionTypeAndRedrawAllViews();
void deleteVirtualConnectionFactorDataAndRedrawRequiredViews();
const RigVirtualPerforationTransmissibilities* computeAndGetVirtualPerforationTransmissibilities(); const RigVirtualPerforationTransmissibilities* computeAndGetVirtualPerforationTransmissibilities();
virtual QString locationOnDisc() const { return QString(); } virtual QString locationOnDisc() const { return QString(); }

View File

@ -1016,7 +1016,7 @@ void RimProject::reloadCompletionTypeResultsForEclipseCase(RimEclipseCase* eclip
views[viewIdx]->scheduleCreateDisplayModelAndRedraw(); views[viewIdx]->scheduleCreateDisplayModelAndRedraw();
} }
RiaCompletionTypeCalculationScheduler::instance()->scheduleRecalculateCompletionTypeAndRedrawEclipseCase(eclipseCase); RiaCompletionTypeCalculationScheduler::instance()->scheduleRecalculateCompletionTypeAndRedrawAllViews(eclipseCase);
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------