opm-common
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
7  terms of the GNU General Public License as published by the Free Software
8  Foundation, either version 3 of the License, or (at your option) any later
9  version.
10 
11  OPM is distributed in the hope that it will be useful, but WITHOUT ANY
12  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13  FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
14  details.
15 
16  You should have received a copy of the GNU General Public License along
17  with OPM. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #ifndef RST_HEADER
21 #define RST_HEADER
22 
23 #include <opm/input/eclipse/EclipseState/Runspec.hpp>
24 
25 #include <cstddef>
26 #include <ctime>
27 #include <utility>
28 #include <vector>
29 
30 namespace Opm {
31 
32 class UnitSystem;
33 
34 } // namespace Opm
35 
36 namespace Opm::RestartIO {
37 
38 struct RstHeader
39 {
40  RstHeader(const Runspec& runspec,
41  const UnitSystem& unit_system,
42  const std::vector<int>& intehead,
43  const std::vector<bool>& logihead,
44  const std::vector<double>& doubhead);
45 
46  Runspec runspec;
47  int nx;
48  int ny;
49  int nz;
50  int nactive;
51  int num_wells;
52  int ncwmax;
53  int max_wells_in_group;
54  int max_groups_in_field;
55  int max_wells_in_field;
56  int year;
57  int month;
58  int mday;
59  int hour;
60  int minute;
61  int microsecond;
62  int phase_sum;
63  int niwelz;
64  int nswelz;
65  int nxwelz;
66  int nzwelz;
67  int niconz;
68  int nsconz;
69  int nxconz;
70  int nigrpz;
71  int nsgrpz;
72  int nxgrpz;
73  int nzgrpz;
74  int ncamax;
75  int niaaqz;
76  int nsaaqz;
77  int nxaaqz;
78  int nicaqz;
79  int nscaqz;
80  int nacaqz;
81  int tstep;
82  int report_step;
83  int histctl_override;
84  int newtmx;
85  int newtmn;
86  int litmax;
87  int litmin;
88  int mxwsit;
89  int mxwpit;
90  int version;
91  int iprog;
92  int nsegwl;
93  int nswlmx;
94  int nsegmx;
95  int nlbrmx;
96  int nisegz;
97  int nrsegz;
98  int nilbrz;
99  int ntfip ;
100  int nmfipr;
101  int ngroup;
102  int nwgmax;
103  int nfield_udq;
104  int ngroup_udq;
105  int nsegment_udq;
106  int nwell_udq;
107  int num_action;
108  int guide_rate_nominated_phase;
109  int max_wlist;
110 
111  bool e300_radial;
112  bool e100_radial;
113  bool enable_hysteris;
114  bool enable_msw;
115  bool is_live_oil;
116  bool is_wet_gas;
117  bool const_comp_oil;
118  bool dir_relperm;
119  bool reversible_relperm;
120  bool endscale;
121  bool dir_eps;
122  bool reversible_eps;
123  bool alt_eps;
124  bool group_control_active;
125  bool glift_all_nupcol;
126 
127  double next_timestep1;
128  double next_timestep2;
129  double max_timestep;
130  double guide_rate_a;
131  double guide_rate_b;
132  double guide_rate_c;
133  double guide_rate_d;
134  double guide_rate_e;
135  double guide_rate_f;
136  double guide_rate_delay;
137  double guide_rate_damping;
138  double udq_range;
139  double udq_undefined;
140  double udq_eps;
141  double glift_min_wait;
142  double glift_rate_delta;
143  double glift_min_eco_grad;
144 
145  std::time_t sim_time() const;
146  std::pair<std::time_t, std::size_t> restart_info() const;
147  int num_udq() const;
148 };
149 
150 } // namespace Opm::RestartIO
151 
152 #endif // RST_HEADER
Definition: header.hpp:38
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:30
Definition: Runspec.hpp:608
Definition: UnitSystem.hpp:34
Definition: Aquancon.hpp:40