My Project
header.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_HEADER
20 #define RST_HEADER
21 
22 #include <vector>
23 #include <ctime>
24 #include <cstddef>
25 
26 #include <opm/input/eclipse/EclipseState/Runspec.hpp>
27 
28 namespace Opm {
29 class UnitSystem;
30 
31 namespace RestartIO {
32 
33 struct RstHeader {
34  RstHeader(const Runspec& runspec, const UnitSystem& unit_system, const std::vector<int>& intehead, const std::vector<bool>& logihead, const std::vector<double>& doubhead);
35 
36  Runspec runspec;
37  int nx;
38  int ny;
39  int nz;
40  int nactive;
41  int num_wells;
42  int ncwmax;
43  int max_wells_in_group;
44  int max_groups_in_field;
45  int max_wells_in_field;
46  int year;
47  int month;
48  int mday;
49  int hour;
50  int minute;
51  int microsecond;
52  int phase_sum;
53  int niwelz;
54  int nswelz;
55  int nxwelz;
56  int nzwelz;
57  int niconz;
58  int nsconz;
59  int nxconz;
60  int nigrpz;
61  int nsgrpz;
62  int nxgrpz;
63  int nzgrpz;
64  int ncamax;
65  int niaaqz;
66  int nsaaqz;
67  int nxaaqz;
68  int nicaqz;
69  int nscaqz;
70  int nacaqz;
71  int tstep;
72  int report_step;
73  int newtmx;
74  int newtmn;
75  int litmax;
76  int litmin;
77  int mxwsit;
78  int mxwpit;
79  int version;
80  int iprog;
81  int nsegwl;
82  int nswlmx;
83  int nsegmx;
84  int nlbrmx;
85  int nisegz;
86  int nrsegz;
87  int nilbrz;
88  int ntfip ;
89  int nmfipr;
90  int ngroup;
91  int nwgmax;
92  int nwell_udq;
93  int ngroup_udq;
94  int nfield_udq;
95  int num_action;
96  int guide_rate_nominated_phase;
97  int max_wlist;
98 
99  bool e300_radial;
100  bool e100_radial;
101  bool enable_hysteris;
102  bool enable_msw;
103  bool is_live_oil;
104  bool is_wet_gas;
105  bool const_comp_oil;
106  bool dir_relperm;
107  bool reversible_relperm;
108  bool endscale;
109  bool dir_eps;
110  bool reversible_eps;
111  bool alt_eps;
112  bool group_control_active;
113  bool glift_all_nupcol;
114 
115  double next_timestep1;
116  double next_timestep2;
117  double max_timestep;
118  double guide_rate_a;
119  double guide_rate_b;
120  double guide_rate_c;
121  double guide_rate_d;
122  double guide_rate_e;
123  double guide_rate_f;
124  double guide_rate_delay;
125  double guide_rate_damping;
126  double udq_range;
127  double udq_undefined;
128  double udq_eps;
129  double glift_min_wait;
130  double glift_rate_delta;
131  double glift_min_eco_grad;
132 
133 
134  std::time_t sim_time() const;
135  std::pair<std::time_t, std::size_t> restart_info() const;
136  int num_udq() const;
137 };
138 
139 
140 }
141 }
142 
143 
144 
145 
146 #endif
Definition: Runspec.hpp:453
Definition: UnitSystem.hpp:33
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:29
Definition: header.hpp:33