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