My Project
intehead.hpp
1 /*
2  Copyright (c) 2018 Equinor ASA
3 
4  This file is part of the Open Porous Media project (OPM).
5 
6  OPM is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  OPM is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with OPM. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #ifndef OPM_OUTPUT_ECLIPSE_VECTOR_INTEHEAD_HPP
21 #define OPM_OUTPUT_ECLIPSE_VECTOR_INTEHEAD_HPP
22 
23 #include <vector>
24 
25 namespace Opm { namespace RestartIO { namespace Helpers { namespace VectorItems {
26 
27  // This is a subset of the items in src/opm/output/eclipse/InteHEAD.cpp .
28  // Promote items from that list to this in order to make them public.
29  enum intehead : std::vector<int>::size_type {
30  ISNUM = 0, // An encoded integer corresponding to the
31  // time the file was created. For files not
32  // originating from ECLIPSE, this value may
33  // be set to zero.
34 
35  VERSION = 1, // Simulator version
36  UNIT = 2, // Units convention
37  // 1: METRIC, 2: FIELD, 3: LAB, 4: PVT-M
38 
39  NX = 8, // #cells in X direction (Cartesian)
40  NY = 9, // #cells in Y direction (Cartesian)
41  NZ = 10, // #cells in Z direction (Cartesian)
42  NACTIV = 11, // Number of active cells
43 
44  PHASE = 14, // Phase indicator:
45  // 1: oil, 2: water, 3: O/W, 4: gas,
46  // 5: G/O, 6: G/W, 7: O/G/W
47 
48  NWELLS = 16, // Number of wells
49  NCWMAX = 17, // Maximum number of completions per well
50  NGRP = 18, // Actual number of groups
51  NWGMAX = 19, // Maximum number of wells in any well group
52  NGMAXZ = 20, // Maximum number of groups in field
53 
54  NIWELZ = 24, // Number of data elements per well in IWEL array
55  // (default 97 for ECLIPSE, 94 for ECLIPSE 300).
56  NSWELZ = 25, // Number of data elements per well in SWEL array
57  NXWELZ = 26, // Number of delements per well in XWEL array
58  NZWELZ = 27, // Number of 8-character words per well in ZWEL array
59 
60  MXWLSTPRWELL = 30, // Maximum number of well lists pr well
61 
62  NICONZ = 32, // Number of data elements per completion
63  // in ICON array (default 19)
64  NSCONZ = 33, // Number of data elements per completion in SCON array
65  NXCONZ = 34, // Number of data elements per completion in XCON array
66 
67  NIGRPZ = 36, // Number of data elements per group in IGRP array
68  NSGRPZ = 37, // Number of data elements per group in SGRP array
69  NXGRPZ = 38, // Number of data elements per group in XGRP array
70  NZGRPZ = 39, // Number of data elements per group in ZGRP array
71 
72  NAQUIF = 40, // Number of *active* analytic aquifers (i.e., number of unique aquifer IDs) in model
73  NCAMAX = 41, // Maximum number of analytic aquifer connections
74 
75  NIAAQZ = 42, // Number of data elements per aquifer in IAAQ array
76  NSAAQZ = 43, // Number of data elements per aquifer in SAAQ array
77  NXAAQZ = 44, // Number of data elements per aquifer in XAAQ array
78 
79  NICAQZ = 45, // Number of data elements per aquifer connection in ICAQ array
80  NSCAQZ = 46, // Number of data elements per aquifer connection in SCAQ array
81  NACAQZ = 47, // Number of data elements per aquifer connection in ACAQ array
82 
83  NGCTRL = 51, // Index indicating if group control is used or not (1 - if group control, 0 if not)
84 
85  NGRNPH = 58, // Index indicating if group control is used or not (1 - if group control, 0 if not)
86  EACHNCITS = 59, // Index indicating if lift gas distribution optimized each of the NUPCOL first iterations or not
87  // 1 - optimized only first newton iteration, 2 - optimized each of NUPCOL newton iterations
88 
89  DAY = 64, // Calendar day of report step (1..31)
90  MONTH = 65, // Calendar month of report step (1..12)
91  YEAR = 66, // Calendar year of report step
92  NUM_SOLVER_STEPS = 67, //
93  REPORT_STEP = 68, //
94 
95  WHISTC = 71, // Calendar year of report step
96 
97  ACTNETWRK = 74, // Indicator for active external network (= 0: no active network, = 2 Active network)
98 
99  NetbalMaxTHPIter = 77, // Maximum number of iterations in THP calculations
100  // for manifold groups under rate control (NETBALAN(5))
101  NetbalMaxBalanceIter = 79, // Maximum number of network balance iterations (NETBALAN(3))
102 
103  NEWTMX = 80, // Tuning, Record3, Item1
104  NEWTMN = 81, // Tuning, Record3, Item2
105  LITMAX = 82, // Tuning, Record3, Item3
106  LITMIN = 83, // Tuning, Record3, Item4
107  MXWSIT = 86, // Tuning, Record3, Item5
108  MXWPIT = 87, // Tuning, Record3, Item6
109 
110  NTFIP = 89, // REGDIMS item1, or TABDIMS item 5
111 
112  IPROG = 94, // IPROG = simulation program identifier: 100 - ECLIPSE 100, 300 - ECLIPSE 300, 500 - ECLIPSE 300
113  // (thermal option), negative - Other simulator,
114  NMFIPR = 99, // REGDIMS item2
115 
116  ROCKOPTS_TABTYP = 103, // ROCKOPTS item3 (PVTNUM=1 - default)
117 
118  NOACTNOD = 129 , // NOACTNOD = Number of active/defined nodes in the network
119  NOACTBR = 130 , // NOACTBR = Number of active/defined branches in the network
120  NODMAX = 131 , // NODMAX = maximum number of nodes in extended network option
121  NBRMAX = 132 , // NBRMAX = maximum number of branches in extended network option
122  NIBRAN = 133 , // NIBRAN = number of entries per branch in the IBRAN array
123  NRBRAN = 134 , // NRBRAN = number of tries per branch in the RBRAN array
124  NINODE = 135 , // NINODE = number of entries per node in the INODE array
125  NRNODE = 136 , // NRNODE = number of entries per node in the RNODE array
126  NZNODE = 137 , // NZNODE = number of entries per node in the ZNODE array
127  NINOBR = 138 , // NINOBR = size of the INOBR array
128 
129  NOOFACTIONS = 156, // The number of actions in the dataset
130  MAXNOLINES = 157, // Maximum number of lines of schedule data for ACTION keyword - including ENDACTIO
131  MAXNOSTRPRLINE = 158, // Maximum number of 8-chars strings pr input line of Action data (rounded up from input)
132 
133  MAX_ACT_ANLYTIC_AQUCONN = 162, // Maximum number of *active* connections across all analytic aquifers
134  NWMAXZ = 163, // Maximum number of wells in the model
135 
136  NSEGWL = 174, // Number of multisegment wells defined with WELSEG
137  NSWLMX = 175, // Maximum number of segmented wells (item 1 ofWSEGDIMS)
138  NSEGMX = 176, // Maximum number of segments per well (item 2 of WSEGDIMS)
139  NLBRMX = 177, // Maximum number of lateral branches (item 3 of WSEGDIMS)
140 
141  NISEGZ = 178, // Number of entries per segment in ISEG array
142  NRSEGZ = 179, // Number of entries per segment in RSEG array
143  NILBRZ = 180, // Number of entries per segment in ILBR array
144 
145  IHOURZ = 206, // IHOURZ = current simulation time HH:MM:SS – number of hours (HH) (0-23).
146  IMINTS = 207, // IMINTS = current simulation time HH:MM:SS – number of minutes (MM) (0-59).
147 
148  WSEGITR_IT2 = 208, // NR - maximum no of times that a new iteration cycle with a reduced Wp will be started
149 
150  NIIAQN = 223, // Number of data elements in IAQN array pr AQUNUM record
151  NIRAQN = 224, // Number of data elements in RAQN array pr AQUNUM record
152 
153  NUM_AQUNUM_RECORDS = 226, // Number of AQUNUM records (lines of AQUNUM data)
154 
155  MAX_ACT_COND = 245, // Maximum number of conditions pr action
156  MAX_AN_AQUIFER_ID = 252, // Maximum aquifer ID of all analytic aquifers (<= AQUDIMS(5))
157 
158  NO_FIELD_UDQS = 262, // No of Field UDQ data (parameters) /
159  NO_GROUP_UDQS = 263, // No of Group UDQ data (parameters) /
160  NO_WELL_UDQS = 266, // No of Well UDQ data (parameters) /
161  UDQPAR_1 = 267, // Integer seed value for the RAND /
162 
163  AQU_UNKNOWN_1 = 269, // Not characterised. Equal to NAQUIF in all cases seen so far.
164  MAX_ANALYTIC_AQUIFERS = 286, // Declared maximum number of analytic aquifers in model. AQUDIMS(5).
165 
166  NO_IUADS = 290, // No IUADs
167  NO_IUAPS = 291, // No IUAPs
168  RSEED = 296,
169 
170  MAXDYNWELLST = 302, // Maximum number of dynamic well lists (default = 1)
171 
172  ISECND = 410 // ISECND = current simulation time HH:MM:SS - number of seconds (SS), reported in microseconds
173  // (0-59,999,999)
174  };
175 
176  namespace InteheadValues {
177  enum LiftOpt : int {
178  NotActive = 0, // Gas lift not enabled (LIFTOPT not present)
179  FirstIterationOnly = 1, // Optimise gas lift in first Newton iteration only (LIFTOPT(4) = NO)
180  EachNupCol = 2, // Optimise gas lift in each of first NUPCOL Newton iterations (LIFTOPT(4) = YES)
181  };
182  } // InteheadValues
183 }}}} // Opm::RestartIO::Helpers::VectorItems
184 
185 #endif // OPM_OUTPUT_ECLIPSE_VECTOR_INTEHEAD_HPP
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:29