From 359f8f972605c5eb292dc162b65b7fdc37f6dfe5 Mon Sep 17 00:00:00 2001 From: astridkbjorke Date: Fri, 17 Feb 2017 15:10:04 +0100 Subject: [PATCH] #1138 - pre-proto - Code cleanup and adding slider for well depth in stimplan file --- .../RimStimPlanFractureTemplate.cpp | 136 ++++++++++-------- .../RimStimPlanFractureTemplate.h | 9 +- .../RigStimPlanFractureDefinition.h | 8 +- 3 files changed, 79 insertions(+), 74 deletions(-) diff --git a/ApplicationCode/ProjectDataModel/RimStimPlanFractureTemplate.cpp b/ApplicationCode/ProjectDataModel/RimStimPlanFractureTemplate.cpp index adbdec0d1a..bd55ad1063 100644 --- a/ApplicationCode/ProjectDataModel/RimStimPlanFractureTemplate.cpp +++ b/ApplicationCode/ProjectDataModel/RimStimPlanFractureTemplate.cpp @@ -25,6 +25,7 @@ #include "RimStimPlanLegendConfig.h" #include "cafPdmObject.h" +#include "cafPdmUiDoubleSliderEditor.h" #include "cafPdmUiFilePathEditor.h" #include "cvfVector3.h" @@ -50,6 +51,7 @@ RimStimPlanFractureTemplate::RimStimPlanFractureTemplate(void) m_stimPlanFileName.uiCapability()->setUiEditorTypeName(caf::PdmUiFilePathEditor::uiEditorTypeName()); CAF_PDM_InitField(&wellPathDepthAtFracture, "WellPathDepthAtFracture", 0.0, "Depth of Well Path at Fracture", "", "", ""); + wellPathDepthAtFracture.uiCapability()->setUiEditorTypeName(caf::PdmUiDoubleSliderEditor::uiEditorTypeName()); CAF_PDM_InitFieldNoDefault(&m_legendConfigurations, "LegendConfigurations", "", "", "", ""); m_legendConfigurations.uiCapability()->setUiTreeHidden(true); @@ -240,6 +242,7 @@ void RimStimPlanFractureTemplate::readStimPlanXMLFile(QString * errorMessage) qDebug() << dataFile.errorString(); } + setDepthOfWellPathAtFracture(); } @@ -401,6 +404,20 @@ bool RimStimPlanFractureTemplate::numberOfParameterValuesOK(std::vectordepths[0]; + double lastDepth = m_stimPlanFractureDefinitionData->depths[m_stimPlanFractureDefinitionData->depths.size()-1]; + double averageDepth = (firstDepth + lastDepth) / 2; + wellPathDepthAtFracture = averageDepth; + } +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -567,78 +584,54 @@ std::vector > RimStimPlanFractureTemplate::getStimPl return propertyNamesUnits; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -std::vector> RimStimPlanFractureTemplate::getConductivitiesAtTimeStep(size_t timStep) -{ - return m_stimPlanFractureDefinitionData->getDataAtTimeIndex("CONDUCTIVITY", timStep); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -std::vector> RimStimPlanFractureTemplate::getPermeabilitiesAtTimeStep(size_t timStep) -{ - return m_stimPlanFractureDefinitionData->getDataAtTimeIndex("PERMEABILITY", timStep); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -std::vector> RimStimPlanFractureTemplate::getWidthsAtTimeStep(size_t timStep) -{ - return m_stimPlanFractureDefinitionData->getDataAtTimeIndex("WIDTH", timStep); -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- std::vector RimStimPlanFractureTemplate::fracturePolygon() { - std::vector polygon; + std::vector polygon; - //TODO: Handle multiple time-step and properties - std::vector> ConductivitiesAtTimeStep = m_stimPlanFractureDefinitionData->conductivities[0]; + //TODO: Handle multiple time-step and properties + std::vector> dataAtTimeStep = m_stimPlanFractureDefinitionData->getDataAtTimeIndex(getStimPlanPropertyNamesUnits()[0].first, 0); - for (int k = 0; k < ConductivitiesAtTimeStep.size(); k++) - { - for (int i = 0; i < ConductivitiesAtTimeStep[k].size(); i++) - { - if ((ConductivitiesAtTimeStep[k])[i] > 1e-7) - { - if ((i < ConductivitiesAtTimeStep[k].size() - 1)) - { - if ((ConductivitiesAtTimeStep[k])[(i + 1)] < 1e-7) - { - polygon.push_back(cvf::Vec3f(static_cast(m_stimPlanFractureDefinitionData->gridXs[i]), - static_cast(m_stimPlanFractureDefinitionData->depths[k]), 0.0f)); - } - } - else - { - polygon.push_back(cvf::Vec3f(static_cast(m_stimPlanFractureDefinitionData->gridXs[i]), - static_cast(m_stimPlanFractureDefinitionData->depths[k]), 0.0f)); - } - } - } - } + for (int k = 0; k < dataAtTimeStep.size(); k++) + { + for (int i = 0; i < dataAtTimeStep[k].size(); i++) + { + if ((dataAtTimeStep[k])[i] > 1e-7) + { + if ((i < dataAtTimeStep[k].size() - 1)) + { + if ((dataAtTimeStep[k])[(i + 1)] < 1e-7) + { + polygon.push_back(cvf::Vec3f(static_cast(m_stimPlanFractureDefinitionData->gridXs[i]), + static_cast(m_stimPlanFractureDefinitionData->depths[k]), 0.0f)); + } + } + else + { + polygon.push_back(cvf::Vec3f(static_cast(m_stimPlanFractureDefinitionData->gridXs[i]), + static_cast(m_stimPlanFractureDefinitionData->depths[k]), 0.0f)); + } + } + } + } - std::vector negPolygon; + std::vector negPolygon; - for (const auto& node : polygon) - { - cvf::Vec3f negNode = node; - negNode.x() = -negNode.x(); - negPolygon.insert(negPolygon.begin(), negNode); - } + for (const auto& node : polygon) + { + cvf::Vec3f negNode = node; + negNode.x() = -negNode.x(); + negPolygon.insert(negPolygon.begin(), negNode); + } - for (const auto& negNode : negPolygon) - { - polygon.push_back(negNode); - } + for (const auto& negNode : negPolygon) + { + polygon.push_back(negNode); + } - return polygon; + return polygon; } //-------------------------------------------------------------------------------------------------- @@ -652,6 +645,7 @@ void RimStimPlanFractureTemplate::defineUiOrdering(QString uiConfigName, caf::Pd caf::PdmUiGroup* fileGroup = uiOrdering.addNewGroup("File"); fileGroup->add(&m_stimPlanFileName); + fileGroup->add(&wellPathDepthAtFracture); caf::PdmUiGroup* geometryGroup = uiOrdering.addNewGroup("Fracture geometry"); geometryGroup->add(&orientation); @@ -662,3 +656,23 @@ void RimStimPlanFractureTemplate::defineUiOrdering(QString uiConfigName, caf::Pd propertyGroup->add(&skinFactor); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimStimPlanFractureTemplate::defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute * attribute) +{ + if (field == &wellPathDepthAtFracture) + { + if (!m_stimPlanFractureDefinitionData.isNull()) + { + caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast(attribute); + if (myAttr) + { + myAttr->m_minimum = m_stimPlanFractureDefinitionData->depths[0]; + myAttr->m_maximum = m_stimPlanFractureDefinitionData->depths[m_stimPlanFractureDefinitionData->depths.size()-1]; + } + + } + } +} + diff --git a/ApplicationCode/ProjectDataModel/RimStimPlanFractureTemplate.h b/ApplicationCode/ProjectDataModel/RimStimPlanFractureTemplate.h index 3fd42d22ae..5ee05e8703 100644 --- a/ApplicationCode/ProjectDataModel/RimStimPlanFractureTemplate.h +++ b/ApplicationCode/ProjectDataModel/RimStimPlanFractureTemplate.h @@ -64,17 +64,13 @@ public: std::vector getStimPlanTimeValues(); std::vector > getStimPlanPropertyNamesUnits(); - - //TODO: Remove!!! - std::vector> getConductivitiesAtTimeStep(size_t timStep); - std::vector> getPermeabilitiesAtTimeStep(size_t timStep); - std::vector> getWidthsAtTimeStep(size_t timStep); - void loadDataAndUpdate(); std::vector> getDataAtTimeIndex(QString resultName, size_t timeStepIndex); protected: virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering); + virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute * attribute) override; + private: void updateUiTreeName(); @@ -96,4 +92,5 @@ private: caf::PdmChildArrayField m_legendConfigurations; bool numberOfParameterValuesOK(std::vector> propertyValuesAtTimestep); + void setDepthOfWellPathAtFracture(); }; diff --git a/ApplicationCode/ReservoirDataModel/RigStimPlanFractureDefinition.h b/ApplicationCode/ReservoirDataModel/RigStimPlanFractureDefinition.h index 228010ec61..8a2f8dd4e4 100644 --- a/ApplicationCode/ReservoirDataModel/RigStimPlanFractureDefinition.h +++ b/ApplicationCode/ReservoirDataModel/RigStimPlanFractureDefinition.h @@ -32,6 +32,7 @@ public: QString resultName; QString unit; std::vector>> parameterValues; + //Vector for each time step, for each depth and for each x-value }; @@ -51,13 +52,6 @@ public: std::vector stimPlanData; - //Vector for each time step, for each depth and for each x-value - std::vector>> conductivities; - QString conductivityUnit; - std::vector>> widths; - QString widthUnit; - std::vector>> permeabilities; - QString permeabilityUnit; bool timeStepExisist(double timeStepValue); void reorderYgridToDepths();