#2140 Fracture colors. Set default result to Conductivity when selecting template

This commit is contained in:
Bjørn Erik Jensen
2017-12-20 13:14:43 +01:00
parent a2a2427062
commit 12e95c37a6
5 changed files with 126 additions and 14 deletions

View File

@@ -46,6 +46,7 @@
#include "RimProject.h" #include "RimProject.h"
#include "RimReservoirCellResultsStorage.h" #include "RimReservoirCellResultsStorage.h"
#include "RimStimPlanFractureTemplate.h" #include "RimStimPlanFractureTemplate.h"
#include "RimStimPlanColors.h"
#include "RimView.h" #include "RimView.h"
#include "RivWellFracturePartMgr.h" #include "RivWellFracturePartMgr.h"
@@ -69,6 +70,29 @@
CAF_PDM_XML_ABSTRACT_SOURCE_INIT(RimFracture, "Fracture"); CAF_PDM_XML_ABSTRACT_SOURCE_INIT(RimFracture, "Fracture");
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void setDefaultFractureColorResult()
{
RiaApplication* app = RiaApplication::instance();
RimProject* proj = app->project();
for (RimEclipseCase* const eclCase : proj->eclipseCases())
{
for (RimView* const view : eclCase->views())
{
std::vector<RimStimPlanColors*> fractureColors;
view->descendantsIncludingThisOfType(fractureColors);
for (RimStimPlanColors* const stimPlanColors : fractureColors)
{
stimPlanColors->setDefaultResultNameForStimPlan();
}
}
}
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -151,6 +175,7 @@ void RimFracture::fieldChangedByUi(const caf::PdmFieldHandle* changedField, cons
if (changedField == &m_fractureTemplate) if (changedField == &m_fractureTemplate)
{ {
setFractureTemplate(m_fractureTemplate); setFractureTemplate(m_fractureTemplate);
setDefaultFractureColorResult();
} }
if (changedField == &azimuth || if (changedField == &azimuth ||

View File

@@ -40,6 +40,7 @@
#ifdef USE_PROTOTYPE_FEATURE_FRACTURES #ifdef USE_PROTOTYPE_FEATURE_FRACTURES
#include "RimFractureTemplateCollection.h" #include "RimFractureTemplateCollection.h"
#include "RimFractureTemplate.h"
#endif // USE_PROTOTYPE_FEATURE_FRACTURES #endif // USE_PROTOTYPE_FEATURE_FRACTURES
#include "RimGeoMechCase.h" #include "RimGeoMechCase.h"
@@ -653,7 +654,7 @@ void RimProject::createDisplayModelAndRedrawAllViews()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimProject::allOilFields(std::vector<RimOilField*>& oilFields) void RimProject::allOilFields(std::vector<RimOilField*>& oilFields) const
{ {
oilFields.clear(); oilFields.clear();
for (const auto& oilField : this->oilFields) for (const auto& oilField : this->oilFields)
@@ -879,6 +880,41 @@ std::vector<RimGeoMechCase*> RimProject::geoMechCases() const
return cases; return cases;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimFractureTemplateCollection*> RimProject::allFractureTemplateCollections() const
{
std::vector<RimFractureTemplateCollection*> templColls;
std::vector<RimOilField*> oilFields;
allOilFields(oilFields);
for (RimOilField* oilField : oilFields)
{
templColls.push_back(oilField->fractureDefinitionCollection());
}
return templColls;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimFractureTemplate*> RimProject::allFractureTemplates() const
{
std::vector<RimFractureTemplate*> templates;
std::vector<RimOilField*> oilFields;
allOilFields(oilFields);
for (RimFractureTemplateCollection* templColl : allFractureTemplateCollections())
{
for (RimFractureTemplate* templ : templColl->fractureDefinitions())
{
templates.push_back(templ);
}
}
return templates;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -52,6 +52,8 @@ class RimViewLinker;
class RimViewLinkerCollection; class RimViewLinkerCollection;
class RimWellPath; class RimWellPath;
class RimWellPathImport; class RimWellPathImport;
class RimFractureTemplateCollection;
class RimFractureTemplate;
namespace caf namespace caf
{ {
@@ -110,7 +112,7 @@ public:
void computeUtmAreaOfInterest(); void computeUtmAreaOfInterest();
void allOilFields(std::vector<RimOilField*>& oilFields); void allOilFields(std::vector<RimOilField*>& oilFields) const;
RimOilField* activeOilField(); RimOilField* activeOilField();
const RimOilField* activeOilField() const; const RimOilField* activeOilField() const;
@@ -133,6 +135,9 @@ public:
std::vector<RimGeoMechCase*> geoMechCases() const; std::vector<RimGeoMechCase*> geoMechCases() const;
std::vector<RimFractureTemplateCollection*> allFractureTemplateCollections() const;
std::vector<RimFractureTemplate*> allFractureTemplates() const;
protected: protected:
// Overridden methods // Overridden methods
void initScriptDirectories(); void initScriptDirectories();

View File

@@ -18,6 +18,8 @@
#include "RimStimPlanColors.h" #include "RimStimPlanColors.h"
#include "RiaApplication.h"
#include "RimEclipseView.h" #include "RimEclipseView.h"
#include "RimFractureTemplateCollection.h" #include "RimFractureTemplateCollection.h"
#include "RimLegendConfig.h" #include "RimLegendConfig.h"
@@ -28,6 +30,7 @@
#include "cafPdmUiDoubleSliderEditor.h" #include "cafPdmUiDoubleSliderEditor.h"
#include "cafPdmUiItem.h" #include "cafPdmUiItem.h"
#include "cafPdmUiTreeOrdering.h" #include "cafPdmUiTreeOrdering.h"
#include "cafSelectionManagerTools.h"
#include "cvfqtUtils.h" #include "cvfqtUtils.h"
@@ -37,6 +40,12 @@
CAF_PDM_SOURCE_INIT(RimStimPlanColors, "RimStimPlanColors"); CAF_PDM_SOURCE_INIT(RimStimPlanColors, "RimStimPlanColors");
//--------------------------------------------------------------------------------------------------
/// Internal methods
//--------------------------------------------------------------------------------------------------
static void setDefaultResultIfStimPlan(caf::PdmField<QString> &field);
static QString toString(const std::pair<QString, QString>& resultNameAndUnit);
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -84,7 +93,7 @@ void RimStimPlanColors::loadDataAndUpdate()
bool found = false; bool found = false;
for (auto resultNameAndUnit : resultNameAndUnits) for (auto resultNameAndUnit : resultNameAndUnits)
{ {
if (RimStimPlanColors::toString(resultNameAndUnit) == legendVariableName) if (toString(resultNameAndUnit) == legendVariableName)
{ {
found = true; found = true;
} }
@@ -107,7 +116,7 @@ void RimStimPlanColors::loadDataAndUpdate()
// Create legend for result if not already present // Create legend for result if not already present
for (auto resultNameAndUnit : resultNameAndUnits) for (auto resultNameAndUnit : resultNameAndUnits)
{ {
QString resultNameUnitString = RimStimPlanColors::toString(resultNameAndUnit); QString resultNameUnitString = toString(resultNameAndUnit);
bool foundResult = false; bool foundResult = false;
for (RimLegendConfig* legend : m_legendConfigurations) for (RimLegendConfig* legend : m_legendConfigurations)
@@ -148,7 +157,7 @@ QList<caf::PdmOptionItemInfo> RimStimPlanColors::calculateValueOptions(const caf
for (auto resultNameAndUnit : fractureTemplates->stimPlanResultNamesAndUnits()) for (auto resultNameAndUnit : fractureTemplates->stimPlanResultNamesAndUnits())
{ {
QString resultNameAndUnitString = RimStimPlanColors::toString(resultNameAndUnit); QString resultNameAndUnitString = toString(resultNameAndUnit);
options.push_back(caf::PdmOptionItemInfo(resultNameAndUnitString, resultNameAndUnitString)); options.push_back(caf::PdmOptionItemInfo(resultNameAndUnitString, resultNameAndUnitString));
} }
} }
@@ -213,6 +222,14 @@ QString RimStimPlanColors::resultName() const
return RimStimPlanColors::toResultName(m_resultNameAndUnit()); return RimStimPlanColors::toResultName(m_resultNameAndUnit());
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimStimPlanColors::setDefaultResultNameForStimPlan()
{
setDefaultResultIfStimPlan(m_resultNameAndUnit);
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -275,14 +292,6 @@ RimFractureTemplateCollection* RimStimPlanColors::fractureTemplateCollection() c
return proj->activeOilField()->fractureDefinitionCollection(); return proj->activeOilField()->fractureDefinitionCollection();
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimStimPlanColors::toString(const std::pair<QString, QString>& resultNameAndUnit)
{
return QString("%1 [%2]").arg(resultNameAndUnit.first).arg(resultNameAndUnit.second);
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -356,3 +365,40 @@ void RimStimPlanColors::defineEditorAttribute(const caf::PdmFieldHandle* field,
} }
} }
//--------------------------------------------------------------------------------------------------
/// Internal methods
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString toString(const std::pair<QString, QString>& resultNameAndUnit)
{
return QString("%1 [%2]").arg(resultNameAndUnit.first).arg(resultNameAndUnit.second);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void setDefaultResultIfStimPlan(caf::PdmField<QString> &field)
{
RimProject* proj = RiaApplication::instance()->project();
std::vector<RimFractureTemplate*> stimPlanFracTemplates = proj->allFractureTemplates();
if (!stimPlanFracTemplates.empty() && field() == "None")
{
RimFractureTemplateCollection* templColl = proj->allFractureTemplateCollections().front();
for (auto resultNameAndUnit : templColl->stimPlanResultNamesAndUnits())
{
if (resultNameAndUnit.first == "CONDUCTIVITY")
{
field = toString(resultNameAndUnit);
break;
}
}
}
}

View File

@@ -50,6 +50,7 @@ public:
RimLegendConfig* activeLegend() const; RimLegendConfig* activeLegend() const;
QString resultName() const; QString resultName() const;
void setDefaultResultNameForStimPlan();
QString unit() const; QString unit() const;
float opacityLevel() const; float opacityLevel() const;
cvf::Color3f defaultColor() const; cvf::Color3f defaultColor() const;
@@ -66,7 +67,6 @@ protected:
private: private:
RimFractureTemplateCollection* fractureTemplateCollection() const; RimFractureTemplateCollection* fractureTemplateCollection() const;
static QString toString(const std::pair<QString, QString>& resultNameAndUnit);
static QString toResultName(const QString& resultNameAndUnit); static QString toResultName(const QString& resultNameAndUnit);
static QString toUnit(const QString& resultNameAndUnit); static QString toUnit(const QString& resultNameAndUnit);