Expose more indices in the INTEHEAD vector publicly

This commit is contained in:
Joakim Hove 2020-01-10 12:18:10 +01:00
parent aa9bab75d9
commit 16f0869bc0
3 changed files with 114 additions and 94 deletions

View File

@ -27,90 +27,110 @@ namespace Opm { namespace RestartIO { namespace Helpers { namespace VectorItems
// This is a subset of the items in src/opm/output/eclipse/InteHEAD.cpp .
// Promote items from that list to this in order to make them public.
enum intehead : std::vector<int>::size_type {
ISNUM = 0, // An encoded integer corresponding to the
// time the file was created. For files not
// originating from ECLIPSE, this value may
// be set to zero.
ISNUM = 0, // An encoded integer corresponding to the
// time the file was created. For files not
// originating from ECLIPSE, this value may
// be set to zero.
VERSION = 1, // Simulator version
UNIT = 2, // Units convention
// 1: METRIC, 2: FIELD, 3: LAB, 4: PVT-M
VERSION = 1, // Simulator version
UNIT = 2, // Units convention
// 1: METRIC, 2: FIELD, 3: LAB, 4: PVT-M
NX = 8, // #cells in X direction (Cartesian)
NY = 9, // #cells in Y direction (Cartesian)
NZ = 10, // #cells in Z direction (Cartesian)
NACTIV = 11, // Number of active cells
NX = 8, // #cells in X direction (Cartesian)
NY = 9, // #cells in Y direction (Cartesian)
NZ = 10, // #cells in Z direction (Cartesian)
NACTIV = 11, // Number of active cells
PHASE = 14, // Phase indicator:
// 1: oil, 2: water, 3: O/W, 4: gas,
// 5: G/O, 6: G/W, 7: O/G/W
PHASE = 14, // Phase indicator:
// 1: oil, 2: water, 3: O/W, 4: gas,
// 5: G/O, 6: G/W, 7: O/G/W
NWELLS = 16, // Number of wells
NCWMAX = 17, // Maximum number of completions per well
NWGMAX = 19, // Maximum number of wells in any well group
NGMAXZ = 20, // Maximum number of groups in field
NWELLS = 16, // Number of wells
NCWMAX = 17, // Maximum number of completions per well
NGRP = 18, // Actual number of groups
NWGMAX = 19, // Maximum number of wells in any well group
NGMAXZ = 20, // Maximum number of groups in field
NIWELZ = 24, // Number of data elements per well in IWEL array
// (default 97 for ECLIPSE, 94 for ECLIPSE 300).
NSWELZ = 25, // Number of data elements per well in SWEL array
NXWELZ = 26, // Number of delements per well in XWEL array
NZWELZ = 27, // Number of 8-character words per well in ZWEL array
NIWELZ = 24, // Number of data elements per well in IWEL array
// (default 97 for ECLIPSE, 94 for ECLIPSE 300).
NSWELZ = 25, // Number of data elements per well in SWEL array
NXWELZ = 26, // Number of delements per well in XWEL array
NZWELZ = 27, // Number of 8-character words per well in ZWEL array
NICONZ = 32, // Number of data elements per completion
// in ICON array (default 19)
NSCONZ = 33, // Number of data elements per completion in SCON array
NXCONZ = 34, // Number of data elements per completion in XCON array
NICONZ = 32, // Number of data elements per completion
// in ICON array (default 19)
NSCONZ = 33, // Number of data elements per completion in SCON array
NXCONZ = 34, // Number of data elements per completion in XCON array
NIGRPZ = 36, // Number of data elements per group in IGRP array
NSGRPZ = 37, // Number of data elements per group in SGRP array
NXGRPZ = 38, // Number of data elements per group in XGRP array
NZGRPZ = 39, // Number of data elements per group in ZGRP array
NIGRPZ = 36, // Number of data elements per group in IGRP array
NSGRPZ = 37, // Number of data elements per group in SGRP array
NXGRPZ = 38, // Number of data elements per group in XGRP array
NZGRPZ = 39, // Number of data elements per group in ZGRP array
NCAMAX = 41, // Maximum number of analytic aquifer connections
NCAMAX = 41, // Maximum number of analytic aquifer connections
NIAAQZ = 42, // Number of data elements per aquifer in IAAQ array
NSAAQZ = 43, // Number of data elements per aquifer in SAAQ array
NXAAQZ = 44, // Number of data elements per aquifer in XAAQ array
NIAAQZ = 42, // Number of data elements per aquifer in IAAQ array
NSAAQZ = 43, // Number of data elements per aquifer in SAAQ array
NXAAQZ = 44, // Number of data elements per aquifer in XAAQ array
NICAQZ = 45, // Number of data elements per aquifer connection in ICAQ array
NSCAQZ = 46, // Number of data elements per aquifer connection in SCAQ array
NACAQZ = 47, // Number of data elements per aquifer connection in ACAQ array
NGCTRL = 51, // Index indicating if group control is used or not (1 - if group control, 0 if not)
NGRNPH = 58, // Index indicating if group control is used or not (1 - if group control, 0 if not)
NICAQZ = 45, // Number of data elements per aquifer connection in ICAQ array
NSCAQZ = 46, // Number of data elements per aquifer connection in SCAQ array
NACAQZ = 47, // Number of data elements per aquifer connection in ACAQ array
DAY = 64, // Calendar day of report step (1..31)
MONTH = 65, // Calendar month of report step (1..12)
YEAR = 66, // Calendar year of report step
WHISTC = 71, // Calendar year of report step
NGCTRL = 51, // Index indicating if group control is used or not (1 - if group control, 0 if not)
NOOFACTIONS = 156, // The number of actions in the dataset
MAXNOLINES = 157, // Maximum number of lines of schedule data for ACTION keyword - including ENDACTIO
MAXNOSTRPRLINE = 158, // Maximum number of 8-chars strings pr input line of Action data (rounded up from input)
NGRNPH = 58, // Index indicating if group control is used or not (1 - if group control, 0 if not)
NWMAXZ = 163, // Maximum number of wells in the model
DAY = 64, // Calendar day of report step (1..31)
MONTH = 65, // Calendar month of report step (1..12)
YEAR = 66, // Calendar year of report step
NUM_SOLVER_STEPS = 67, //
REPORT_STEP = 68, //
NSEGWL = 174, // Number of multisegment wells defined with WELSEG
NSWLMX = 175, // Maximum number of segmented wells (item 1 ofWSEGDIMS)
NSEGMX = 176, // Maximum number of segments per well (item 2 of WSEGDIMS)
NLBRMX = 177, // Maximum number of lateral branches (item 3 of WSEGDIMS)
WHISTC = 71, // Calendar year of report step
NISEGZ = 178, // Number of entries per segment in ISEG array
NRSEGZ = 179, // Number of entries per segment in RSEG array
NILBRZ = 180, // Number of entries per segment in ILBR array
NEWTMX = 80, // Tuning, Record3, Item1
NEWTMN = 81, // Tuning, Record3, Item2
LITMAX = 82, // Tuning, Record3, Item3
LITMIN = 83, // Tuning, Record3, Item4
MXWSIT = 86, // Tuning, Record3, Item5
MXWPIT = 87, // Tuning, Record3, Item6
MAX_ACT_COND = 245, // Maximum number of conditions pr action
NTFIP = 89, // REGDIMS item1, or TABDIMS item 5
IPROG = 94, // IPROG = simulation program identifier: 100 - ECLIPSE 100, 300 - ECLIPSE 300, 500 - ECLIPSE 300
// (thermal option), negative - Other simulator,
NMFIPR = 99, // REGDIMS item2
NOOFACTIONS = 156, // The number of actions in the dataset
MAXNOLINES = 157, // Maximum number of lines of schedule data for ACTION keyword - including ENDACTIO
MAXNOSTRPRLINE = 158, // Maximum number of 8-chars strings pr input line of Action data (rounded up from input)
NWMAXZ = 163, // Maximum number of wells in the model
NSEGWL = 174, // Number of multisegment wells defined with WELSEG
NSWLMX = 175, // Maximum number of segmented wells (item 1 ofWSEGDIMS)
NSEGMX = 176, // Maximum number of segments per well (item 2 of WSEGDIMS)
NLBRMX = 177, // Maximum number of lateral branches (item 3 of WSEGDIMS)
NISEGZ = 178, // Number of entries per segment in ISEG array
NRSEGZ = 179, // Number of entries per segment in RSEG array
NILBRZ = 180, // Number of entries per segment in ILBR array
IHOURZ = 206, // IHOURZ = current simulation time HH:MM:SS number of hours (HH) (0-23).
IMINTS = 207, // IMINTS = current simulation time HH:MM:SS number of minutes (MM) (0-59).
MAX_ACT_COND = 245, // Maximum number of conditions pr action
MAX_AN_AQUIFERS = 252, // Maximum number of analytic aquifers
NO_FIELD_UDQS = 262, // No of Field UDQ data (parameters) /
NO_GROUP_UDQS = 263, // No of Group UDQ data (parameters) /
NO_WELL_UDQS = 266, // No of Well UDQ data (parameters) /
UDQPAR_1 = 267, // Integer seed value for the RAND /
NO_IUADS = 290, // No IUADs
NO_IUAPS = 291, // No IUAPs
RSEED = 296,
NO_FIELD_UDQS = 262, // No of Field UDQ data (parameters) /
NO_GROUP_UDQS = 263, // No of Group UDQ data (parameters) /
NO_WELL_UDQS = 266, // No of Well UDQ data (parameters) /
UDQPAR_1 = 267, // Integer seed value for the RAND /
NO_IUADS = 290, // No IUADs
NO_IUAPS = 291, // No IUAPs
RSEED = 296,
ISECND = 410 // ISECND = current simulation time HH:MM:SS - number of seconds (SS), reported in microseconds
// (0-59,999,999)
};
}}}} // Opm::RestartIO::Helpers::VectorItems

View File

@ -37,7 +37,7 @@ enum index : std::vector<int>::size_type {
ih_015 = 15 , // 0 0
NWELLS = VI::intehead::NWELLS, // NWELLS 39 NWELL = number of wells
NCWMAX = VI::intehead::NCWMAX, // NCWMAX 108 Weldims item2 NCWMAX = maximum number of completions per well
NGRP = 18 , // NGRP? 0 Number of actual groups
NGRP = VI::intehead::NGRP, // NGRP? 0 Number of actual groups
NWGMAX = VI::intehead::NWGMAX, // NWGMAX 0 maximum of weldims item3 or item4 NWGMAX = maximum number of wells in any well group
NGMAXZ = VI::intehead::NGMAXZ, // NGMAXZ 0 weldims item3 + 1 NGMAXZ = maximum number of groups in field
ih_021 = 21 , // 0 0
@ -86,8 +86,8 @@ enum index : std::vector<int>::size_type {
DAY = VI::intehead::DAY, // IDAY 2 IDAY = calendar day at this report time
MONTH = VI::intehead::MONTH, // IMON 6 IMON = calendar month at this report time
YEAR = VI::intehead::YEAR, // IYEAR 2016 IYEAR = calendar year at this report time
NUM_SOLVER_STEPS = 67 , // The number of solver steps the simulator has performed so far.
REPORT_STEP = 68 , // The sequence/report number for for this restart file.
NUM_SOLVER_STEPS = VI::intehead::NUM_SOLVER_STEPS, // The number of solver steps the simulator has performed so far.
REPORT_STEP = VI::intehead::REPORT_STEP, // The sequence/report number for for this restart file.
ih_069 = 69 , // 0 0
ih_070 = 70 , // 0 0
NWHISTCTL = VI::intehead::WHISTC, // index for WHISTCTL keyword
@ -99,26 +99,26 @@ enum index : std::vector<int>::size_type {
ih_077 = 77 , // 0 0
ih_078 = 78 , // 0 0
ih_079 = 79 , // 0 0
NEWTMX = 80 , // 0 0 Tuning,Record3,Item1
NEWTMN = 81 , // 0 0 Tuning,Record3,Item2
LITMAX = 82 , // 0 0 Tuning,Record3,Item3
LITMIN = 83 , // 0 0 Tuning,Record3,Item4
NEWTMX = VI::intehead::NEWTMX, // 0 0 Tuning,Record3,Item1
NEWTMN = VI::intehead::NEWTMN, // 0 0 Tuning,Record3,Item2
LITMAX = VI::intehead::LITMAX, // 0 0 Tuning,Record3,Item3
LITMIN = VI::intehead::LITMIN, // 0 0 Tuning,Record3,Item4
ih_084 = 84 , // 0 0 Tuning,Record3,Item5
ih_085 = 85 , // 0 0 Tuning,Record3,Item6
MXWSIT = 86 , // 0 0
MXWPIT = 87 , // 0 0
MXWSIT = VI::intehead::MXWSIT, // 0 0
MXWPIT = VI::intehead::MXWPIT, // 0 0
ih_088 = 88 , // 0 0
NTFIP = 89 , // 0 0 REGDIMS item1, or TABDIMS item 5
NTFIP = VI::intehead::NTFIP, // 0 0
ih_090 = 90 , // 0 0
ih_091 = 91 , // 0 0
ih_092 = 92 , // 0 0
ih_093 = 93 , // 0 0
IPROG = 94 , // 0 100 IPROG = simulation program identifier: 100 - ECLIPSE 100, 300 - ECLIPSE 300, 500 - ECLIPSE 300 (thermal option), negative - Other simulator
IPROG = VI::intehead::IPROG, // 0 100
INITSIZE = 95 , // 0 0
ih_096 = 96 , // 0 0
ih_097 = 97 , // 0 0
ih_098 = 98 , // 0 0
NMFIPR = 99 , // 0 0 REGDIMS item2
NMFIPR = VI::intehead::NMFIPR, // 0 0
ih_100 = 100 , // 0 0
ih_101 = 101 , // 0 0 1
ih_102 = 102 , // 0 0
@ -225,8 +225,8 @@ enum index : std::vector<int>::size_type {
ih_203 = 203 , // 0
ih_204 = 204 , // 0
ih_205 = 205 , // 0
IHOURZ = 206 , // IHOURZ IHOURZ = current simulation time HH:MM:SS number of hours (HH) (0-23).
IMINTS = 207 , // IMINTS IMINTS = current simulation time HH:MM:SS - number of minutes (MM) (0-59).
IHOURZ = VI::intehead::IHOURZ,
IMINTS = VI::intehead::IMINTS,
ih_208 = 208 , // 0
ih_209 = 209 , // 0
ih_210 = 210 , // 0
@ -429,7 +429,7 @@ enum index : std::vector<int>::size_type {
ih_407 = 407 , // 0
ih_408 = 408 , // 0
ih_409 = 409 , // 0
ISECND = 410 , // 0 ISECND = current simulation time HH:MM:SS - number of seconds (SS), reported in microseconds (0-59,999,999)
ISECND = VI::intehead::ISECND,
// ---------------------------------------------------------------------
// ---------------------------------------------------------------------

View File

@ -330,8 +330,8 @@ BOOST_AUTO_TEST_CASE(Time_and_report_step)
const auto& v = ih.data();
BOOST_CHECK_EQUAL(v[67], 12); // TSTEP
BOOST_CHECK_EQUAL(v[68], 2 + 1); // REP_STEP (= sim_step + 1)
BOOST_CHECK_EQUAL(v[VI::intehead::NUM_SOLVER_STEPS], 12); // TSTEP
BOOST_CHECK_EQUAL(v[VI::intehead::REPORT_STEP], 2 + 1); // REP_STEP (= sim_step + 1)
}
BOOST_AUTO_TEST_CASE(Tuning_param)
@ -350,12 +350,12 @@ BOOST_AUTO_TEST_CASE(Tuning_param)
const auto& v = ih.data();
BOOST_CHECK_EQUAL(v[80], newtmx); // NEWTMX
BOOST_CHECK_EQUAL(v[81], newtmn); // NEWTMN
BOOST_CHECK_EQUAL(v[82], litmax); // LITMAX
BOOST_CHECK_EQUAL(v[83], litmin); // LITMIN
BOOST_CHECK_EQUAL(v[86], mxwsit); // MXWSIT
BOOST_CHECK_EQUAL(v[87], mxwpit); // MXWPIT
BOOST_CHECK_EQUAL(v[VI::intehead::NEWTMX], newtmx);
BOOST_CHECK_EQUAL(v[VI::intehead::NEWTMN], newtmn);
BOOST_CHECK_EQUAL(v[VI::intehead::LITMAX], litmax);
BOOST_CHECK_EQUAL(v[VI::intehead::LITMIN], litmin);
BOOST_CHECK_EQUAL(v[VI::intehead::MXWSIT], mxwsit);
BOOST_CHECK_EQUAL(v[VI::intehead::MXWPIT], mxwpit);
}
BOOST_AUTO_TEST_CASE(Various_Parameters)
@ -365,8 +365,8 @@ BOOST_AUTO_TEST_CASE(Various_Parameters)
const auto& v = ih.data();
BOOST_CHECK_EQUAL(v[ 1], 2015); // VERSION
BOOST_CHECK_EQUAL(v[ 94], 100); // IPROG
BOOST_CHECK_EQUAL(v[VI::intehead::VERSION], 2015); // VERSION
BOOST_CHECK_EQUAL(v[VI::intehead::IPROG], 100); // IPROG
BOOST_CHECK_EQUAL(v[ 76], 5); // IH_076
BOOST_CHECK_EQUAL(v[101], 1); // IH_101
BOOST_CHECK_EQUAL(v[103], 1); // IH_103
@ -413,8 +413,8 @@ BOOST_AUTO_TEST_CASE(regionDimensions)
const auto& v = ih.data();
BOOST_CHECK_EQUAL(v[89], ntfip); // NTFIP
BOOST_CHECK_EQUAL(v[99], nmfipr); // NMFIPR
BOOST_CHECK_EQUAL(v[VI::intehead::NTFIP], ntfip);
BOOST_CHECK_EQUAL(v[VI::intehead::NMFIPR], nmfipr);
}
BOOST_AUTO_TEST_CASE(ngroups)
@ -426,7 +426,7 @@ BOOST_AUTO_TEST_CASE(ngroups)
const auto& v = ih.data();
BOOST_CHECK_EQUAL(v[18], ngroup); // NGRP
BOOST_CHECK_EQUAL(v[VI::intehead::NGRP], ngroup);
}
BOOST_AUTO_TEST_CASE(SimulationDate)
{