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 { namespace RestartIO { namespace Helpers { namespace VectorItems {
26
27 namespace SGroup {
28 enum index : std::vector<float>::size_type {
29 EfficiencyFactor = 92, // Group's efficiency factor (Item 2 of GEFAC)
30 };
31
32 enum prod_index : std::vector<float>::size_type {
33 GuideRate = 2, // Group's guide rate value
34 OilRateLimit = 6, // Group's oil production target/limit
35 WatRateLimit = 7, // Group's water production target/limit
36 GasRateLimit = 8, // Group's gas production target/limit
37 LiqRateLimit = 9, // Group's liquid production target/limit
38
39 GLOMaxSupply = 34, // Group's maximum supply of lift gas
40
41 GasRateLimit_2 = 39, // Copy of group's gas production target/limit
42 OilRateLimit_2 = 52, // Copy of group's oil production target/limit
43 WatRateLimit_2 = 53, // Copy of group's water production target/limit
44 LiqRateLimit_2 = 54, // Copy of group's liquid production target/limit
45
46 GLOMaxRate = 91, // Group's maximum lift gas rate
47 };
48
49 enum inj_index : std::vector<float>::size_type {
50 oilSurfRateLimit = 10, // Group's oil surface volume injection rate target/limit
51 oilResRateLimit = 11, // Group's oil reservoir volume injection rate target/limit
52 oilReinjectionLimit = 12, // Group's oil reinjection fraction target/limit
53 oilVoidageLimit = 13, // Group's oil voidage injection fraction target/limit
54
55 waterSurfRateLimit = 15, // Group's water surface volume injection rate target/limit
56 waterResRateLimit = 16, // Group's water reservoir volume injection rate target/limit
57 waterReinjectionLimit = 17, // Group's water reinjection fraction target/limit
58 waterVoidageLimit = 18, // Group's water voidage injection fraction target/limit
59 waterGuideRate = 19, // Group's water injection guide rate
60
61 gasSurfRateLimit = 20, // Group's gas surface volume injection rate target/limit
62 gasResRateLimit = 21, // Group's gas reservoir volume injection rate target/limit
63 gasReinjectionLimit = 22, // Group's gas reinjection fraction target/limit
64 gasVoidageLimit = 23, // Group's gas voidage injection fraction target/limit
65 gasGuideRate = 24, // Group's gas injection guide rate
66
67 oilSurfRateLimit_2 = 57, // Copy of group's oil surface volume injection rate target/limit
68 oilResRateLimit_2 = 58, // Copy of group's oil reservoir volume injection rate target/limit
69 oilReinjectionLimit_2 = 59, // Copy of group's oil reinjection fraction target/limit
70 oilVoidageLimit_2 = 60, // Copy of group's oil voidage injection fraction target/limit
71
72 waterSurfRateLimit_2 = 61, // Copy of group's water surface volume injection rate target/limit
73 waterResRateLimit_2 = 62, // Copy of group's water reservoir volume injection rate target/limit
74 waterReinjectionLimit_2 = 63, // Copy of group's water reinjection fraction target/limit
75 waterVoidageLimit_2 = 64, // Copy of group's water voidage injection fraction target/limit
76
77 gasSurfRateLimit_2 = 65, // Copy of group's gas surface volume injection rate target/limit
78 gasResRateLimit_2 = 66, // Copy of group's gas reservoir volume injection rate target/limit
79 gasReinjectionLimit_2 = 67, // Copy of group's gas reinjection fraction target/limit
80 gasVoidageLimit_2 = 68, // Copy of group's gas voidage injection fraction target/limit
81 };
82
83 namespace Value {
84 constexpr auto NoGLOLimit = -10.0f;
85 } // namespace Value
86 } // SGroup
87
88
89 namespace IGroup {
90 // Observe that these value should not be used as ordinary indices into
91 // the the IGRP vector, they should all be used as IGRP[NWGMAX + $index]
92 enum index : std::vector<int>::size_type {
93 NoOfChildGroupsWells = 0,
94 ProdActiveCMode = 1,
95 ProdHighLevCtrl = 5,
96 GuideRateDef = 6,
97 ExceedAction = 7,
98 GConProdCMode = 10,
99 WInjActiveCMode = 16,
100 WInjHighLevCtrl = 17,
101 GConInjeWInjCMode = 19,
102 GConInjeWaterGuideRateMode = 20,
103 GInjActiveCMode = 21,
104 GInjHighLevCtrl = 22,
105 GConInjeGInjCMode = 24,
106 GConInjeGasGuideRateMode = 25,
107 GroupType = 26,
108 GroupLevel = 27,
109 ParentGroup = 28,
110 FlowingWells = 33,
111 NodeNumber = 39
112 };
113
114 namespace Value {
115 enum GuideRateMode : int {
116 None = 0,
117 Oil = 1,
118 Water = 2,
119 Gas = 3,
120 Liquid = 4,
121 Resv = 6, // need to be verified!!!
122 Potn = 7,
123 Form = 8,
124 Comb = 9,
125 };
126
127 enum GroupType : int {
128 WellGroup = 0,
129 TreeGroup = 1,
130 };
131
132 }
133
134 }
135
136
137 namespace XGroup {
138 enum index : std::vector<double>::size_type {
139 OilPrRate = 0, // Group's oil production rate
140 WatPrRate = 1, // Group's water production rate
141 GasPrRate = 2, // Group's gas production rate
142 LiqPrRate = 3, // Group's liquid production rate
143
144 WatInjRate = 5, // Group's water injection rate
145 GasInjRate = 6, // Group's gas injection rate
146
147 WatCut = 8, // Group's producing water cut
148 GORatio = 9, // Group's producing gas/oil ratio
149
150 OilPrTotal = 10, // Group's total cumulative oil production
151 WatPrTotal = 11, // Group's total cumulative water production
152 GasPrTotal = 12, // Group's total cumulative gas production
153 VoidPrTotal = 13, // Group's total cumulative reservoir
154 // voidage production
155
156 WatInjTotal = 15, // Group's total cumulative water injection
157 GasInjTotal = 16, // Group's total cumulative gas injection
158 VoidInjTotal = 17, // Group's total cumulative reservoir volume injection
159
160 OilPrPot = 22, // Group's oil production potential
161 WatPrPot = 23, // Group's water production potential
162
163 OilPrTotalSolution = 73, // Group's total cumulative oil production in solution
164 GasPrTotalSolution = 74, // Group's total cumulative gas production in solution
165
166 OilPrGuideRate = 85, // Group's producer guide rate for oil.
167 WatPrGuideRate = 86, // Group's producer guide rate for water.
168 GasPrGuideRate = 87, // Group's producer guide rate for gas.
169 VoidPrGuideRate = 88, // Group's producer guide rate for reservoir voidage volume.
170
171 OilInjGuideRate = 89, // Group's injection guide rate for oil.
172 WatInjGuideRate = 91, // Group's injection guide rate for water.
173 WatInjGuideRate_2 = 92, // Second copy of group's injection guide rate for water.
174 // Not fully characterised.
175 GasInjGuideRate = 93, // Groups injection guide rate for gas.
176
177 OilPrGuideRate_2 = 127, // Second copy of group's producer guide rate for oil.
178 // Not fully characterised.
179 WatPrGuideRate_2 = 128, // Second copy of group's producer guide rate for water.
180 // Not fully characterised.
181 GasPrGuideRate_2 = 129, // Second copy of group's producer guide rate for gas.
182 // Not fully characterised.
183 VoidPrGuideRate_2 = 130, // Second copy of group's producer guide rate for
184 // reservoir voidage volume. Not fully characterised.
185
186 HistOilPrTotal = 135, // Group's total cumulative oil
187 // production (observed/historical rates)
188 HistWatPrTotal = 139, // Group's total cumulative water
189 // production (observed/historical rates)
190 HistWatInjTotal = 140, // Group's total cumulative water
191 // injection (observed/historical rates)
192 HistGasPrTotal = 143, // Group's total cumulative gas
193 // production (observed/historical rates)
194 HistGasInjTotal = 144, // Group's total cumulative gas injection
195 // (observed/historical rates)
196
197 TracerOffset = 180, // Tracer data starts here
198 };
199 } // XGroup
200
201}}}} // Opm::RestartIO::Helpers::VectorItems
202
203#endif // OPM_OUTPUT_ECLIPSE_VECTOR_GROUP_HPP
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition Exceptions.hpp:30