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
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_WELL
21#define RST_WELL
22
23#include <opm/io/eclipse/rst/connection.hpp>
24#include <opm/io/eclipse/rst/segment.hpp>
25
26#include <opm/input/eclipse/Schedule/ScheduleTypes.hpp>
27
28#include <array>
29#include <string>
30#include <unordered_map>
31#include <utility>
32#include <vector>
33
34namespace Opm {
35class UnitSystem;
36} // namespace Opm
37
38namespace Opm { namespace RestartIO {
39
40struct RstHeader;
41
42struct RstWell
43{
44 RstWell(const ::Opm::UnitSystem& unit_system,
45 const RstHeader& header,
46 const std::string& group_arg,
47 const std::string* zwel,
48 const int * iwel,
49 const float * swel,
50 const double * xwel,
51 const int * icon,
52 const float * scon,
53 const double * xcon);
54
55 RstWell(const ::Opm::UnitSystem& unit_system,
56 const RstHeader& header,
57 const std::string& group_arg,
58 const std::string* zwel,
59 const int * iwel,
60 const float * swel,
61 const double * xwel,
62 const int * icon,
63 const float * scon,
64 const double * xcon,
65 const std::vector<int>& iseg,
66 const std::vector<double>& rseg);
67
68 std::string name;
69 std::string group;
70 std::array<int, 2> ij;
71 std::pair<int,int> k1k2;
72 WellType wtype;
73 int well_status;
74 int active_control;
75 int vfp_table;
76 int econ_workover_procedure;
77 int preferred_phase;
78 bool allow_xflow;
79 int group_controllable_flag;
80 int econ_limit_end_run;
81 int grupcon_gr_phase;
82 int hist_requested_control;
83 int msw_index;
84 int completion_ordering;
85 int pvt_table;
86 int msw_pressure_drop_model;
87 int wtest_config_reasons;
88 int wtest_close_reason;
89 int wtest_remaining;
90 int econ_limit_quantity;
91 int econ_workover_procedure_2;
92 int thp_lookup_procedure_vfptable;
93 int close_if_thp_stabilised;
94 int prevent_thpctrl_if_unstable;
95 bool glift_active;
96 bool glift_alloc_extra_gas;
97
98 float orat_target;
99 float wrat_target;
100 float grat_target;
101 float lrat_target;
102 float resv_target;
103 float thp_target;
104 float bhp_target_float;
105 float hist_lrat_target;
106 float hist_grat_target;
107 float hist_bhp_target;
108 float datum_depth;
109 float drainage_radius;
110 float grupcon_gr_value;
111 float efficiency_factor;
112 float alq_value;
113 float econ_limit_min_oil;
114 float econ_limit_min_gas;
115 float econ_limit_max_wct;
116 float econ_limit_max_gor;
117 float econ_limit_max_wgr;
118 float econ_limit_max_wct_2;
119 float econ_limit_min_liq;
120 float wtest_interval;
121 float wtest_startup;
122 float grupcon_gr_scaling;
123 float glift_max_rate;
124 float glift_min_rate;
125 float glift_weight_factor;
126 float glift_inc_weight_factor;
127 std::vector<float> tracer_concentration_injection;
128
129 double oil_rate;
130 double water_rate;
131 double gas_rate;
132 double liquid_rate;
133 double void_rate;
134 double thp;
135 double flow_bhp;
136 double wct;
137 double gor;
138 double oil_total;
139 double water_total;
140 double gas_total;
141 double void_total;
142 double water_inj_total;
143 double gas_inj_total;
144 double void_inj_total;
145 double gas_fvf;
146 double bhp_target_double;
147 double hist_oil_total;
148 double hist_wat_total;
149 double hist_gas_total;
150 double hist_water_inj_total;
151 double hist_gas_inj_total;
152 double water_void_rate;
153 double gas_void_rate;
154
155 const RstSegment& segment(int segment_number) const;
156 std::vector<RstConnection> connections;
157 std::vector<RstSegment> segments;
158};
159
160}} // namespace Opm::RestartIO
161
162#endif // RST_WELL
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:33
Definition: segment.hpp:33
Definition: well.hpp:43