From c7c34d37359d46244ce467c92eee18f72218d367 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Thu, 13 Sep 2018 08:32:27 +0200 Subject: [PATCH] Fracture Templates : Refactor load and update logic when geometry changes --- .../RicfScaleFractureTemplate.cpp | 2 +- .../RicfSetFractureContainment.cpp | 2 +- .../RimEllipseFractureTemplate.cpp | 19 +++++++------------ .../Completions/RimEllipseFractureTemplate.h | 8 ++++---- .../Completions/RimFractureTemplate.cpp | 8 ++++++++ .../Completions/RimFractureTemplate.h | 4 +++- .../RimStimPlanFractureTemplate.cpp | 4 ++-- .../Completions/RimStimPlanFractureTemplate.h | 13 ++++++------- 8 files changed, 32 insertions(+), 28 deletions(-) diff --git a/ApplicationCode/CommandFileInterface/RicfScaleFractureTemplate.cpp b/ApplicationCode/CommandFileInterface/RicfScaleFractureTemplate.cpp index ac79a28717..3af6ce8991 100644 --- a/ApplicationCode/CommandFileInterface/RicfScaleFractureTemplate.cpp +++ b/ApplicationCode/CommandFileInterface/RicfScaleFractureTemplate.cpp @@ -69,5 +69,5 @@ void RicfScaleFractureTemplate::execute() } templ->setScaleFactors(m_widthScaleFactor, m_heightScaleFactor, m_dFactorScaleFactor, m_conductivityScaleFactor); - templ->reload(); + templ->loadDataAndUpdateGeometryHasChanged(); } diff --git a/ApplicationCode/CommandFileInterface/RicfSetFractureContainment.cpp b/ApplicationCode/CommandFileInterface/RicfSetFractureContainment.cpp index f5eaa7e81c..d9ae34a3ff 100644 --- a/ApplicationCode/CommandFileInterface/RicfSetFractureContainment.cpp +++ b/ApplicationCode/CommandFileInterface/RicfSetFractureContainment.cpp @@ -68,5 +68,5 @@ void RicfSetFractureContainment::execute() templ->setContainmentTopKLayer(m_topLayer); templ->setContainmentBaseKLayer(m_baseLayer); - templ->reload(); + templ->loadDataAndUpdateGeometryHasChanged(); } diff --git a/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.cpp b/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.cpp index f1468035bf..49f559b249 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.cpp +++ b/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.cpp @@ -60,7 +60,7 @@ RimEllipseFractureTemplate::RimEllipseFractureTemplate() CAF_PDM_InitField(&m_permeability,"Permeability", 0.0, "Permeability [mD]", "", "", ""); m_fractureGrid = new RigFractureGrid(); - assignConductivityToCellsInsideEllipse(); + createFractureGridAndAssignConductivities(); // clang-format on } @@ -75,7 +75,7 @@ RimEllipseFractureTemplate::~RimEllipseFractureTemplate() {} //-------------------------------------------------------------------------------------------------- void RimEllipseFractureTemplate::loadDataAndUpdate() { - assignConductivityToCellsInsideEllipse(); + createFractureGridAndAssignConductivities(); RimEclipseView* activeView = dynamic_cast(RiaApplication::instance()->activeReservoirView()); if (activeView) activeView->loadDataAndUpdate(); @@ -96,12 +96,7 @@ void RimEllipseFractureTemplate::fieldChangedByUi(const caf::PdmFieldHandle* cha m_scaleApplyButton = false; // Changes to one of these parameters should change all fractures with this fracture template attached. - reload(); - } - - if (changedField == &m_width || changedField == &m_permeability) - { - assignConductivityToCellsInsideEllipse(); + onLoadDataAndUpdateGeometryHasChanged(); } } @@ -159,7 +154,7 @@ void RimEllipseFractureTemplate::changeUnits() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimEllipseFractureTemplate::assignConductivityToCellsInsideEllipse() +void RimEllipseFractureTemplate::createFractureGridAndAssignConductivities() { std::vector fractureCells; @@ -349,8 +344,10 @@ std::vector> RimEllipseFractureTemplate::uiResultNam //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimEllipseFractureTemplate::reload() +void RimEllipseFractureTemplate::onLoadDataAndUpdateGeometryHasChanged() { + loadDataAndUpdate(); + RimEclipseCase* eclipseCase = nullptr; this->firstAncestorOrThisOfType(eclipseCase); if (eclipseCase) @@ -361,8 +358,6 @@ void RimEllipseFractureTemplate::reload() { RiaCompletionTypeCalculationScheduler::instance()->scheduleRecalculateCompletionTypeAndRedrawAllViews(); } - - assignConductivityToCellsInsideEllipse(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.h b/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.h index 88ee4f6083..eebeb10d44 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.h +++ b/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.h @@ -66,14 +66,14 @@ public: void loadDataAndUpdate() override; std::vector> uiResultNamesWithUnit() const override; - virtual void reload() override; -protected: +private: void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override; void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; -private: - void assignConductivityToCellsInsideEllipse(); + void onLoadDataAndUpdateGeometryHasChanged() override; + + void createFractureGridAndAssignConductivities(); std::vector fractureBorderPolygon() const; FractureWidthAndConductivity widthAndConductivityAtWellPathIntersection(const RimFracture* fractureInstance) const override; diff --git a/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.cpp b/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.cpp index 63fdc44254..e033c08976 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.cpp +++ b/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.cpp @@ -809,6 +809,14 @@ double RimFractureTemplate::computeFractureWidth(const RimFracture* fractureInst return m_fractureWidth; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimFractureTemplate::loadDataAndUpdateGeometryHasChanged() +{ + onLoadDataAndUpdateGeometryHasChanged(); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.h b/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.h index fd511c3259..423c5575a2 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.h +++ b/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.h @@ -156,7 +156,6 @@ public: void setId(int id); void setScaleFactors(double widthScale, double heightScale, double dFactorScale, double conductivityScale); void scaleFactors(double* widthScale, double* heightScale, double* dFactorScale, double* conductivityScale) const; - virtual void reload() {} void setContainmentTopKLayer(int topKLayer); void setContainmentBaseKLayer(int baseKLayer); @@ -167,6 +166,8 @@ public: double computeWellRadiusForDFactorCalculation(const RimFracture* fractureInstance) const; double computeFractureWidth(const RimFracture* fractureInstance) const; + void loadDataAndUpdateGeometryHasChanged(); + protected: virtual caf::PdmFieldHandle* userDescriptionField() override; virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; @@ -175,6 +176,7 @@ protected: virtual QList calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly) override; std::vector fracturesUsingThisTemplate() const; + virtual void onLoadDataAndUpdateGeometryHasChanged() = 0; private: void prepareFieldsForUiDisplay(); diff --git a/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp b/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp index f24b33c131..6fc14e85dd 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp +++ b/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp @@ -154,7 +154,7 @@ void RimStimPlanFractureTemplate::fieldChangedByUi(const caf::PdmFieldHandle* ch if (changedField == &m_scaleApplyButton) { m_scaleApplyButton = false; - reload(); + onLoadDataAndUpdateGeometryHasChanged(); } } @@ -685,7 +685,7 @@ void RimStimPlanFractureTemplate::convertToUnitSystem(RiaEclipseUnitTools::UnitS //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimStimPlanFractureTemplate::reload() +void RimStimPlanFractureTemplate::onLoadDataAndUpdateGeometryHasChanged() { loadDataAndUpdate(); diff --git a/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.h b/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.h index 2280a9507f..8979d147d0 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.h +++ b/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.h @@ -92,15 +92,14 @@ public: void convertToUnitSystem(RiaEclipseUnitTools::UnitSystem neededUnit) override; - virtual void reload() override; - -protected: - virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; - virtual QList calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly) override; - virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override; - virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute * attribute) override; private: + void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; + QList calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly) override; + void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override; + void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute * attribute) override; + void onLoadDataAndUpdateGeometryHasChanged() override; + void setDefaultConductivityResultIfEmpty(); bool setBorderPolygonResultNameToDefault(); void computeDepthOfWellPathAtFracture();