PlyrockTable.hpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2014 by Andreas Lauser
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 #ifndef OPM_PARSER_PLYROCK_TABLE_HPP
20 #define OPM_PARSER_PLYROCK_TABLE_HPP
21 
22 #include "SimpleTable.hpp"
23 
24 namespace Opm {
25  // forward declaration
26  class TableManager;
27 
28  class PlyrockTable : public SimpleTable {
29  public:
30  friend class TableManager;
31  PlyrockTable() = default;
32 
33 
35  {
36  createColumns(std::vector<std::string>{
37  "DeadPoreVolume",
38  "ResidualResistanceFactor",
39  "RockDensityFactor",
40  "AdsorbtionIndex",
41  "MaxAdsorbtion"
42  });
43 
44  for (size_t colIdx = 0; colIdx < record->size(); colIdx++) {
45  auto item = record->getItem( colIdx );
46  m_columns[colIdx].push_back( item->getSIDouble(0) );
47  m_valueDefaulted[colIdx].push_back( item->defaultApplied(0) );
48  }
49  }
50 
54 
55  // since this keyword is not necessarily monotonic, it cannot be evaluated!
56  //using SimpleTable::evaluate;
57 
58  const std::vector<double> &getDeadPoreVolumeColumn() const
59  { return SimpleTable::getColumn(0); }
60 
61  const std::vector<double> &getResidualResistanceFactorColumn() const
62  { return SimpleTable::getColumn(1); }
63 
64  const std::vector<double> &getRockDensityFactorColumn() const
65  { return SimpleTable::getColumn(2); }
66 
67  // is column is actually an integer, but this is not yet
68  // supported by opm-parser (yet?) as it would require quite a
69  // few changes in the table support classes (read: it would
70  // probably require a lot of template vodoo) and some in the
71  // JSON-to-C conversion code. In the meantime, the index is
72  // just a double which can be converted to an integer in the
73  // calling code. (Make sure, that you don't interpolate
74  // indices, though!)
75  const std::vector<double> &getAdsorbtionIndexColumn() const
76  { return SimpleTable::getColumn(3); }
77 
78  const std::vector<double> &getMaxAdsorbtionColumn() const
79  { return SimpleTable::getColumn(4); }
80  };
81 }
82 
83 #endif
Definition: PlyrockTable.hpp:28
size_t numColumns() const
Definition: Deck.hpp:29
std::vector< std::vector< double > > m_columns
Definition: SimpleTable.hpp:87
void createColumns(const std::vector< std::string > &columnNames)
const std::vector< double > & getColumn(const std::string &name) const
std::vector< std::vector< bool > > m_valueDefaulted
Definition: SimpleTable.hpp:88
Definition: TableManager.hpp:66
const std::vector< double > & getAdsorbtionIndexColumn() const
Definition: PlyrockTable.hpp:75
const std::vector< double > & getMaxAdsorbtionColumn() const
Definition: PlyrockTable.hpp:78
const std::vector< double > & getRockDensityFactorColumn() const
Definition: PlyrockTable.hpp:64
PlyrockTable()=default
void init(Opm::DeckRecordConstPtr record)
Definition: PlyrockTable.hpp:34
const std::vector< double > & getDeadPoreVolumeColumn() const
Definition: PlyrockTable.hpp:58
size_t numRows() const
static size_t numTables(Opm::DeckKeywordConstPtr keyword)
Returns the number of tables in a keyword.
const std::vector< double > & getResidualResistanceFactorColumn() const
Definition: PlyrockTable.hpp:61
std::shared_ptr< const DeckRecord > DeckRecordConstPtr
Definition: DeckRecord.hpp:54
Definition: SimpleTable.hpp:32