opm-common
CarfinManager.hpp
1 /*
2  Copyright 2022 Equinor
3  This file is part of the Open Porous Media project (OPM).
4  OPM is free software: you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation, either version 3 of the License, or
7  (at your option) any later version.
8  OPM is distributed in the hope that it will be useful,
9  but WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  GNU General Public License for more details.
12  You should have received a copy of the GNU General Public License
13  along with OPM. If not, see <http://www.gnu.org/licenses/>.
14 */
15 
16 #ifndef CARFINMANAGER_HPP_
17 #define CARFINMANAGER_HPP_
18 
19 #include <opm/input/eclipse/EclipseState/Grid/Carfin.hpp>
20 #include <opm/input/eclipse/EclipseState/Grid/GridDims.hpp>
21 
22 #include <memory>
23 #include <vector>
24 
25 namespace Opm {
26 
28  {
29  public:
30  explicit CarfinManager(const GridDims& gridDims,
31  Carfin::IsActive isActive,
32  Carfin::ActiveIdx activeIdx);
33 
34  void setInputCarfin(const std::string& name,
35  int i1, int i2,
36  int j1, int j2,
37  int k1, int k2,
38  int nx, int ny, int nz);
39  void readKeywordCarfin(const std::string& name,
40  int i1, int i2,
41  int j1, int j2,
42  int k1, int k2,
43  int nx, int ny, int nz);
44 
45  void endSection();
46  void endInputCarfin();
47  void endKeyword();
48 
49  const Carfin& getActiveCarfin() const;
50  const std::vector<Carfin::cell_index>& index_list() const;
51 
52  private:
53  GridDims gridDims_{};
54  Carfin::IsActive isActive_{};
55  Carfin::ActiveIdx activeIdx_{};
56 
57  std::unique_ptr<Carfin> m_globalCarfin;
58  std::unique_ptr<Carfin> m_inputCarfin;
59  std::unique_ptr<Carfin> m_keywordCarfin;
60 
61  std::unique_ptr<Carfin>
62  makeLgr(const std::string& name,
63  int i1, int i2,
64  int j1, int j2,
65  int k1, int k2,
66  int nx, int ny, int nz) const;
67  };
68 }
69 
70 
71 #endif
Definition: Carfin.hpp:33
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:30
Definition: CarfinManager.hpp:27
Definition: GridDims.hpp:30