My Project
well.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 it under the terms of the GNU General Public License as published by
7  the Free Software Foundation, either version 3 of the License, or
8  (at your option) any later version.
9 
10  OPM is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with OPM. If not, see <http://www.gnu.org/licenses/>.
17 */
18 
19 #ifndef RST_WELL
20 #define RST_WELL
21 
22 #include <array>
23 #include <vector>
24 #include <string>
25 #include <unordered_map>
26 
27 
28 #include <opm/io/eclipse/rst/connection.hpp>
29 #include <opm/io/eclipse/rst/segment.hpp>
30 #include <opm/parser/eclipse/EclipseState/Schedule/ScheduleTypes.hpp>
31 
32 namespace Opm {
33 class UnitSystem;
34 
35 namespace RestartIO {
36 
37 struct RstHeader;
38 
39 struct RstWell {
40  RstWell(const ::Opm::UnitSystem& unit_system,
41  const RstHeader& header,
42  const std::string& group_arg,
43  const std::string* zwel,
44  const int * iwel,
45  const float * swel,
46  const double * xwel,
47  const int * icon,
48  const float * scon,
49  const double * xcon);
50 
51  RstWell(const ::Opm::UnitSystem& unit_system,
52  const RstHeader& header,
53  const std::string& group_arg,
54  const std::string* zwel,
55  const int * iwel,
56  const float * swel,
57  const double * xwel,
58  const int * icon,
59  const float * scon,
60  const double * xcon,
61  const std::vector<int>& iseg,
62  const std::vector<double>& rseg);
63 
64  std::string name;
65  std::string group;
66  std::array<int, 2> ij;
67  std::pair<int,int> k1k2;
68  WellType wtype;
69  int well_status;
70  int active_control;
71  int vfp_table;
72  bool allow_xflow;
73  int preferred_phase;
74  int hist_requested_control;
75  int msw_index;
76  int completion_ordering;
77  int pvt_table;
78  int msw_pressure_drop_model;
79  int wtest_config_reasons;
80  int wtest_close_reason;
81  int wtest_remaining;
82 
83  float orat_target;
84  float wrat_target;
85  float grat_target;
86  float lrat_target;
87  float resv_target;
88  float thp_target;
89  float bhp_target_float;
90  float hist_lrat_target;
91  float hist_grat_target;
92  float hist_bhp_target;
93  float datum_depth;
94  float drainage_radius;
95  float efficiency_factor;
96  float alq_value;
97  float wtest_interval;
98  float wtest_startup;
99 
100  double oil_rate;
101  double water_rate;
102  double gas_rate;
103  double liquid_rate;
104  double void_rate;
105  double thp;
106  double flow_bhp;
107  double wct;
108  double gor;
109  double oil_total;
110  double water_total;
111  double gas_total;
112  double void_total;
113  double water_inj_total;
114  double gas_inj_total;
115  double void_inj_total;
116  double gas_fvf;
117  double bhp_target_double;
118  double hist_oil_total;
119  double hist_wat_total;
120  double hist_gas_total;
121  double hist_water_inj_total;
122  double hist_gas_inj_total;
123  double water_void_rate;
124  double gas_void_rate;
125 
126  const RstSegment segment(int segment_number) const;
127  std::vector<RstConnection> connections;
128  std::vector<RstSegment> segments;
129 };
130 
131 
132 }
133 }
134 
135 
136 
137 
138 #endif
Definition: ScheduleTypes.hpp:38
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:29
Definition: header.hpp:31
Definition: segment.hpp:32
Definition: well.hpp:39