opm-common
group.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_GROUP_HPP
21 #define OPM_OUTPUT_ECLIPSE_VECTOR_GROUP_HPP
22 
23 #include <vector>
24 
26 
27  namespace IGroup {
28  // Observe that these value should not be used as ordinary indices
29  // into the the IGRP vector. Instead, they should all be treated as
30  // offsets from the "child group" portion of IGRP. In other words,
31  // the actual index into IGRP should be formed as
32  //
33  // IGRP[NWGMAX + index]
34  //
35  enum index : std::vector<int>::size_type {
36  NoOfChildGroupsWells = 0,
37  ProdActiveCMode = 1,
38  ProdHighLevCtrl = 5,
39  GuideRateDef = 6,
40  ExceedAction = 7,
41  GConProdCMode = 10,
42  WInjActiveCMode = 16,
43  WInjHighLevCtrl = 17,
44  GConInjeWInjCMode = 19,
45  GConInjeWaterGuideRateMode = 20,
46  GInjActiveCMode = 21,
47  GInjHighLevCtrl = 22,
48  GConInjeGInjCMode = 24,
49  GConInjeGasGuideRateMode = 25,
50  GroupType = 26,
51  GroupLevel = 27,
52  ParentGroup = 28,
53  FlowingWells = 33,
54  NodeNumber = 39,
55 
56  // Whether or not lift gas from node's corresponding group's
57  // subordinate groups should be added to the produced gas
58  // entering the network at this node in the extended network
59  // model (NODEPROP(4)).
60  AddGLiftGasAsProducedGas = 53,
61  // The following indices get a default value 2 for LGR IGRP groups with no LGR well.
62  VoidageGroupIndex = 89,
63  };
64 
65  namespace Value {
66  enum GuideRateMode : int {
67  None = 0,
68  Oil = 1,
69  Water = 2,
70  Gas = 3,
71  Liquid = 4,
72  Resv = 6, // need to be verified!!!
73  Potn = 7,
74  Form = 8,
75  Comb = 9,
76  };
77 
78  enum GroupType : int {
79  WellGroup = 0, // Group is a well group (children are wells)
80  NodeGroup = 1, // Group is a node group (children are other groups)
81  SatelliteGroup = 2, // Group is a satellite (GSAT* keywords, no children)
82  SlaveGroup = 3, // Group is a slave in a reservoir coupling run
83  };
84 
85  enum GLiftGas : int {
86  No = 0,
87  Yes = 1,
88  };
89  } // namespace Value
90  } // namespace IGroup
91 
92  namespace SGroup {
93  enum index : std::vector<float>::size_type {
94 
95  GasConsumptionRate = 25, // Group's gas consumption rate (NOT including sub-group rates)
96  GasImportRate = 36, // Group's gas import rate (NOT including sub-group rates)
97 
98  EfficiencyFactor = 92, // Group's efficiency factor (Item 2 of GEFAC)
99  };
100 
101  enum prod_index : std::vector<float>::size_type {
102  GuideRate = 2, // Group's guide rate value
103  OilRateLimit = 6, // Group's oil production target/limit
104  WatRateLimit = 7, // Group's water production target/limit
105  GasRateLimit = 8, // Group's gas production target/limit
106  LiqRateLimit = 9, // Group's liquid production target/limit
107 
108  GLOMaxSupply = 34, // Group's maximum supply of lift gas
109  ResvRateLimit = 35, // Group's maximum reservoir volume production rate target/limit
110 
111  GasRateLimit_2 = 39, // Copy of group's gas production target/limit
112  OilRateLimit_2 = 52, // Copy of group's oil production target/limit
113  WatRateLimit_2 = 53, // Copy of group's water production target/limit
114  LiqRateLimit_2 = 54, // Copy of group's liquid production target/limit
115  ResvRateLimit_2 = 55, // Copy of group's maximum reservoir volume production rate target/limit
116 
117  MeanCaloricValue = 79, // Mean calorific value of produced gas (GSATPROD keyword)
118 
119  GLOMaxRate = 91, // Group's maximum lift gas rate
120  };
121 
122  enum inj_index : std::vector<float>::size_type {
123  oilSurfRateLimit = 10, // Group's oil surface volume injection rate target/limit
124  oilResRateLimit = 11, // Group's oil reservoir volume injection rate target/limit
125  oilReinjectionLimit = 12, // Group's oil reinjection fraction target/limit
126  oilVoidageLimit = 13, // Group's oil voidage injection fraction target/limit
127 
128  waterSurfRateLimit = 15, // Group's water surface volume injection rate target/limit
129  waterResRateLimit = 16, // Group's water reservoir volume injection rate target/limit
130  waterReinjectionLimit = 17, // Group's water reinjection fraction target/limit
131  waterVoidageLimit = 18, // Group's water voidage injection fraction target/limit
132  waterGuideRate = 19, // Group's water injection guide rate
133 
134  gasSurfRateLimit = 20, // Group's gas surface volume injection rate target/limit
135  gasResRateLimit = 21, // Group's gas reservoir volume injection rate target/limit
136  gasReinjectionLimit = 22, // Group's gas reinjection fraction target/limit
137  gasVoidageLimit = 23, // Group's gas voidage injection fraction target/limit
138  gasGuideRate = 24, // Group's gas injection guide rate
139 
140  oilSurfRateLimit_2 = 57, // Copy of group's oil surface volume injection rate target/limit
141  oilResRateLimit_2 = 58, // Copy of group's oil reservoir volume injection rate target/limit
142  oilReinjectionLimit_2 = 59, // Copy of group's oil reinjection fraction target/limit
143  oilVoidageLimit_2 = 60, // Copy of group's oil voidage injection fraction target/limit
144 
145  waterSurfRateLimit_2 = 61, // Copy of group's water surface volume injection rate target/limit
146  waterResRateLimit_2 = 62, // Copy of group's water reservoir volume injection rate target/limit
147  waterReinjectionLimit_2 = 63, // Copy of group's water reinjection fraction target/limit
148  waterVoidageLimit_2 = 64, // Copy of group's water voidage injection fraction target/limit
149 
150  gasSurfRateLimit_2 = 65, // Copy of group's gas surface volume injection rate target/limit
151  gasResRateLimit_2 = 66, // Copy of group's gas reservoir volume injection rate target/limit
152  gasReinjectionLimit_2 = 67, // Copy of group's gas reinjection fraction target/limit
153  gasVoidageLimit_2 = 68, // Copy of group's gas voidage injection fraction target/limit
154 
155  gasMeanCalorificValue = 83, // Mean calorific value of injected gas (GSATINJE keyword)
156  };
157 
158  namespace Value {
159  constexpr auto NoGLOLimit = -10.0f;
160  } // namespace Value
161  } // SGroup
162 
163  namespace XGroup {
164  enum index : std::vector<double>::size_type {
165  OilPrRate = 0, // Group's oil production rate
166  WatPrRate = 1, // Group's water production rate
167  GasPrRate = 2, // Group's gas production rate
168  LiqPrRate = 3, // Group's liquid production rate
169 
170  WatInjRate = 5, // Group's water injection rate
171  GasInjRate = 6, // Group's gas injection rate
172 
173  WatCut = 8, // Group's producing water cut
174  GORatio = 9, // Group's producing gas/oil ratio
175 
176  OilPrTotal = 10, // Group's total cumulative oil production
177  WatPrTotal = 11, // Group's total cumulative water production
178  GasPrTotal = 12, // Group's total cumulative gas production
179  VoidPrTotal = 13, // Group's total cumulative reservoir
180  // voidage production
181 
182  WatInjTotal = 15, // Group's total cumulative water injection
183  GasInjTotal = 16, // Group's total cumulative gas injection
184  VoidInjTotal = 17, // Group's total cumulative reservoir volume injection
185 
186  GasConsumptionRate = 19, // Group's gas consumption rate (including sub-group rates)
187  GasConsumptionTotal = 21, // Group's total cumulative gas consumption
188 
189  OilPrPot = 22, // Group's oil production potential
190  WatPrPot = 23, // Group's water production potential
191 
192  GasImportRate = 51, // Group's gas import rate (including sub-group rates)
193  GasImportTotal = 52, // Group's total cumulative gas import
194 
195  OilPrTotalSolution = 73, // Group's total cumulative oil production in solution
196  GasPrTotalSolution = 74, // Group's total cumulative gas production in solution
197 
198  OilPrGuideRate = 85, // Group's producer guide rate for oil.
199  WatPrGuideRate = 86, // Group's producer guide rate for water.
200  GasPrGuideRate = 87, // Group's producer guide rate for gas.
201  VoidPrGuideRate = 88, // Group's producer guide rate for reservoir voidage volume.
202 
203  OilInjGuideRate = 89, // Group's injection guide rate for oil.
204  WatInjGuideRate = 91, // Group's injection guide rate for water.
205  WatInjGuideRate_2 = 92, // Second copy of group's injection guide rate for water.
206  // Not fully characterised.
207  GasInjGuideRate = 93, // Groups injection guide rate for gas.
208 
209  OilPrGuideRate_2 = 127, // Second copy of group's producer guide rate for oil.
210  // Not fully characterised.
211  WatPrGuideRate_2 = 128, // Second copy of group's producer guide rate for water.
212  // Not fully characterised.
213  GasPrGuideRate_2 = 129, // Second copy of group's producer guide rate for gas.
214  // Not fully characterised.
215  VoidPrGuideRate_2 = 130, // Second copy of group's producer guide rate for
216  // reservoir voidage volume. Not fully characterised.
217 
218  HistOilPrTotal = 135, // Group's total cumulative oil
219  // production (observed/historical rates)
220  HistWatPrTotal = 139, // Group's total cumulative water
221  // production (observed/historical rates)
222  HistWatInjTotal = 140, // Group's total cumulative water
223  // injection (observed/historical rates)
224  HistGasPrTotal = 143, // Group's total cumulative gas
225  // production (observed/historical rates)
226  HistGasInjTotal = 144, // Group's total cumulative gas injection
227  // (observed/historical rates)
228 
229  TracerOffset = 180, // Tracer data starts here
230  };
231  } // XGroup
232 
233 } // Opm::RestartIO::Helpers::VectorItems
234 
235 #endif // OPM_OUTPUT_ECLIPSE_VECTOR_GROUP_HPP
Definition: action.hpp:25