mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2402 Fracture : Compute conductivity scaling for all conductivity variants
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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 "";
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user