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

View File

@@ -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<cvf::Part> 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<RimEllipseFractureTemplate*>(m_rimFracture->fractureTemplate());
if (ellipseFractureTemplate)

View File

@@ -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());

View File

@@ -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;

View File

@@ -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<std::pair<QString, QString> > RimStimPlanFractureTemplate::uiResultN
std::vector<std::pair<QString, QString> > 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<double> RimStimPlanFractureTemplate::fractureGridResults(const QStri
bool RimStimPlanFractureTemplate::hasConductivity() const
{
if (m_stimPlanFractureDefinitionData.notNull() &&
!m_stimPlanFractureDefinitionData->conductivityResultName().isEmpty())
!m_stimPlanFractureDefinitionData->conductivityResultNames().isEmpty())
{
return true;
}

View File

@@ -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<QString> &field)
for (auto resultNameAndUnit : templColl->stimPlanResultNamesAndUnits())
{
if (resultNameAndUnit.first == "CONDUCTIVITY")
if (resultNameAndUnit.first.contains(RiaDefines::conductivityResultName(), Qt::CaseInsensitive))
{
field = toString(resultNameAndUnit);
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);
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;
bool numberOfParameterValuesOK(std::vector<std::vector<double>> propertyValuesAtTimestep);
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;
std::vector<double> fractureGridResults(const QString& resultName,
const QString& unitName,
@@ -106,7 +106,6 @@ public:
MinMaxAccumulator& minMaxAccumulator,
PosNegAccumulator& posNegAccumulator) const;
QString conductivityResultName() const;
QStringList conductivityResultNames() const;
// Setup