My Project
AICD.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 AICD_HPP_HEADER_INCLUDED
21 #define AICD_HPP_HEADER_INCLUDED
22 
23 #include <map>
24 #include <utility>
25 #include <vector>
26 #include <string>
27 
28 #include <opm/parser/eclipse/EclipseState/Schedule/MSW/SICD.hpp>
29 
30 namespace Opm {
31 
32  class DeckRecord;
33  class DeckKeyword;
34 
35  class AutoICD : public SICD {
36  public:
37  AutoICD() = default;
38  AutoICD(const DeckRecord& record);
39 
40  static AutoICD serializeObject();
41 
42  // the function will return a map
43  // [
44  // "WELL1" : [<seg1, aicd1>, <seg2, aicd2> ...]
45  // ....
46  static std::map<std::string, std::vector<std::pair<int, AutoICD> > >
47  fromWSEGAICD(const DeckKeyword& wsegaicd);
48 
49  bool operator==(const AutoICD& data) const;
50 
51  template<class Serializer>
52  void serializeOp(Serializer& serializer)
53  {
54  this->SICD::serializeOp(serializer);
55  serializer(m_flow_rate_exponent);
56  serializer(m_visc_exponent);
57  serializer(m_oil_density_exponent);
58  serializer(m_water_density_exponent);
59  serializer(m_gas_density_exponent);
60  serializer(m_oil_viscosity_exponent);
61  serializer(m_water_viscosity_exponent);
62  serializer(m_gas_viscosity_exponent);
63  }
64 
65  double flowRateExponent() const;
66  double viscExponent() const;
67  double oilDensityExponent() const;
68  double waterDensityExponent() const;
69  double gasDensityExponent() const;
70  double oilViscExponent() const;
71  double waterViscExponent() const;
72  double gasViscExponent() const;
73 
74  private:
75  double m_flow_rate_exponent;
76  double m_visc_exponent;
77  double m_oil_density_exponent;
78  double m_water_density_exponent;
79  double m_gas_density_exponent;
80  double m_oil_viscosity_exponent;
81  double m_water_viscosity_exponent;
82  double m_gas_viscosity_exponent;
83  };
84 }
85 
86 #endif
Definition: AICD.hpp:35
Definition: DeckKeyword.hpp:36
Definition: DeckRecord.hpp:32
Definition: SICD.hpp:37
Definition: Serializer.hpp:38
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:29