opm-common
InitConfig.hpp
1 /*
2  Copyright 2015 Statoil 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 OPM_INIT_CONFIG_HPP
21 #define OPM_INIT_CONFIG_HPP
22 
23 #include <opm/input/eclipse/EclipseState/InitConfig/Equil.hpp>
24 #include <opm/input/eclipse/EclipseState/InitConfig/FieldSep.hpp>
25 #include <opm/input/eclipse/EclipseState/InitConfig/FoamConfig.hpp>
26 
27 #include <string>
28 
29 namespace Opm {
30 
31  class Deck;
32  class Phases;
33 
34 } // namespace Opm
35 
36 namespace Opm {
37 
39  class InitConfig
40  {
41  public:
46  InitConfig() = default;
47 
55  InitConfig(const Deck& deck, const Phases& phases, bool compositional);
56 
59 
70  void setRestart(const std::string& root, int step);
71 
74  bool restartRequested() const;
75 
79  int getRestartStep() const;
80 
85  const std::string& getRestartRootName() const;
86 
93  const std::string& getRestartRootNameInput() const;
94 
96  bool hasEquil() const;
97 
101  const Equil& getEquil() const;
102 
105  bool hasFieldSep() const;
106 
110  const FieldSep& getFieldSep() const;
111 
116  bool hasStressEquil() const;
117 
121  const StressEquil& getStressEquil() const;
122 
126  bool hasGravity() const
127  {
128  return this->m_gravity;
129  }
130 
132  bool hasFoamConfig() const;
133 
137  const FoamConfig& getFoamConfig() const;
138 
142  bool filleps() const
143  {
144  return this->m_filleps;
145  }
146 
154  bool operator==(const InitConfig& config) const;
155 
170  static bool rst_cmp(const InitConfig& full_config,
171  const InitConfig& rst_config);
172 
178  template<class Serializer>
179  void serializeOp(Serializer& serializer)
180  {
181  serializer(equil);
182  serializer(fieldsep);
183  serializer(stress_equil);
184  serializer(foamconfig);
185  serializer(m_filleps);
186  serializer(m_gravity);
187  serializer(m_restartRequested);
188  serializer(m_restartStep);
189  serializer(m_restartRootName);
190  serializer(m_restartRootNameInput);
191  }
192 
193  private:
195  Equil equil{};
196 
198  FieldSep fieldsep{};
199 
201  StressEquil stress_equil{};
202 
204  FoamConfig foamconfig{};
205 
207  bool m_filleps{false};
208 
212  bool m_gravity{true};
213 
215  bool m_restartRequested{false};
216 
220  int m_restartStep{0};
221 
226  std::string m_restartRootName{};
227 
232  std::string m_restartRootNameInput{};
233 
239  void parseRestartKeyword(const Deck& deck);
240  };
241 
242 } // namespace Opm
243 
244 #endif // OPM_INIT_CONFIG_HPP
InitConfig()=default
Default constructor.
const StressEquil & getStressEquil() const
Mechanical stress equilibration specification.
Definition: InitConfig.cpp:174
bool hasEquil() const
Whether or not run uses initialisation by equilibration.
Definition: InitConfig.cpp:137
Settings for model initialisation.
Definition: InitConfig.hpp:39
bool hasFoamConfig() const
Whether or not run includes foam effects.
Definition: InitConfig.cpp:185
bool operator==(const InitConfig &config) const
Equality predicate.
Definition: InitConfig.cpp:202
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:30
const FoamConfig & getFoamConfig() const
Run&#39;s foam configuration.
Definition: InitConfig.cpp:191
bool hasStressEquil() const
Whether or not run initialises its mechanical stresses by an equilibration procedure (STREQUIL keywor...
Definition: InitConfig.cpp:169
bool restartRequested() const
Whether or not this is a restarted simulation run (input uses the RESTART keyword).
Definition: InitConfig.cpp:117
bool hasFieldSep() const
Whether or not run specifies field separator stages (FIELDSEP keyword).
Definition: InitConfig.cpp:153
void setRestart(const std::string &root, int step)
Assign simulation restart information.
Definition: InitConfig.cpp:110
const std::string & getRestartRootName() const
Full path to run&#39;s restart input (i.e., run&#39;s initial pressures, saturations, Rs, &c)...
Definition: InitConfig.cpp:127
bool filleps() const
Whether or not the run specifies the FILLEPS keyword that requests expanded end-point scaling arrays ...
Definition: InitConfig.hpp:142
static bool rst_cmp(const InitConfig &full_config, const InitConfig &rst_config)
Equality predicate for objects created from restart file information.
Definition: InitConfig.cpp:217
A multi-stage field separator (the FIELDSEP keyword).
Definition: FieldSep.hpp:100
const std::string & getRestartRootNameInput() const
Relative path to run&#39;s restart input (i.e., run&#39;s initial pressures, saturations, Rs...
Definition: InitConfig.cpp:132
const FieldSep & getFieldSep() const
Field separator specification.
Definition: InitConfig.cpp:158
Definition: Deck.hpp:46
bool hasGravity() const
Whether or not run includes gravity effects.
Definition: InitConfig.hpp:126
Class for (de-)serializing.
Definition: Serializer.hpp:95
static InitConfig serializationTestObject()
Create a serialisation test object.
Definition: InitConfig.cpp:93
Foam behaviour data for all SATNUM regions.
Definition: FoamConfig.hpp:72
void serializeOp(Serializer &serializer)
Convert between byte array and object representation.
Definition: InitConfig.hpp:179
const Equil & getEquil() const
Equilibration specification.
Definition: InitConfig.cpp:142
Definition: Runspec.hpp:45
int getRestartStep() const
Report step from which to restart the simulation.
Definition: InitConfig.cpp:122