My Project
Loading...
Searching...
No Matches
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
25namespace Opm::RestartIO::Helpers::VectorItems {
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
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,
80 TreeGroup = 1,
81 };
82
83 enum GLiftGas : int {
84 No = 0,
85 Yes = 1,
86 };
87 } // namespace Value
88 } // namespace IGroup
89
90 namespace SGroup {
91 enum index : std::vector<float>::size_type {
92
93 GasConsumptionRate = 25, // Group's gas consumption rate (NOT including sub-group rates)
94 GasImportRate = 36, // Group's gas import rate (NOT including sub-group rates)
95
96 EfficiencyFactor = 92, // Group's efficiency factor (Item 2 of GEFAC)
97 };
98
99 enum prod_index : std::vector<float>::size_type {
100 GuideRate = 2, // Group's guide rate value
101 OilRateLimit = 6, // Group's oil production target/limit
102 WatRateLimit = 7, // Group's water production target/limit
103 GasRateLimit = 8, // Group's gas production target/limit
104 LiqRateLimit = 9, // Group's liquid production target/limit
105
106 GLOMaxSupply = 34, // Group's maximum supply of lift gas
107
108 GasRateLimit_2 = 39, // Copy of group's gas production target/limit
109 OilRateLimit_2 = 52, // Copy of group's oil production target/limit
110 WatRateLimit_2 = 53, // Copy of group's water production target/limit
111 LiqRateLimit_2 = 54, // Copy of group's liquid production target/limit
112
113 GLOMaxRate = 91, // Group's maximum lift gas rate
114 };
115
116 enum inj_index : std::vector<float>::size_type {
117 oilSurfRateLimit = 10, // Group's oil surface volume injection rate target/limit
118 oilResRateLimit = 11, // Group's oil reservoir volume injection rate target/limit
119 oilReinjectionLimit = 12, // Group's oil reinjection fraction target/limit
120 oilVoidageLimit = 13, // Group's oil voidage injection fraction target/limit
121
122 waterSurfRateLimit = 15, // Group's water surface volume injection rate target/limit
123 waterResRateLimit = 16, // Group's water reservoir volume injection rate target/limit
124 waterReinjectionLimit = 17, // Group's water reinjection fraction target/limit
125 waterVoidageLimit = 18, // Group's water voidage injection fraction target/limit
126 waterGuideRate = 19, // Group's water injection guide rate
127
128 gasSurfRateLimit = 20, // Group's gas surface volume injection rate target/limit
129 gasResRateLimit = 21, // Group's gas reservoir volume injection rate target/limit
130 gasReinjectionLimit = 22, // Group's gas reinjection fraction target/limit
131 gasVoidageLimit = 23, // Group's gas voidage injection fraction target/limit
132 gasGuideRate = 24, // Group's gas injection guide rate
133
134 oilSurfRateLimit_2 = 57, // Copy of group's oil surface volume injection rate target/limit
135 oilResRateLimit_2 = 58, // Copy of group's oil reservoir volume injection rate target/limit
136 oilReinjectionLimit_2 = 59, // Copy of group's oil reinjection fraction target/limit
137 oilVoidageLimit_2 = 60, // Copy of group's oil voidage injection fraction target/limit
138
139 waterSurfRateLimit_2 = 61, // Copy of group's water surface volume injection rate target/limit
140 waterResRateLimit_2 = 62, // Copy of group's water reservoir volume injection rate target/limit
141 waterReinjectionLimit_2 = 63, // Copy of group's water reinjection fraction target/limit
142 waterVoidageLimit_2 = 64, // Copy of group's water voidage injection fraction target/limit
143
144 gasSurfRateLimit_2 = 65, // Copy of group's gas surface volume injection rate target/limit
145 gasResRateLimit_2 = 66, // Copy of group's gas reservoir volume injection rate target/limit
146 gasReinjectionLimit_2 = 67, // Copy of group's gas reinjection fraction target/limit
147 gasVoidageLimit_2 = 68, // Copy of group's gas voidage injection fraction target/limit
148 };
149
150 namespace Value {
151 constexpr auto NoGLOLimit = -10.0f;
152 } // namespace Value
153 } // SGroup
154
155 namespace XGroup {
156 enum index : std::vector<double>::size_type {
157 OilPrRate = 0, // Group's oil production rate
158 WatPrRate = 1, // Group's water production rate
159 GasPrRate = 2, // Group's gas production rate
160 LiqPrRate = 3, // Group's liquid production rate
161
162 WatInjRate = 5, // Group's water injection rate
163 GasInjRate = 6, // Group's gas injection rate
164
165 WatCut = 8, // Group's producing water cut
166 GORatio = 9, // Group's producing gas/oil ratio
167
168 OilPrTotal = 10, // Group's total cumulative oil production
169 WatPrTotal = 11, // Group's total cumulative water production
170 GasPrTotal = 12, // Group's total cumulative gas production
171 VoidPrTotal = 13, // Group's total cumulative reservoir
172 // voidage production
173
174 WatInjTotal = 15, // Group's total cumulative water injection
175 GasInjTotal = 16, // Group's total cumulative gas injection
176 VoidInjTotal = 17, // Group's total cumulative reservoir volume injection
177
178 GasConsumptionRate = 19, // Group's gas consumption rate (including sub-group rates)
179 GasConsumptionTotal = 21, // Group's total cumulative gas consumption
180
181 OilPrPot = 22, // Group's oil production potential
182 WatPrPot = 23, // Group's water production potential
183
184 GasImportRate = 51, // Group's gas import rate (including sub-group rates)
185 GasImportTotal = 52, // Group's total cumulative gas import
186
187 OilPrTotalSolution = 73, // Group's total cumulative oil production in solution
188 GasPrTotalSolution = 74, // Group's total cumulative gas production in solution
189
190 OilPrGuideRate = 85, // Group's producer guide rate for oil.
191 WatPrGuideRate = 86, // Group's producer guide rate for water.
192 GasPrGuideRate = 87, // Group's producer guide rate for gas.
193 VoidPrGuideRate = 88, // Group's producer guide rate for reservoir voidage volume.
194
195 OilInjGuideRate = 89, // Group's injection guide rate for oil.
196 WatInjGuideRate = 91, // Group's injection guide rate for water.
197 WatInjGuideRate_2 = 92, // Second copy of group's injection guide rate for water.
198 // Not fully characterised.
199 GasInjGuideRate = 93, // Groups injection guide rate for gas.
200
201 OilPrGuideRate_2 = 127, // Second copy of group's producer guide rate for oil.
202 // Not fully characterised.
203 WatPrGuideRate_2 = 128, // Second copy of group's producer guide rate for water.
204 // Not fully characterised.
205 GasPrGuideRate_2 = 129, // Second copy of group's producer guide rate for gas.
206 // Not fully characterised.
207 VoidPrGuideRate_2 = 130, // Second copy of group's producer guide rate for
208 // reservoir voidage volume. Not fully characterised.
209
210 HistOilPrTotal = 135, // Group's total cumulative oil
211 // production (observed/historical rates)
212 HistWatPrTotal = 139, // Group's total cumulative water
213 // production (observed/historical rates)
214 HistWatInjTotal = 140, // Group's total cumulative water
215 // injection (observed/historical rates)
216 HistGasPrTotal = 143, // Group's total cumulative gas
217 // production (observed/historical rates)
218 HistGasInjTotal = 144, // Group's total cumulative gas injection
219 // (observed/historical rates)
220
221 TracerOffset = 180, // Tracer data starts here
222 };
223 } // XGroup
224
225} // Opm::RestartIO::Helpers::VectorItems
226
227#endif // OPM_OUTPUT_ECLIPSE_VECTOR_GROUP_HPP