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