From 430b193437e8ecad087d7142ecc24ffbd03f9a68 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Thu, 25 Jan 2018 13:30:36 +0100 Subject: [PATCH] #2402 Fracture : Compute conductivity scaling for all conductivity variants --- .../FileInterface/RifStimPlanXmlReader.cpp | 19 +++++++-- .../RivWellFracturePartMgr.cpp | 3 +- .../RimEllipseFractureTemplate.cpp | 5 ++- .../Completions/RimEllipseFractureTemplate.h | 2 +- .../RimStimPlanFractureTemplate.cpp | 6 +-- .../ProjectDataModel/RimStimPlanColors.cpp | 3 +- .../RigStimPlanFractureDefinition.cpp | 42 +------------------ .../RigStimPlanFractureDefinition.h | 3 +- 8 files changed, 29 insertions(+), 54 deletions(-) diff --git a/ApplicationCode/FileInterface/RifStimPlanXmlReader.cpp b/ApplicationCode/FileInterface/RifStimPlanXmlReader.cpp index ab99c3747b..dc8a7c0543 100644 --- a/ApplicationCode/FileInterface/RifStimPlanXmlReader.cpp +++ b/ApplicationCode/FileInterface/RifStimPlanXmlReader.cpp @@ -19,8 +19,9 @@ #include "RifStimPlanXmlReader.h" #include "RiaEclipseUnitTools.h" -#include "RigStimPlanFractureDefinition.h" +#include "RiaFractureDefines.h" #include "RiaLogging.h" +#include "RigStimPlanFractureDefinition.h" #include #include @@ -117,8 +118,20 @@ cvf::ref RifStimPlanXmlReader::readStimPlanXMLFil return nullptr; } - stimPlanFileData->setDataAtTimeValue(parameter, unit, propertyValuesAtTimestep, timeStepValue, conductivityScalingFactor); - + if (parameter.contains(RiaDefines::conductivityResultName(), Qt::CaseInsensitive)) + { + // Scale all parameters containing conductivity + + for (auto& dataAtDepth : propertyValuesAtTimestep) + { + for (auto& dataValue : dataAtDepth) + { + dataValue *= conductivityScalingFactor; + } + } + } + + stimPlanFileData->setDataAtTimeValue(parameter, unit, propertyValuesAtTimestep, timeStepValue); } } } diff --git a/ApplicationCode/ModelVisualization/RivWellFracturePartMgr.cpp b/ApplicationCode/ModelVisualization/RivWellFracturePartMgr.cpp index 7ef5ada6a6..aa2397fb76 100644 --- a/ApplicationCode/ModelVisualization/RivWellFracturePartMgr.cpp +++ b/ApplicationCode/ModelVisualization/RivWellFracturePartMgr.cpp @@ -18,6 +18,7 @@ #include "RiaApplication.h" #include "RiaColorTables.h" +#include "RiaFractureDefines.h" #include "RigCellGeometryTools.h" #include "RigFractureCell.h" @@ -386,7 +387,7 @@ cvf::ref RivWellFracturePartMgr::createEllipseSurfacePart(const RimEc { cvf::Color3ub resultColor = cvf::Color3ub(RiaColorTables::undefinedCellColor()); - if (activeView.stimPlanColors->uiResultName().startsWith("CONDUCTIVITY", Qt::CaseInsensitive)) + if (activeView.stimPlanColors->uiResultName() == RiaDefines::conductivityResultName()) { RimEllipseFractureTemplate* ellipseFractureTemplate = dynamic_cast(m_rimFracture->fractureTemplate()); if (ellipseFractureTemplate) diff --git a/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.cpp b/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.cpp index 8e6e811b6c..ea99f27828 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.cpp +++ b/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.cpp @@ -19,6 +19,7 @@ #include "RimEllipseFractureTemplate.h" #include "RiaEclipseUnitTools.h" +#include "RiaFractureDefines.h" #include "RiaLogging.h" #include "RigCellGeometryTools.h" @@ -314,9 +315,9 @@ double RimEllipseFractureTemplate::conductivity() const //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimEllipseFractureTemplate::appendDataToResultStatistics(const QString& resultName, const QString& unit, MinMaxAccumulator& minMaxAccumulator, PosNegAccumulator& posNegAccumulator) const +void RimEllipseFractureTemplate::appendDataToResultStatistics(const QString& uiResultName, const QString& unit, MinMaxAccumulator& minMaxAccumulator, PosNegAccumulator& posNegAccumulator) const { - if (resultName.startsWith("CONDUCTIVITY", Qt::CaseInsensitive)) + if (uiResultName == RiaDefines::conductivityResultName()) { minMaxAccumulator.addValue(conductivity()); posNegAccumulator.addValue(conductivity()); diff --git a/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.h b/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.h index 726fa0f737..d9a73dfd24 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.h +++ b/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.h @@ -59,7 +59,7 @@ public: void setDefaultValuesFromUnit(); double conductivity() const; - virtual void appendDataToResultStatistics(const QString& resultName, const QString& unit, + virtual void appendDataToResultStatistics(const QString& uiResultName, const QString& unit, MinMaxAccumulator& minMaxAccumulator, PosNegAccumulator& posNegAccumulator) const override; diff --git a/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp b/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp index e6a3694b12..1f880a4806 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp +++ b/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp @@ -238,7 +238,7 @@ bool RimStimPlanFractureTemplate::setBorderPolygonResultNameToDefault() // if width not found, use conductivity if (hasConductivity()) { - m_borderPolygonResultName = m_stimPlanFractureDefinitionData->conductivityResultName(); + m_borderPolygonResultName = m_stimPlanFractureDefinitionData->conductivityResultNames().first(); return true; } @@ -407,7 +407,7 @@ std::vector > RimStimPlanFractureTemplate::uiResultN std::vector > propertyNamesUnitsOnFile = m_stimPlanFractureDefinitionData->getStimPlanPropertyNamesUnits(); for (const auto& nameUnitPair : propertyNamesUnitsOnFile) { - if (nameUnitPair.first.contains("conductivity", Qt::CaseInsensitive)) + if (nameUnitPair.first.contains(RiaDefines::conductivityResultName(), Qt::CaseInsensitive)) { conductivityUnit = nameUnitPair.second; } @@ -464,7 +464,7 @@ std::vector RimStimPlanFractureTemplate::fractureGridResults(const QStri bool RimStimPlanFractureTemplate::hasConductivity() const { if (m_stimPlanFractureDefinitionData.notNull() && - !m_stimPlanFractureDefinitionData->conductivityResultName().isEmpty()) + !m_stimPlanFractureDefinitionData->conductivityResultNames().isEmpty()) { return true; } diff --git a/ApplicationCode/ProjectDataModel/RimStimPlanColors.cpp b/ApplicationCode/ProjectDataModel/RimStimPlanColors.cpp index 6be6807361..851fa14fc6 100644 --- a/ApplicationCode/ProjectDataModel/RimStimPlanColors.cpp +++ b/ApplicationCode/ProjectDataModel/RimStimPlanColors.cpp @@ -19,6 +19,7 @@ #include "RimStimPlanColors.h" #include "RiaApplication.h" +#include "RiaFractureDefines.h" #include "RimEclipseView.h" #include "RimFractureTemplateCollection.h" @@ -371,7 +372,7 @@ void setDefaultResultIfStimPlan(caf::PdmField &field) for (auto resultNameAndUnit : templColl->stimPlanResultNamesAndUnits()) { - if (resultNameAndUnit.first == "CONDUCTIVITY") + if (resultNameAndUnit.first.contains(RiaDefines::conductivityResultName(), Qt::CaseInsensitive)) { field = toString(resultNameAndUnit); break; diff --git a/ApplicationCode/ReservoirDataModel/RigStimPlanFractureDefinition.cpp b/ApplicationCode/ReservoirDataModel/RigStimPlanFractureDefinition.cpp index 481b6942a0..3b2aad96f0 100644 --- a/ApplicationCode/ReservoirDataModel/RigStimPlanFractureDefinition.cpp +++ b/ApplicationCode/ReservoirDataModel/RigStimPlanFractureDefinition.cpp @@ -528,20 +528,8 @@ size_t RigStimPlanFractureDefinition::resultIndex(const QString& resultName, con //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RigStimPlanFractureDefinition::setDataAtTimeValue(QString resultName, QString unit, std::vector> data, double timeStepValue, double condScalingFactor) +void RigStimPlanFractureDefinition::setDataAtTimeValue(QString resultName, QString unit, std::vector> data, double timeStepValue) { - if (resultName == conductivityResultName()) - { - for (std::vector &dataAtDepth : data) - { - for (double &dataValue : dataAtDepth) - { - dataValue = dataValue * condScalingFactor; - } - } - } - - size_t resIndex = resultIndex(resultName, unit); if (resIndex != cvf::UNDEFINED_SIZE_T) @@ -604,34 +592,6 @@ void RigStimPlanFractureDefinition::appendDataToResultStatistics(const QString& } } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -QString RigStimPlanFractureDefinition::conductivityResultName() const -{ - static const QString conductivity_text("CONDUCTIVITY"); - static const QString conductivity_propped_text("Conductivity-Propped"); - - // By intention we have two for loops here, as "CONDUCTIVITY" has priority over "Conductivity-Propped" - for (auto stimPlanResult : m_stimPlanResults) - { - if (stimPlanResult.resultName.compare(conductivity_text, Qt::CaseInsensitive) == 0) - { - return stimPlanResult.resultName; - } - } - - for (auto stimPlanResult : m_stimPlanResults) - { - if (stimPlanResult.resultName.compare(conductivity_propped_text, Qt::CaseInsensitive) == 0) - { - return stimPlanResult.resultName; - } - } - - return ""; -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ReservoirDataModel/RigStimPlanFractureDefinition.h b/ApplicationCode/ReservoirDataModel/RigStimPlanFractureDefinition.h index 6b792cb42c..f6c730647c 100644 --- a/ApplicationCode/ReservoirDataModel/RigStimPlanFractureDefinition.h +++ b/ApplicationCode/ReservoirDataModel/RigStimPlanFractureDefinition.h @@ -96,7 +96,7 @@ public: std::vector > getStimPlanPropertyNamesUnits() const; bool numberOfParameterValuesOK(std::vector> propertyValuesAtTimestep); size_t totalNumberTimeSteps(); - void setDataAtTimeValue(QString resultName, QString unit, std::vector> data, double timeStepValue, double condScalingFactor); + void setDataAtTimeValue(QString resultName, QString unit, std::vector> data, double timeStepValue); const std::vector>& getDataAtTimeIndex(const QString& resultName, const QString& unit, size_t timeStepIndex) const; std::vector fractureGridResults(const QString& resultName, const QString& unitName, @@ -106,7 +106,6 @@ public: MinMaxAccumulator& minMaxAccumulator, PosNegAccumulator& posNegAccumulator) const; - QString conductivityResultName() const; QStringList conductivityResultNames() const; // Setup