#2402 Fracture : Compute conductivity scaling for all conductivity variants

This commit is contained in:
Magne Sjaastad
2018-01-25 13:30:36 +01:00
parent 827468b764
commit 430b193437
8 changed files with 29 additions and 54 deletions

View File

@@ -19,8 +19,9 @@
#include "RifStimPlanXmlReader.h" #include "RifStimPlanXmlReader.h"
#include "RiaEclipseUnitTools.h" #include "RiaEclipseUnitTools.h"
#include "RigStimPlanFractureDefinition.h" #include "RiaFractureDefines.h"
#include "RiaLogging.h" #include "RiaLogging.h"
#include "RigStimPlanFractureDefinition.h"
#include <QFile> #include <QFile>
#include <QXmlStreamReader> #include <QXmlStreamReader>
@@ -117,8 +118,20 @@ cvf::ref<RigStimPlanFractureDefinition> RifStimPlanXmlReader::readStimPlanXMLFil
return nullptr; 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);
} }
} }
} }

View File

@@ -18,6 +18,7 @@
#include "RiaApplication.h" #include "RiaApplication.h"
#include "RiaColorTables.h" #include "RiaColorTables.h"
#include "RiaFractureDefines.h"
#include "RigCellGeometryTools.h" #include "RigCellGeometryTools.h"
#include "RigFractureCell.h" #include "RigFractureCell.h"
@@ -386,7 +387,7 @@ cvf::ref<cvf::Part> RivWellFracturePartMgr::createEllipseSurfacePart(const RimEc
{ {
cvf::Color3ub resultColor = cvf::Color3ub(RiaColorTables::undefinedCellColor()); 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<RimEllipseFractureTemplate*>(m_rimFracture->fractureTemplate()); RimEllipseFractureTemplate* ellipseFractureTemplate = dynamic_cast<RimEllipseFractureTemplate*>(m_rimFracture->fractureTemplate());
if (ellipseFractureTemplate) if (ellipseFractureTemplate)

View File

@@ -19,6 +19,7 @@
#include "RimEllipseFractureTemplate.h" #include "RimEllipseFractureTemplate.h"
#include "RiaEclipseUnitTools.h" #include "RiaEclipseUnitTools.h"
#include "RiaFractureDefines.h"
#include "RiaLogging.h" #include "RiaLogging.h"
#include "RigCellGeometryTools.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()); minMaxAccumulator.addValue(conductivity());
posNegAccumulator.addValue(conductivity()); posNegAccumulator.addValue(conductivity());

View File

@@ -59,7 +59,7 @@ public:
void setDefaultValuesFromUnit(); void setDefaultValuesFromUnit();
double conductivity() const; double conductivity() const;
virtual void appendDataToResultStatistics(const QString& resultName, const QString& unit, virtual void appendDataToResultStatistics(const QString& uiResultName, const QString& unit,
MinMaxAccumulator& minMaxAccumulator, MinMaxAccumulator& minMaxAccumulator,
PosNegAccumulator& posNegAccumulator) const override; PosNegAccumulator& posNegAccumulator) const override;

View File

@@ -238,7 +238,7 @@ bool RimStimPlanFractureTemplate::setBorderPolygonResultNameToDefault()
// if width not found, use conductivity // if width not found, use conductivity
if (hasConductivity()) if (hasConductivity())
{ {
m_borderPolygonResultName = m_stimPlanFractureDefinitionData->conductivityResultName(); m_borderPolygonResultName = m_stimPlanFractureDefinitionData->conductivityResultNames().first();
return true; return true;
} }
@@ -407,7 +407,7 @@ std::vector<std::pair<QString, QString> > RimStimPlanFractureTemplate::uiResultN
std::vector<std::pair<QString, QString> > propertyNamesUnitsOnFile = m_stimPlanFractureDefinitionData->getStimPlanPropertyNamesUnits(); std::vector<std::pair<QString, QString> > propertyNamesUnitsOnFile = m_stimPlanFractureDefinitionData->getStimPlanPropertyNamesUnits();
for (const auto& nameUnitPair : propertyNamesUnitsOnFile) for (const auto& nameUnitPair : propertyNamesUnitsOnFile)
{ {
if (nameUnitPair.first.contains("conductivity", Qt::CaseInsensitive)) if (nameUnitPair.first.contains(RiaDefines::conductivityResultName(), Qt::CaseInsensitive))
{ {
conductivityUnit = nameUnitPair.second; conductivityUnit = nameUnitPair.second;
} }
@@ -464,7 +464,7 @@ std::vector<double> RimStimPlanFractureTemplate::fractureGridResults(const QStri
bool RimStimPlanFractureTemplate::hasConductivity() const bool RimStimPlanFractureTemplate::hasConductivity() const
{ {
if (m_stimPlanFractureDefinitionData.notNull() && if (m_stimPlanFractureDefinitionData.notNull() &&
!m_stimPlanFractureDefinitionData->conductivityResultName().isEmpty()) !m_stimPlanFractureDefinitionData->conductivityResultNames().isEmpty())
{ {
return true; return true;
} }

View File

@@ -19,6 +19,7 @@
#include "RimStimPlanColors.h" #include "RimStimPlanColors.h"
#include "RiaApplication.h" #include "RiaApplication.h"
#include "RiaFractureDefines.h"
#include "RimEclipseView.h" #include "RimEclipseView.h"
#include "RimFractureTemplateCollection.h" #include "RimFractureTemplateCollection.h"
@@ -371,7 +372,7 @@ void setDefaultResultIfStimPlan(caf::PdmField<QString> &field)
for (auto resultNameAndUnit : templColl->stimPlanResultNamesAndUnits()) for (auto resultNameAndUnit : templColl->stimPlanResultNamesAndUnits())
{ {
if (resultNameAndUnit.first == "CONDUCTIVITY") if (resultNameAndUnit.first.contains(RiaDefines::conductivityResultName(), Qt::CaseInsensitive))
{ {
field = toString(resultNameAndUnit); field = toString(resultNameAndUnit);
break; break;

View File

@@ -528,20 +528,8 @@ size_t RigStimPlanFractureDefinition::resultIndex(const QString& resultName, con
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RigStimPlanFractureDefinition::setDataAtTimeValue(QString resultName, QString unit, std::vector<std::vector<double>> data, double timeStepValue, double condScalingFactor) void RigStimPlanFractureDefinition::setDataAtTimeValue(QString resultName, QString unit, std::vector<std::vector<double>> data, double timeStepValue)
{ {
if (resultName == conductivityResultName())
{
for (std::vector<double> &dataAtDepth : data)
{
for (double &dataValue : dataAtDepth)
{
dataValue = dataValue * condScalingFactor;
}
}
}
size_t resIndex = resultIndex(resultName, unit); size_t resIndex = resultIndex(resultName, unit);
if (resIndex != cvf::UNDEFINED_SIZE_T) 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 "";
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -96,7 +96,7 @@ public:
std::vector<std::pair<QString, QString> > getStimPlanPropertyNamesUnits() const; std::vector<std::pair<QString, QString> > getStimPlanPropertyNamesUnits() const;
bool numberOfParameterValuesOK(std::vector<std::vector<double>> propertyValuesAtTimestep); bool numberOfParameterValuesOK(std::vector<std::vector<double>> propertyValuesAtTimestep);
size_t totalNumberTimeSteps(); size_t totalNumberTimeSteps();
void setDataAtTimeValue(QString resultName, QString unit, std::vector<std::vector<double>> data, double timeStepValue, double condScalingFactor); void setDataAtTimeValue(QString resultName, QString unit, std::vector<std::vector<double>> data, double timeStepValue);
const std::vector<std::vector<double>>& getDataAtTimeIndex(const QString& resultName, const QString& unit, size_t timeStepIndex) const; const std::vector<std::vector<double>>& getDataAtTimeIndex(const QString& resultName, const QString& unit, size_t timeStepIndex) const;
std::vector<double> fractureGridResults(const QString& resultName, std::vector<double> fractureGridResults(const QString& resultName,
const QString& unitName, const QString& unitName,
@@ -106,7 +106,6 @@ public:
MinMaxAccumulator& minMaxAccumulator, MinMaxAccumulator& minMaxAccumulator,
PosNegAccumulator& posNegAccumulator) const; PosNegAccumulator& posNegAccumulator) const;
QString conductivityResultName() const;
QStringList conductivityResultNames() const; QStringList conductivityResultNames() const;
// Setup // Setup