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/FoamConfig.hpp>
25 
26 #include <string>
27 
28 namespace Opm {
29 
30  class Deck;
31  class Phases;
32 
33 } // namespace Opm
34 
35 namespace Opm {
36 
38  class InitConfig
39  {
40  public:
45  InitConfig() = default;
46 
53  InitConfig(const Deck& deck, const Phases& phases);
54 
57 
68  void setRestart(const std::string& root, int step);
69 
72  bool restartRequested() const;
73 
77  int getRestartStep() const;
78 
83  const std::string& getRestartRootName() const;
84 
91  const std::string& getRestartRootNameInput() const;
92 
94  bool hasEquil() const;
95 
99  const Equil& getEquil() const;
100 
105  bool hasStressEquil() const;
106 
110  const StressEquil& getStressEquil() const;
111 
115  bool hasGravity() const
116  {
117  return this->m_gravity;
118  }
119 
121  bool hasFoamConfig() const;
122 
126  const FoamConfig& getFoamConfig() const;
127 
131  bool filleps() const
132  {
133  return this->m_filleps;
134  }
135 
143  bool operator==(const InitConfig& config) const;
144 
159  static bool rst_cmp(const InitConfig& full_config,
160  const InitConfig& rst_config);
161 
167  template<class Serializer>
168  void serializeOp(Serializer& serializer)
169  {
170  serializer(equil);
171  serializer(stress_equil);
172  serializer(foamconfig);
173  serializer(m_filleps);
174  serializer(m_gravity);
175  serializer(m_restartRequested);
176  serializer(m_restartStep);
177  serializer(m_restartRootName);
178  serializer(m_restartRootNameInput);
179  }
180 
181  private:
183  Equil equil{};
184 
186  StressEquil stress_equil{};
187 
189  FoamConfig foamconfig{};
190 
192  bool m_filleps{false};
193 
197  bool m_gravity{true};
198 
200  bool m_restartRequested{false};
201 
205  int m_restartStep{0};
206 
211  std::string m_restartRootName{};
212 
217  std::string m_restartRootNameInput{};
218 
224  void parseRestartKeyword(const Deck& deck);
225  };
226 
227 } // namespace Opm
228 
229 #endif // OPM_INIT_CONFIG_HPP
InitConfig()=default
Default constructor.
const StressEquil & getStressEquil() const
Mechanical stress equilibration specification.
Definition: InitConfig.cpp:144
bool hasEquil() const
Whether or not run uses initialisation by equilibration.
Definition: InitConfig.cpp:123
Settings for model initialisation.
Definition: InitConfig.hpp:38
bool hasFoamConfig() const
Whether or not run includes foam effects.
Definition: InitConfig.cpp:155
bool operator==(const InitConfig &config) const
Equality predicate.
Definition: InitConfig.cpp:172
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:161
bool hasStressEquil() const
Whether or not run initialises its mechanical stresses by an equilibration procedure (STREQUIL keywor...
Definition: InitConfig.cpp:139
bool restartRequested() const
Whether or not this is a restarted simulation run (input uses the RESTART keyword).
Definition: InitConfig.cpp:103
void setRestart(const std::string &root, int step)
Assign simulation restart information.
Definition: InitConfig.cpp:96
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:113
bool filleps() const
Whether or not the run specifies the FILLEPS keyword that requests expanded end-point scaling arrays ...
Definition: InitConfig.hpp:131
static bool rst_cmp(const InitConfig &full_config, const InitConfig &rst_config)
Equality predicate for objects created from restart file information.
Definition: InitConfig.cpp:186
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:118
Definition: Deck.hpp:46
bool hasGravity() const
Whether or not run includes gravity effects.
Definition: InitConfig.hpp:115
Class for (de-)serializing.
Definition: Serializer.hpp:94
static InitConfig serializationTestObject()
Create a serialisation test object.
Definition: InitConfig.cpp:80
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:168
const Equil & getEquil() const
Equilibration specification.
Definition: InitConfig.cpp:128
Definition: Runspec.hpp:45
int getRestartStep() const
Report step from which to restart the simulation.
Definition: InitConfig.cpp:108