#1816 : Observed Data : Add mock data to RifReaderObservedData

This commit is contained in:
Magne Sjaastad
2017-09-22 14:26:54 +02:00
parent 363224e39a
commit eb744f381d
15 changed files with 340 additions and 59 deletions

View File

@@ -21,12 +21,8 @@
#include "RifColumnBasedAsciiParser.h"
#include "RifEclipseSummaryAddress.h"
#include "ert/ecl/ecl_sum.h"
#include <string>
#include <assert.h>
#include <QDateTime>
#include <QTextStream>
//--------------------------------------------------------------------------------------------------
///
@@ -47,15 +43,44 @@ RifReaderObservedData::~RifReaderObservedData()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RifReaderObservedData::open(const std::string& headerFileName)
bool RifReaderObservedData::open(const QString& headerFileName,
const QString& identifierName,
RifEclipseSummaryAddress::SummaryVarCategory summaryCategory)
{
QString dateFormat = "yyyy-MM-dd";
QString cellSeparator = "\t";
QLocale decimalLocale = QLocale::Norwegian;
if (headerFileName.empty()) return false;
QString data = headerFileName.data();
QString data;
QTextStream out(&data);
out << "Date" << "\t" << "Oil" << "\t" << "PW" << "\n";
out << "1993-02-23" << "\t" << "10" << "\t" << "1" << "\n";
out << "1993-06-15" << "\t" << "20" << "\t" << "2" << "\n";
out << "1994-02-26" << "\t" << "30" << "\t" << "3" << "\n";
out << "1994-05-23" << "\t" << "40" << "\t" << "4" << "\n";
return false;
//RiaParseAsciiData::parseData(data, settings);
//m_asciiParser = RifColumnBasedAsciiParser(data)
m_asciiParser = std::unique_ptr<RifColumnBasedAsciiParser>(new RifColumnBasedAsciiParser(data, dateFormat, decimalLocale, cellSeparator));
m_timeSteps.clear();
if (m_asciiParser)
{
for (QDateTime timeStep : m_asciiParser->timeSteps())
{
time_t t = timeStep.toTime_t();
m_timeSteps.push_back(t);
}
m_allResultAddresses.clear();
for (auto s : m_asciiParser->headers())
{
m_allResultAddresses.push_back(address(s, identifierName, summaryCategory));
}
}
if (!m_asciiParser) return false;
return true;
}
//--------------------------------------------------------------------------------------------------
@@ -63,6 +88,24 @@ bool RifReaderObservedData::open(const std::string& headerFileName)
//--------------------------------------------------------------------------------------------------
bool RifReaderObservedData::values(const RifEclipseSummaryAddress& resultAddress, std::vector<double>* values)
{
size_t columnIndex = m_allResultAddresses.size();
for (size_t i = 0; i < m_allResultAddresses.size(); i++)
{
if (resultAddress == m_allResultAddresses[i])
{
columnIndex = i;
}
}
if (columnIndex != m_allResultAddresses.size())
{
for (auto& v : m_asciiParser->columnValues(columnIndex))
{
values->push_back(v);
}
}
return true;
}
@@ -71,25 +114,17 @@ bool RifReaderObservedData::values(const RifEclipseSummaryAddress& resultAddress
//--------------------------------------------------------------------------------------------------
const std::vector<time_t>& RifReaderObservedData::timeSteps(const RifEclipseSummaryAddress& resultAddress) const
{
// if (m_asciiParser)
// {
// for (QDateTime timeStep : m_asciiParser->timeSteps())
// {
// time_t t = timeStep.toTime_t();
// timeStepsTime_t.push_back(t);
// }
// }
return m_timeStepsTime_t;
return m_timeSteps;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RifEclipseSummaryAddress RifReaderObservedData::address(const AsciiData& asciiData, std::string identifierName, RifEclipseSummaryAddress::SummaryVarCategory summaryCategory)
RifEclipseSummaryAddress RifReaderObservedData::address(const QString& quantity,
const QString& identifierName,
RifEclipseSummaryAddress::SummaryVarCategory summaryCategory)
{
std::string quantityName;
std::string quantityName = quantity.toStdString();
int regionNumber(-1);
int regionNumber2(-1);
std::string wellGroupName;
@@ -103,13 +138,13 @@ RifEclipseSummaryAddress RifReaderObservedData::address(const AsciiData& asciiDa
switch (summaryCategory)
{
case RifEclipseSummaryAddress::SUMMARY_WELL_GROUP:
wellGroupName = identifierName;
wellGroupName = identifierName.toStdString();
break;
case RifEclipseSummaryAddress::SUMMARY_WELL:
wellName = identifierName;
wellName = identifierName.toStdString();
break;
case RifEclipseSummaryAddress::SUMMARY_WELL_LGR:
lgrName = identifierName;
lgrName = identifierName.toStdString();
break;
default:
break;

View File

@@ -21,14 +21,14 @@
#include "RifSummaryReaderInterface.h"
#include <map>
#include <memory>
#include <string>
#include <vector>
#include <map>
#include "cvfObject.h"
struct AsciiData;
class QDateTime;
class QString;
class RifColumnBasedAsciiParser;
class RifEclipseSummaryAddress;
@@ -42,17 +42,24 @@ public:
RifReaderObservedData();
~RifReaderObservedData();
bool open(const std::string& headerFileName);
bool open(const QString& headerFileName,
const QString& identifierName,
RifEclipseSummaryAddress::SummaryVarCategory summaryCategory);
virtual const std::vector<time_t>& timeSteps(const RifEclipseSummaryAddress& resultAddress) const override;
virtual const std::vector<time_t>& timeSteps(const RifEclipseSummaryAddress& resultAddress) const override;
virtual bool values(const RifEclipseSummaryAddress& resultAddress, std::vector<double>* values) override;
std::string unitName(const RifEclipseSummaryAddress& resultAddress) override;
virtual bool values(const RifEclipseSummaryAddress& resultAddress,
std::vector<double>* values) override;
std::string unitName(const RifEclipseSummaryAddress& resultAddress) override;
private:
RifEclipseSummaryAddress address(const AsciiData& asciiData, std::string identifierName, RifEclipseSummaryAddress::SummaryVarCategory summaryCategor);
RifEclipseSummaryAddress address(const QString& quantity,
const QString& identifierName,
RifEclipseSummaryAddress::SummaryVarCategory summaryCategory);
private:
RifColumnBasedAsciiParser* m_asciiParser;
std::vector<time_t> m_timeStepsTime_t;
std::unique_ptr<RifColumnBasedAsciiParser> m_asciiParser;
std::vector<time_t> m_timeSteps;
};