#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 "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<RimEclipseCase*> eclipseCases =
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;
eclipseCases.push_back(eclipseCase);
scheduleRecalculateCompletionTypeAndRedrawEclipseCases(eclipseCases);
scheduleRecalculateCompletionTypeAndRedrawAllViews(eclipseCases);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiaCompletionTypeCalculationScheduler::scheduleRecalculateCompletionTypeAndRedrawEclipseCases(
void RiaCompletionTypeCalculationScheduler::scheduleRecalculateCompletionTypeAndRedrawAllViews(
const std::vector<RimEclipseCase*>& 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<RimEclipseView*>(w);
if (eclView)
{
eclView->calculateCompletionTypeAndRedrawIfRequired();
}
}
}
m_eclipseCasesToRecalculate.clear();

View File

@ -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<RimEclipseCase*>& eclipseCases);
void scheduleRecalculateCompletionTypeAndRedrawAllViews(const std::vector<RimEclipseCase*>& eclipseCases);
void startTimer();

View File

@ -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

View File

@ -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<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* createCopyAndAddView(const RimEclipseView* sourceView);
void recalculateCompletionTypeAndRedrawAllViews();
void deleteVirtualConnectionFactorDataAndRedrawRequiredViews();
const RigVirtualPerforationTransmissibilities* computeAndGetVirtualPerforationTransmissibilities();
virtual QString locationOnDisc() const { return QString(); }

View File

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