#2003 Observed Data : Add file parsing of fixed column width

This commit is contained in:
Magne Sjaastad
2017-11-03 12:01:09 +01:00
parent f844c6fdb9
commit 265c0ebb70
5 changed files with 608 additions and 15 deletions

View File

@@ -0,0 +1,222 @@
#include "gtest/gtest.h"
#include "RifEclipseUserDataParserTools.h"
#include "RifColumnBasedUserDataParser.h"
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
TEST(FixedWidthDataParser, BasicUsage)
{
QString data = R"(
1
-------------------------------------------------------------------------------------------------------------------------------
SUMMARY OF RUN NORNE_ATW2013_RFTPLT_V3 ECLIPSE 2016.2 DATESTAMP 13-DEC-2016
-------------------------------------------------------------------------------------------------------------------------------
DATE FGIRH FVPT FWPT FOPT FLPT FLPTH FGPT FOPTH FGPTH
SM3/DAY RM3 SM3 SM3 SM3 SM3 SM3 SM3 SM3
*10**3 *10**3 *10**3 *10**3 *10**3 *10**6 *10**3 *10**6
0 0 0 0 0 0 0 0 0
-------------------------------------------------------------------------------------------------------------------------------
6-NOV-1997 0 0 0 0 0 0 0 0 0
7-NOV-1997 0 5.749954 0.004548 4.379801 4.384350 4.347700 0.476000 4.347700 0.482595
8-NOV-1997 0 13.76883 0.010841 10.48852 10.49936 10.41106 1.139745 10.41106 1.155627
9-NOV-1997 0 19.38692 0.015243 14.76847 14.78372 14.65899 1.604722 14.65899 1.627147
)";
std::stringstream streamData;
streamData.str(data.toStdString());
std::vector<std::string> tableHeaderLines = RifEclipseUserDataParserTools::findValidHeaderLines(streamData);
EXPECT_EQ(4, tableHeaderLines.size());
{
std::string line;
std::getline(streamData, line);
std::string firstDataLine = "6-NOV-1997";
line.find_first_of(firstDataLine);
EXPECT_TRUE(line.find_first_of(firstDataLine) != std::string::npos);
}
auto colHeaders = RifEclipseUserDataParserTools::splitIntoColumnHeaders(tableHeaderLines);
EXPECT_EQ(10, colHeaders.size());
EXPECT_TRUE(colHeaders[9][0].find_first_of("FGPTH") != std::string::npos);
EXPECT_TRUE(colHeaders[9][1].find_first_of("SM3") != std::string::npos);
EXPECT_TRUE(colHeaders[9][2].find_first_of("*10**6") != std::string::npos);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
TEST(FixedWidthDataParser, ColumnData)
{
std::vector<std::vector<std::string>> columnData;
{
std::vector<std::string> col;
col.push_back("FGPTH");
col.push_back("SM3");
col.push_back("*10**6");
columnData.push_back(col);
}
auto ci = RifEclipseUserDataParserTools::columnInfoFromColumnHeaders(columnData);
EXPECT_EQ(1, ci.size());
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
TEST(FixedWidthDataParser, DetectFixedWidth)
{
QString data = R"(
1
-------------------------------------------------------------------------------------------------------------------------------
SUMMARY OF RUN NORNE_ATW2013_RFTPLT_V3 ECLIPSE 2016.2 DATESTAMP 13-DEC-2016
-------------------------------------------------------------------------------------------------------------------------------
DATE YEARS NEWTON MLINEARS DAY MONTH YEAR NEWTON TCPU ELAPSED
YEARS SECONDS SECONDS
-------------------------------------------------------------------------------------------------------------------------------
6-NOV-1997 0 0 0 6 11 1997 0 4.880000 9.720000
7-NOV-1997 0.002738 3 28 7 11 1997 3 5.240000 10.11000
8-NOV-1997 0.006556 4 42 8 11 1997 4 5.730000 10.60000
9-NOV-1997 0.009231 3 28 9 11 1997 3 6.080000 10.95000
10-NOV-1997 0.011462 4 32 10 11 1997 4 6.500000 11.37000
11-NOV-1997 0.013710 4 35 11 11 1997 4 6.940001 11.81000
11-NOV-1997 0.015950 3 25 11 11 1997 3 7.270000 12.14000
12-NOV-1997 0.018477 4 35 12 11 1997 4 7.710001 12.58000
13-NOV-1997 0.020190 3 24 13 11 1997 3 8.040000 12.91000
14-NOV-1997 0.021903 3 27 14 11 1997 3 8.380000 13.25000
14-NOV-1997 0.024232 2 17 14 11 1997 2 8.640000 13.57000
17-NOV-1997 0.030838 3 26 17 11 1997 3 8.980000 13.91000
19-NOV-1997 0.037060 3 30 19 11 1997 3 9.350000 14.28000
1
-------------------------------------------------------------------------------------------------------------------------------
SUMMARY OF RUN NORNE_ATW2013_RFTPLT_V3 ECLIPSE 2016.2 DATESTAMP 13-DEC-2016
-------------------------------------------------------------------------------------------------------------------------------
DATE RGIR RGPR RGIPG RGIPL RGIT RGPT RWIR RWPR RWPT
SM3/DAY SM3/DAY SM3 SM3 SM3 SM3 SM3/DAY SM3/DAY SM3
*10**3 *10**3 *10**3 *10**3
1 1 1 1 1 1 1 1 1
-------------------------------------------------------------------------------------------------------------------------------
6-NOV-1997 0 0 5426677. 591448.1 0 0 0 0 0
7-NOV-1997 0 2396930. 5424424. 591498.1 0 2396.930 0 -21.6173 -21.6173
8-NOV-1997 0 -250487. 5423940. 591966.2 0 2047.598 0 -11124.0 -15535.3
9-NOV-1997 0 2829432. 5421400. 591952.3 0 4812.102 0 -17.8744 -15552.8
10-NOV-1997 0 -280634. 5421285. 592209.2 0 4583.461 0 -10959.9 -24482.1
11-NOV-1997 0 2830404. 5419148. 592196.6 0 6908.132 0 -10.3646 -24490.7
11-NOV-1997 0 -295420. 5419071. 592429.6 0 6666.499 0 -10081.2 -32736.4
12-NOV-1997 0 2653586. 5416835. 592407.6 0 9116.355 0 1.209827 -32735.3
13-NOV-1997 0 -360534. 5416802. 592585.4 0 8890.818 0 -9987.70 -38983.3
14-NOV-1997 0 2637960. 5415305. 592557.9 0 10541.03 0 14.09936 -38974.5
14-NOV-1997 392181.0 1892660. 5414172. 592553.9 333.6561 12151.25 0 12.94364 -38963.4
17-NOV-1997 392181.0 -248070. 5414992. 592978.2 1279.883 11552.73 0 -6587.17 -54856.5
19-NOV-1997 392181.0 2105310. 5411504. 592928.2 2171.132 16337.13 0 50.99986 -54740.6
1
-------------------------------------------------------------------------------------------------------------------------------
SUMMARY OF RUN NORNE_ATW2013_RFTPLT_V3 ECLIPSE 2016.2 DATESTAMP 13-DEC-2016
-------------------------------------------------------------------------------------------------------------------------------
DATE RWIP ROPR ROIR ROIT ROIPG ROIPL ROPT WBP5 WBP5
SM3 SM3/DAY SM3/DAY SM3 SM3 SM3 SM3 BARSA BARSA
*10**3
C-4H B-2H
1 1 1 1 1 1 1
-------------------------------------------------------------------------------------------------------------------------------
6-NOV-1997 11497.27 0 0 0 311329.6 5356031. 0 267.8818 272.3813
7-NOV-1997 11497.30 136.0644 0 0 310820.4 5356412. 136.0644 267.5505 271.7487
8-NOV-1997 11512.83 -2235.10 0 0 307801.2 5359464. -2981.04 267.9665 271.5258
9-NOV-1997 11512.86 164.4799 0 0 307597.5 5359512. -2820.33 267.7249 271.3749
10-NOV-1997 11521.80 -2242.95 0 0 307640.1 5361289. -4647.73 267.9192 271.2401
11-NOV-1997 11521.82 167.4484 0 0 307474.1 5361327. -4510.20 267.6667 271.1284
11-NOV-1997 11530.07 -2050.93 0 0 307511.9 5362954. -6187.72 267.9205 271.0045
12-NOV-1997 11530.08 159.2625 0 0 307328.3 5362987. -6040.69 267.6598 270.8947
13-NOV-1997 11536.33 -2048.92 0 0 307366.7 5364262. -7322.42 267.8667 270.8219
14-NOV-1997 11536.33 163.7713 0 0 307245.2 5364278. -7219.97 267.6961 270.7566
14-NOV-1997 11536.32 110.5641 0 0 307121.3 5364291. -7125.90 267.7364 270.6674
17-NOV-1997 11552.19 -1263.74 0 0 307151.2 5367307. -10175.0 268.3125 270.3454
19-NOV-1997 11552.09 133.3163 0 0 306850.8 5367300. -9872.00 267.8979 270.1126
)";
EXPECT_TRUE(RifEclipseUserDataParserTools::isFixedWidthHeader(data.toStdString()));
// RifColumnBasedUserDataParser parser(data);
// auto tables = parser.tableData();
// EXPECT_EQ(3, tables.size());
/*
auto mergedTables = RifEclipseUserDataParserTools::mergeEqualTimeSteps(tables);
EXPECT_EQ(1, mergedTables.size());
EXPECT_EQ(28, mergedTables[0].size());
*/
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
TEST(FixedWidthDataParser, VaryingTimeStepCount)
{
QString data =
"1 \n"
" -------------------------------------------------------------------------------------------------------------------------------\n"
" SUMMARY OF RUN NORNE_ATW2013_RFTPLT_V3 ECLIPSE 2016.2 DATESTAMP 13-DEC-2016 \n"
" -------------------------------------------------------------------------------------------------------------------------------\n"
" DATE YEARS NEWTON MLINEARS DAY MONTH YEAR NEWTON TCPU ELAPSED \n"
" YEARS SECONDS SECONDS \n"
" \n"
" \n"
" -------------------------------------------------------------------------------------------------------------------------------\n"
" 6-NOV-1997 0 0 0 6 11 1997 0 4.880000 9.720000 \n"
" 7-NOV-1997 0.002738 3 28 7 11 1997 3 5.240000 10.11000 \n"
" 8-NOV-1997 0.006556 4 42 8 11 1997 4 5.730000 10.60000 \n"
" 9-NOV-1997 0.009231 3 28 9 11 1997 3 6.080000 10.95000 \n"
" 10-NOV-1997 0.011462 4 32 10 11 1997 4 6.500000 11.37000 \n"
" 11-NOV-1997 0.013710 4 35 11 11 1997 4 6.940001 11.81000 \n"
" 11-NOV-1997 0.015950 3 25 11 11 1997 3 7.270000 12.14000 \n"
" 12-NOV-1997 0.018477 4 35 12 11 1997 4 7.710001 12.58000 \n"
" 13-NOV-1997 0.020190 3 24 13 11 1997 3 8.040000 12.91000 \n"
" 14-NOV-1997 0.021903 3 27 14 11 1997 3 8.380000 13.25000 \n"
" 14-NOV-1997 0.024232 2 17 14 11 1997 2 8.640000 13.57000 \n"
" 17-NOV-1997 0.030838 3 26 17 11 1997 3 8.980000 13.91000 \n"
" 19-NOV-1997 0.037060 3 30 19 11 1997 3 9.350000 14.28000 \n"
"1 \n"
" -------------------------------------------------------------------------------------------------------------------------------\n"
" SUMMARY OF RUN NORNE_ATW2013_RFTPLT_V3 ECLIPSE 2016.2 DATESTAMP 13-DEC-2016 \n"
" -------------------------------------------------------------------------------------------------------------------------------\n"
" DATE RGIR RGPR RGIPG RGIPL RGIT RGPT RWIR RWPR RWPT \n"
" SM3/DAY SM3/DAY SM3 SM3 SM3 SM3 SM3/DAY SM3/DAY SM3 \n"
" *10**3 *10**3 *10**3 *10**3 \n"
" \n"
" 1 1 1 1 1 1 1 1 1 \n"
" -------------------------------------------------------------------------------------------------------------------------------\n"
" 6-NOV-1997 0 0 5426677. 591448.1 0 0 0 0 0 \n"
" 7-NOV-1997 0 2396930. 5424424. 591498.1 0 2396.930 0 -21.6173 -21.6173 \n"
" 8-NOV-1997 0 -250487. 5423940. 591966.2 0 2047.598 0 -11124.0 -15535.3 \n"
" 9-NOV-1997 0 2829432. 5421400. 591952.3 0 4812.102 0 -17.8744 -15552.8 \n"
" 10-NOV-1997 0 -280634. 5421285. 592209.2 0 4583.461 0 -10959.9 -24482.1 \n"
" 11-NOV-1997 0 2830404. 5419148. 592196.6 0 6908.132 0 -10.3646 -24490.7 \n"
" 11-NOV-1997 0 -295420. 5419071. 592429.6 0 6666.499 0 -10081.2 -32736.4 \n"
" 12-NOV-1997 0 2653586. 5416835. 592407.6 0 9116.355 0 1.209827 -32735.3 \n"
" 13-NOV-1997 0 -360534. 5416802. 592585.4 0 8890.818 0 -9987.70 -38983.3 \n"
" 14-NOV-1997 0 2637960. 5415305. 592557.9 0 10541.03 0 14.09936 -38974.5 \n"
;
// RifColumnBasedUserDataParser parser(data);
// auto tables = parser.tableData();
// EXPECT_EQ(2, tables.size());
/*
auto mergedTables = RifEclipseUserDataParserTools::mergeEqualTimeSteps(tables);
EXPECT_EQ(2, mergedTables.size());
*/
}