mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-11 07:56:08 -06:00
#1139 - pre-proto - Reading in all parameters available in StimPlan file.
This commit is contained in:
parent
a10b96ba3e
commit
e971c5276d
@ -151,7 +151,6 @@ void RimStimPlanFractureTemplate::readStimPlanXMLFile(QString * errorMessage)
|
||||
m_stimPlanFractureDefinitionData = new RigStimPlanFractureDefinition;
|
||||
{
|
||||
QFile dataFile(m_stimPlanFileName());
|
||||
|
||||
if (!dataFile.open(QFile::ReadOnly))
|
||||
{
|
||||
if (errorMessage) (*errorMessage) += "Could not open the File: " + (m_stimPlanFileName()) + "\n";
|
||||
@ -167,9 +166,7 @@ void RimStimPlanFractureTemplate::readStimPlanXMLFile(QString * errorMessage)
|
||||
qDebug() << "Error: Failed to parse file " << dataFile.fileName();
|
||||
qDebug() << xmlStream.errorString();
|
||||
}
|
||||
|
||||
dataFile.close();
|
||||
|
||||
}
|
||||
|
||||
size_t numberOfDepthValues;
|
||||
@ -177,12 +174,13 @@ void RimStimPlanFractureTemplate::readStimPlanXMLFile(QString * errorMessage)
|
||||
size_t numberOfTimeSteps;
|
||||
numberOfTimeSteps = m_stimPlanFractureDefinitionData->timeSteps.size();
|
||||
|
||||
std::vector<std::vector<std::vector<double>>> condValues(numberOfTimeSteps);
|
||||
m_stimPlanFractureDefinitionData->conductivities = condValues;
|
||||
std::vector<std::vector<std::vector<double>>> widthValues(numberOfTimeSteps);
|
||||
m_stimPlanFractureDefinitionData->widths = widthValues;
|
||||
std::vector<std::vector<std::vector<double>>> permValues(numberOfTimeSteps);
|
||||
m_stimPlanFractureDefinitionData->permeabilities = permValues;
|
||||
|
||||
// std::vector<std::vector<std::vector<double>>> condValues(numberOfTimeSteps);
|
||||
// m_stimPlanFractureDefinitionData->conductivities = condValues;
|
||||
// std::vector<std::vector<std::vector<double>>> widthValues(numberOfTimeSteps);
|
||||
// m_stimPlanFractureDefinitionData->widths = widthValues;
|
||||
// std::vector<std::vector<std::vector<double>>> permValues(numberOfTimeSteps);
|
||||
// m_stimPlanFractureDefinitionData->permeabilities = permValues;
|
||||
|
||||
//Start reading from top:
|
||||
QFile dataFile(m_stimPlanFileName());
|
||||
@ -221,33 +219,10 @@ void RimStimPlanFractureTemplate::readStimPlanXMLFile(QString * errorMessage)
|
||||
{
|
||||
qDebug() << "Inconsistency detected in reading XML file!";
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
size_t timeStepIndex = m_stimPlanFractureDefinitionData->getTimeStepIndex(timeStepValue);
|
||||
if (parameter == "CONDUCTIVITY")
|
||||
{
|
||||
m_stimPlanFractureDefinitionData->conductivities[timeStepIndex]=propertyValuesAtTimestep;
|
||||
if (unit == "md-m" || unit == "md-ft")
|
||||
{
|
||||
m_stimPlanFractureDefinitionData->conductivityUnit = unit;
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug() << "Unsupported units in StimPlan file. Reading of file not completed";
|
||||
}
|
||||
}
|
||||
else if (parameter == "PERMEABILITY")
|
||||
{
|
||||
m_stimPlanFractureDefinitionData->permeabilities[timeStepIndex] = propertyValuesAtTimestep;
|
||||
m_stimPlanFractureDefinitionData->permeabilityUnit = unit;
|
||||
}
|
||||
else if (parameter == "WIDTH")
|
||||
{
|
||||
m_stimPlanFractureDefinitionData->widths[timeStepIndex] = propertyValuesAtTimestep;
|
||||
m_stimPlanFractureDefinitionData->widthUnit = unit;
|
||||
}
|
||||
|
||||
m_stimPlanFractureDefinitionData->setDataAtTimeValue(parameter, unit, propertyValuesAtTimestep, timeStepValue);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -265,13 +240,6 @@ void RimStimPlanFractureTemplate::readStimPlanXMLFile(QString * errorMessage)
|
||||
qDebug() << dataFile.errorString();
|
||||
}
|
||||
|
||||
|
||||
//Setting unit for fracture template
|
||||
if (m_stimPlanFractureDefinitionData->conductivityUnit.isEmpty())
|
||||
{
|
||||
if (m_stimPlanFractureDefinitionData->conductivityUnit == "md-m") fractureTemplateUnit = RimDefines::UNITS_METRIC;
|
||||
if (m_stimPlanFractureDefinitionData->conductivityUnit == "md-ft") fractureTemplateUnit = RimDefines::UNITS_FIELD;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -582,7 +550,7 @@ std::vector<double> RimStimPlanFractureTemplate::getStimPlanTimeValues()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<std::vector<double>> RimStimPlanFractureTemplate::getConductivitiesAtTimeStep(size_t timStep)
|
||||
{
|
||||
return m_stimPlanFractureDefinitionData->conductivities[timStep];
|
||||
return m_stimPlanFractureDefinitionData->getDataAtTimeIndex("CONDUCTIVITY", timStep);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -590,7 +558,7 @@ std::vector<std::vector<double>> RimStimPlanFractureTemplate::getConductivitiesA
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<std::vector<double>> RimStimPlanFractureTemplate::getPermeabilitiesAtTimeStep(size_t timStep)
|
||||
{
|
||||
return m_stimPlanFractureDefinitionData->permeabilities[timStep];
|
||||
return m_stimPlanFractureDefinitionData->getDataAtTimeIndex("PERMEABILITY", timStep);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -598,7 +566,7 @@ std::vector<std::vector<double>> RimStimPlanFractureTemplate::getPermeabilitiesA
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<std::vector<double>> RimStimPlanFractureTemplate::getWidthsAtTimeStep(size_t timStep)
|
||||
{
|
||||
return m_stimPlanFractureDefinitionData->widths[timStep];
|
||||
return m_stimPlanFractureDefinitionData->getDataAtTimeIndex("WIDTH", timStep);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -63,7 +63,7 @@ public:
|
||||
std::vector<double> adjustedDepthCoordsAroundWellPathPosition();
|
||||
std::vector<double> getStimPlanTimeValues();
|
||||
|
||||
|
||||
//TODO: Remove!!!
|
||||
std::vector<std::vector<double>> getConductivitiesAtTimeStep(size_t timStep);
|
||||
std::vector<std::vector<double>> getPermeabilitiesAtTimeStep(size_t timStep);
|
||||
std::vector<std::vector<double>> getWidthsAtTimeStep(size_t timStep);
|
||||
|
@ -18,6 +18,17 @@
|
||||
|
||||
#include "RigStimPlanFractureDefinition.h"
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RigStimPlanData::RigStimPlanData()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -76,6 +87,57 @@ size_t RigStimPlanFractureDefinition::getTimeStepIndex(double timeStepValue)
|
||||
return -1; //returns -1 if not found
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RigStimPlanFractureDefinition::setDataAtTimeValue(QString resultName, QString unit, std::vector<std::vector<double>> data, double timeStepValue)
|
||||
{
|
||||
bool resultNameExists = false;
|
||||
for (RigStimPlanData& resultData : stimPlanData)
|
||||
{
|
||||
if (resultData.resultName == resultName)
|
||||
{
|
||||
resultNameExists = true;
|
||||
resultData.parameterValues[getTimeStepIndex(timeStepValue)] = data;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!resultNameExists)
|
||||
{
|
||||
RigStimPlanData resultData;
|
||||
|
||||
resultData.resultName = resultName;
|
||||
resultData.unit = unit;
|
||||
|
||||
std::vector<std::vector<std::vector<double>>> values(timeSteps.size());
|
||||
resultData.parameterValues = values;
|
||||
resultData.parameterValues[getTimeStepIndex(timeStepValue)] = data;
|
||||
|
||||
stimPlanData.push_back(resultData);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<std::vector<double>> RigStimPlanFractureDefinition::getDataAtTimeIndex(QString resultName, size_t timeStepIndex)
|
||||
{
|
||||
for (RigStimPlanData& resultData : stimPlanData)
|
||||
{
|
||||
if (resultData.resultName == resultName)
|
||||
{
|
||||
return resultData.parameterValues[timeStepIndex];
|
||||
}
|
||||
}
|
||||
|
||||
qDebug() << "ERROR: Requested parameter does not exists in stimPlan data";
|
||||
std::vector<std::vector<double>> emptyVector;
|
||||
return emptyVector;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -24,6 +24,17 @@
|
||||
|
||||
#include <vector>
|
||||
|
||||
class RigStimPlanData
|
||||
{
|
||||
public:
|
||||
RigStimPlanData();
|
||||
|
||||
QString resultName;
|
||||
QString unit;
|
||||
std::vector<std::vector<std::vector<double>>> parameterValues;
|
||||
|
||||
};
|
||||
|
||||
class RigStimPlanFractureDefinition: public cvf::Object
|
||||
{
|
||||
public:
|
||||
@ -38,6 +49,8 @@ public:
|
||||
std::vector<double> timeSteps;
|
||||
std::vector<double> depths;
|
||||
|
||||
|
||||
std::vector<RigStimPlanData> stimPlanData;
|
||||
//Vector for each time step, for each depth and for each x-value
|
||||
std::vector<std::vector<std::vector<double>>> conductivities;
|
||||
QString conductivityUnit;
|
||||
@ -46,10 +59,12 @@ public:
|
||||
std::vector<std::vector<std::vector<double>>> permeabilities;
|
||||
QString permeabilityUnit;
|
||||
|
||||
bool timeStepExisist(double timeStepValue);
|
||||
void reorderYgridToDepths();
|
||||
size_t getTimeStepIndex(double timeStepValue);
|
||||
bool timeStepExisist(double timeStepValue);
|
||||
void reorderYgridToDepths();
|
||||
size_t getTimeStepIndex(double timeStepValue);
|
||||
|
||||
void setDataAtTimeValue(QString resultName, QString unit, std::vector<std::vector<double>> data, double timeStepValue);
|
||||
std::vector<std::vector<double>> getDataAtTimeIndex(QString resultName, size_t timeStepIndex);
|
||||
|
||||
std::vector<QString> resultNames() const;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user