mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#1247 - pre-proto - Adding possibility for reading XML-files with negative coordinates for grid in X-direction (values for neg coordinates are ignored when reading file).
This commit is contained in:
parent
de8dc2db3c
commit
374ed0130b
@ -153,6 +153,7 @@ QString RimStimPlanFractureTemplate::fileNameWithOutPath()
|
|||||||
void RimStimPlanFractureTemplate::readStimPlanXMLFile(QString * errorMessage)
|
void RimStimPlanFractureTemplate::readStimPlanXMLFile(QString * errorMessage)
|
||||||
{
|
{
|
||||||
m_stimPlanFractureDefinitionData = new RigStimPlanFractureDefinition;
|
m_stimPlanFractureDefinitionData = new RigStimPlanFractureDefinition;
|
||||||
|
size_t startingNegXsValues = 0;
|
||||||
{
|
{
|
||||||
QFile dataFile(m_stimPlanFileName());
|
QFile dataFile(m_stimPlanFileName());
|
||||||
if (!dataFile.open(QFile::ReadOnly))
|
if (!dataFile.open(QFile::ReadOnly))
|
||||||
@ -164,7 +165,7 @@ void RimStimPlanFractureTemplate::readStimPlanXMLFile(QString * errorMessage)
|
|||||||
QXmlStreamReader xmlStream;
|
QXmlStreamReader xmlStream;
|
||||||
xmlStream.setDevice(&dataFile);
|
xmlStream.setDevice(&dataFile);
|
||||||
xmlStream.readNext();
|
xmlStream.readNext();
|
||||||
readStimplanGridAndTimesteps(xmlStream);
|
startingNegXsValues = readStimplanGridAndTimesteps(xmlStream);
|
||||||
if (xmlStream.hasError())
|
if (xmlStream.hasError())
|
||||||
{
|
{
|
||||||
qDebug() << "Error: Failed to parse file " << dataFile.fileName();
|
qDebug() << "Error: Failed to parse file " << dataFile.fileName();
|
||||||
@ -208,7 +209,8 @@ void RimStimPlanFractureTemplate::readStimPlanXMLFile(QString * errorMessage)
|
|||||||
else if (xmlStream2.name() == "time")
|
else if (xmlStream2.name() == "time")
|
||||||
{
|
{
|
||||||
double timeStepValue = getAttributeValueDouble(xmlStream2, "value");
|
double timeStepValue = getAttributeValueDouble(xmlStream2, "value");
|
||||||
std::vector<std::vector<double>> propertyValuesAtTimestep = getAllDepthDataAtTimeStep(xmlStream2);
|
|
||||||
|
std::vector<std::vector<double>> propertyValuesAtTimestep = getAllDepthDataAtTimeStep(xmlStream2, startingNegXsValues);
|
||||||
|
|
||||||
bool valuesOK = numberOfParameterValuesOK(propertyValuesAtTimestep);
|
bool valuesOK = numberOfParameterValuesOK(propertyValuesAtTimestep);
|
||||||
if (!valuesOK)
|
if (!valuesOK)
|
||||||
@ -268,9 +270,12 @@ std::vector<std::vector<double>> RimStimPlanFractureTemplate::getDataAtTimeIndex
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimStimPlanFractureTemplate::readStimplanGridAndTimesteps(QXmlStreamReader &xmlStream)
|
size_t RimStimPlanFractureTemplate::readStimplanGridAndTimesteps(QXmlStreamReader &xmlStream)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
size_t startNegValuesXs = 0;
|
||||||
|
size_t startNegValuesYs = 0;
|
||||||
|
|
||||||
xmlStream.readNext();
|
xmlStream.readNext();
|
||||||
|
|
||||||
//First, read time steps and grid to establish data structures for putting data into later.
|
//First, read time steps and grid to establish data structures for putting data into later.
|
||||||
@ -283,16 +288,17 @@ void RimStimPlanFractureTemplate::readStimplanGridAndTimesteps(QXmlStreamReader
|
|||||||
|
|
||||||
if (xmlStream.name() == "xs")
|
if (xmlStream.name() == "xs")
|
||||||
{
|
{
|
||||||
// if (getGriddingValues(xmlStream)[0] < 0.0)
|
std::vector<double> gridValues;
|
||||||
// {
|
getGriddingValues(xmlStream, gridValues, startNegValuesXs);
|
||||||
// qDebug() << getGriddingValues(xmlStream)[0];
|
m_stimPlanFractureDefinitionData->gridXs = gridValues;
|
||||||
// }
|
|
||||||
m_stimPlanFractureDefinitionData->gridXs = getGriddingValues(xmlStream);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (xmlStream.name() == "ys")
|
else if (xmlStream.name() == "ys")
|
||||||
{
|
{
|
||||||
m_stimPlanFractureDefinitionData->gridYs = getGriddingValues(xmlStream);
|
std::vector<double> gridValues;
|
||||||
|
getGriddingValues(xmlStream, gridValues, startNegValuesYs);
|
||||||
|
m_stimPlanFractureDefinitionData->gridYs = gridValues;
|
||||||
|
|
||||||
m_stimPlanFractureDefinitionData->reorderYgridToDepths();
|
m_stimPlanFractureDefinitionData->reorderYgridToDepths();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -306,12 +312,19 @@ void RimStimPlanFractureTemplate::readStimplanGridAndTimesteps(QXmlStreamReader
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (startNegValuesYs > 0)
|
||||||
|
{
|
||||||
|
qDebug() << "Error in reading XML file. Negative depth values detected";
|
||||||
|
}
|
||||||
|
return startNegValuesXs;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
std::vector<std::vector<double>> RimStimPlanFractureTemplate::getAllDepthDataAtTimeStep(QXmlStreamReader &xmlStream)
|
std::vector<std::vector<double>> RimStimPlanFractureTemplate::getAllDepthDataAtTimeStep(QXmlStreamReader &xmlStream, size_t startingNegValuesXs)
|
||||||
{
|
{
|
||||||
std::vector<std::vector<double>> propertyValuesAtTimestep;
|
std::vector<std::vector<double>> propertyValuesAtTimestep;
|
||||||
|
|
||||||
@ -329,11 +342,16 @@ std::vector<std::vector<double>> RimStimPlanFractureTemplate::getAllDepthDataAt
|
|||||||
if (xmlStream.isCDATA())
|
if (xmlStream.isCDATA())
|
||||||
{
|
{
|
||||||
QString depthDataStr = xmlStream.text().toString();
|
QString depthDataStr = xmlStream.text().toString();
|
||||||
for (QString value : depthDataStr.split(' '))
|
for (int i = 0; i < depthDataStr.split(' ').size(); i++)
|
||||||
{
|
{
|
||||||
if (value != "")
|
if (i < startingNegValuesXs) continue;
|
||||||
|
else
|
||||||
{
|
{
|
||||||
propertyValuesAtDepth.push_back(value.toDouble());
|
QString value = depthDataStr.split(' ')[i];
|
||||||
|
if ( value != "")
|
||||||
|
{
|
||||||
|
propertyValuesAtDepth.push_back(value.toDouble());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -377,16 +395,21 @@ void RimStimPlanFractureTemplate::setDepthOfWellPathAtFracture()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
std::vector<double> RimStimPlanFractureTemplate::getGriddingValues(QXmlStreamReader &xmlStream)
|
void RimStimPlanFractureTemplate::getGriddingValues(QXmlStreamReader &xmlStream, std::vector<double>& gridValues, size_t& startNegValues)
|
||||||
{
|
{
|
||||||
std::vector<double> gridValues;
|
|
||||||
QString gridValuesString = xmlStream.readElementText().replace('\n', ' ');
|
QString gridValuesString = xmlStream.readElementText().replace('\n', ' ');
|
||||||
for (QString value : gridValuesString.split(' '))
|
for (QString value : gridValuesString.split(' '))
|
||||||
{
|
{
|
||||||
if (value.size()>0) gridValues.push_back(value.toDouble());
|
if (value.size() > 0)
|
||||||
|
{
|
||||||
|
double gridValue = value.toDouble();
|
||||||
|
if (gridValue > -1e-5) //tolerance of 1e-5
|
||||||
|
{
|
||||||
|
gridValues.push_back(gridValue);
|
||||||
|
}
|
||||||
|
else startNegValues++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return gridValues;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -435,7 +458,6 @@ void RimStimPlanFractureTemplate::fractureGeometry(std::vector<cvf::Vec3f>* node
|
|||||||
|
|
||||||
|
|
||||||
std::vector<double> xCoords = getNegAndPosXcoords();
|
std::vector<double> xCoords = getNegAndPosXcoords();
|
||||||
//std::vector<double> xCoords = m_stimPlanFractureDefinitionData->gridXs;
|
|
||||||
cvf::uint lenXcoords = static_cast<cvf::uint>(xCoords.size());
|
cvf::uint lenXcoords = static_cast<cvf::uint>(xCoords.size());
|
||||||
|
|
||||||
std::vector<double> adjustedDepths = adjustedDepthCoordsAroundWellPathPosition();
|
std::vector<double> adjustedDepths = adjustedDepthCoordsAroundWellPathPosition();
|
||||||
|
@ -80,13 +80,13 @@ private:
|
|||||||
void readStimPlanXMLFile(QString * errorMessage);
|
void readStimPlanXMLFile(QString * errorMessage);
|
||||||
|
|
||||||
|
|
||||||
void readStimplanGridAndTimesteps(QXmlStreamReader &xmlStream);
|
size_t readStimplanGridAndTimesteps(QXmlStreamReader &xmlStream);
|
||||||
|
|
||||||
|
|
||||||
static double getAttributeValueDouble(QXmlStreamReader &xmlStream, QString parameterName);
|
static double getAttributeValueDouble(QXmlStreamReader &xmlStream, QString parameterName);
|
||||||
static QString getAttributeValueString(QXmlStreamReader &xmlStream, QString parameterName);
|
static QString getAttributeValueString(QXmlStreamReader &xmlStream, QString parameterName);
|
||||||
static std::vector<double> getGriddingValues(QXmlStreamReader &xmlStream);
|
void getGriddingValues(QXmlStreamReader &xmlStream, std::vector<double>& gridValues, size_t& startNegValues);
|
||||||
std::vector<std::vector<double>> getAllDepthDataAtTimeStep(QXmlStreamReader &xmlStream);
|
std::vector<std::vector<double>> getAllDepthDataAtTimeStep(QXmlStreamReader &xmlStream, size_t startingNegValuesXs);
|
||||||
|
|
||||||
caf::PdmField<QString> m_stimPlanFileName;
|
caf::PdmField<QString> m_stimPlanFileName;
|
||||||
cvf::ref<RigStimPlanFractureDefinition> m_stimPlanFractureDefinitionData;
|
cvf::ref<RigStimPlanFractureDefinition> m_stimPlanFractureDefinitionData;
|
||||||
|
Loading…
Reference in New Issue
Block a user