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
28namespace Opm {
29class UnitSystem;
30
31namespace RestartIO {
32
33struct 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:434
Definition: UnitSystem.hpp:33
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:30
Definition: header.hpp:33