opm-common
PAvg.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
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 PAVE_HPP
21 #define PAVE_HPP
22 
23 namespace Opm {
24  class DeckRecord;
25 } // Namespace Opm
26 
27 namespace Opm {
28 
29 class PAvg
30 {
31 public:
32  enum class DepthCorrection
33  {
34  WELL = 1,
35  RES = 2,
36  NONE = 3,
37  };
38 
39  PAvg();
40  explicit PAvg(const DeckRecord& record);
41  PAvg(double inner_weight,
42  double conn_weight,
43  DepthCorrection depth_correction,
44  bool use_open_connections);
45 
46  static PAvg serializationTestObject();
47 
48  double inner_weight() const
49  {
50  return this->m_inner_weight;
51  }
52 
53  double conn_weight() const
54  {
55  return this->m_conn_weight;
56  }
57 
58  bool open_connections() const
59  {
60  return this->m_open_connections;
61  }
62 
63  DepthCorrection depth_correction() const
64  {
65  return this->m_depth_correction;
66  }
67 
68  bool use_porv() const;
69 
70  template <class Serializer>
71  void serializeOp(Serializer& serializer)
72  {
73  serializer(this->m_inner_weight);
74  serializer(this->m_conn_weight);
75  serializer(this->m_depth_correction);
76  serializer(this->m_open_connections);
77  }
78 
79  bool operator==(const PAvg& other) const;
80  bool operator!=(const PAvg& other) const;
81 
82 private:
83  double m_inner_weight;
84  double m_conn_weight;
85  DepthCorrection m_depth_correction;
86  bool m_open_connections;
87 };
88 
89 } // namespace Opm
90 
91 #endif // PAVE_HPP
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:30
Definition: PAvg.hpp:29
Definition: DeckRecord.hpp:32
Class for (de-)serializing.
Definition: Serializer.hpp:94