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