#1139 - pre-proto - Reading in all parameters available in StimPlan file.

This commit is contained in:
astridkbjorke 2017-02-17 12:17:57 +01:00
parent a10b96ba3e
commit e971c5276d
4 changed files with 93 additions and 48 deletions

View File

@ -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);
}
//--------------------------------------------------------------------------------------------------

View File

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

View File

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

View File

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