My Project
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 
25 namespace 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:29