opm-common
group.hpp
1 /*
2  Copyright 2020 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 RST_GROUP
21 #define RST_GROUP
22 
23 #include <array>
24 #include <string>
25 #include <vector>
26 
27 namespace Opm {
28  class UnitSystem;
29 } // namespace Opm
30 
31 namespace Opm::RestartIO {
32  struct RstHeader;
33 } // namespace Opm::RestartIO
34 
35 namespace Opm::RestartIO {
36 
37 struct RstGroup
38 {
39  RstGroup(const UnitSystem& unit_system,
40  const RstHeader& header,
41  const std::string* zwel,
42  const int* igrp,
43  const float* sgrp,
44  const double* xgrp);
45 
46  std::string name;
47 
48  int parent_group;
49  int prod_cmode;
50  int winj_cmode;
51  int ginj_cmode;
52  int prod_guide_rate_def;
53  int exceed_action;
54  int inj_water_guide_rate_def;
55  int inj_gas_guide_rate_def;
56  int voidage_group_index;
57  int add_gas_lift_gas;
58 
60  int group_type{};
61 
62  float oil_rate_limit;
63  float water_rate_limit;
64  float gas_rate_limit;
65  float liquid_rate_limit;
66  float resv_rate_limit;
67  float water_surface_limit;
68  float water_reservoir_limit;
69  float water_reinject_limit;
70  float water_voidage_limit;
71  float gas_surface_limit;
72  float gas_reservoir_limit;
73  float gas_reinject_limit;
74  float gas_voidage_limit;
75  double glift_max_supply;
76  double glift_max_rate;
77  float efficiency_factor;
78  float inj_water_guide_rate;
79  float inj_gas_guide_rate;
80  float gas_consumption_rate;
81  float gas_import_rate;
82 
83  double oil_production_rate;
84  double water_production_rate;
85  double gas_production_rate;
86  double liquid_production_rate;
87  double water_injection_rate;
88  double gas_injection_rate;
89  double wct;
90  double gor;
91  double oil_production_total;
92  double water_production_total;
93  double gas_production_total;
94  double voidage_production_total;
95  double water_injection_total;
96  double gas_injection_total;
97  double voidage_injection_total;
98  double oil_production_potential;
99  double water_production_potential;
100  double history_total_oil_production;
101  double history_total_water_production;
102  double history_total_water_injection;
103  double history_total_gas_production;
104  double history_total_gas_injection;
105  double gas_consumption_total;
106  double gas_import_total;
107 
108  static constexpr auto UNDEFINED_VALUE = 1.0e20f;
109 };
110 
111 } // namespace Opm::RestartIO
112 
113 #endif // RST_GROUP
Definition: header.hpp:38
Definition: group.hpp:37
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:30
Definition: UnitSystem.hpp:34
Definition: Aquancon.hpp:40
int group_type
Kind of group (i.e., well, node, or satellite).
Definition: group.hpp:60