20 #ifndef OPM_TABLE_MANAGER_HPP
21 #define OPM_TABLE_MANAGER_HPP
72 bool hasTables(
const std::string& tableName )
const;
75 std::shared_ptr<const Tabdims>
getTabdims()
const;
112 TableContainer& forceGetTables(
const std::string& tableName ,
size_t numTables);
114 void complainAboutAmbiguousKeyword(
const Deck& deck,
const std::string& keywordName)
const;
116 void addTables(
const std::string& tableName ,
size_t numTables);
117 void initSimpleTables(
const Deck& deck);
118 void initRTempTables(
const Deck& deck);
119 void initDims(
const Deck& deck);
120 void initRocktabTables(
const Deck& deck);
121 void initGasvisctTables(
const Deck& deck);
123 void initVFPProdTables(
const Deck& deck,
124 std::map<int, VFPProdTable>& tableMap);
126 void initVFPInjTables(
const Deck& deck,
127 std::map<int, VFPInjTable>& tableMap);
130 void initPlymaxTables(
const Deck& deck);
131 void initPlyrockTables(
const Deck& deck);
132 void initPlyshlogTables(
const Deck& deck);
134 template <
class TableType>
135 void initSimpleTableContainer(
const Deck& deck,
136 const std::string& keywordName,
137 const std::string& tableName,
142 auto& container = forceGetTables(tableName , numTables);
145 complainAboutAmbiguousKeyword(deck, keywordName);
149 const auto& tableKeyword = deck.
getKeyword(keywordName);
150 for (
size_t tableIdx = 0; tableIdx < tableKeyword->size(); ++tableIdx) {
151 const auto tableRecord = tableKeyword->getRecord( tableIdx );
152 const auto dataItem = tableRecord->getItem( 0 );
153 if (dataItem->size() > 0) {
154 std::shared_ptr<TableType> table = std::make_shared<TableType>();
155 table->init(dataItem);
156 container.addTable( tableIdx , table );
161 template <
class TableType>
162 void initSimpleTableContainer(
const Deck& deck,
163 const std::string& keywordName,
165 initSimpleTableContainer<TableType>(deck , keywordName , keywordName , numTables);
169 template <
class TableType>
170 void initSimpleTable(
const Deck& deck,
171 const std::string& keywordName,
172 std::vector<TableType>& tableVector) {
177 complainAboutAmbiguousKeyword(deck, keywordName);
181 const auto& tableKeyword = deck.
getKeyword(keywordName);
182 for (
size_t tableIdx = 0; tableIdx < tableKeyword->size(); ++tableIdx) {
183 const auto tableRecord = tableKeyword->getRecord( tableIdx );
184 const auto dataItem = tableRecord->getItem( 0 );
185 if (dataItem->size() == 0) {
189 std::string msg =
"The first table for keyword "+keywordName+
" must be explicitly defined! Ignoring keyword";
193 tableVector.push_back(tableVector.back());
197 tableVector.push_back(TableType());
198 tableVector[tableIdx].init(dataItem);
203 template <
class TableType>
204 void initFullTables(
const Deck& deck,
205 const std::string& keywordName,
206 std::vector<TableType>& tableVector) {
211 complainAboutAmbiguousKeyword(deck, keywordName);
215 const auto& tableKeyword = deck.
getKeyword(keywordName);
217 int numTables = TableType::numTables(tableKeyword);
218 for (
int tableIdx = 0; tableIdx < numTables; ++tableIdx) {
219 tableVector.push_back(TableType());
220 tableVector[tableIdx].init(tableKeyword, tableIdx);
224 std::map<std::string , TableContainer> m_simpleTables;
225 std::map<int, VFPProdTable> m_vfpprodTables;
226 std::map<int, VFPInjTable> m_vfpinjTables;
227 std::vector<PvtgTable> m_pvtgTables;
228 std::vector<PvtoTable> m_pvtoTables;
230 std::shared_ptr<Regdims> m_regdims;
231 std::shared_ptr<Tabdims> m_tabdims;
232 std::shared_ptr<Eqldims> m_eqldims;
const TableContainer & getGasvisctTables() const
const TableContainer & getPvdsTables() const
const TableContainer & getSlgofTables() const
const std::vector< PvtoTable > & getPvtoTables() const
Definition: TableContainer.hpp:31
const TableContainer & getPlyshlogTables() const
bool hasKeyword(DeckKeywordConstPtr keyword) const
const TableContainer & getImkrvdTables() const
TableManager(const Deck &deck)
const TableContainer & getSgfnTables() const
const TableContainer & getEnptvdTables() const
size_t numKeywords(const std::string &keyword) const
std::string fileMessage(const std::string &path, int line, const std::string &msg)
const TableContainer & getRocktabTables() const
const std::map< int, VFPProdTable > & getVFPProdTables() const
std::shared_ptr< const Tabdims > getTabdims() const
const TableContainer & getSof3Tables() const
Definition: TableManager.hpp:66
const TableContainer & getRvvdTables() const
const std::map< int, VFPInjTable > & getVFPInjTables() const
const TableContainer & getPlymaxTables() const
const TableContainer & getPvdoTables() const
bool hasTables(const std::string &tableName) const
const std::vector< PvtgTable > & getPvtgTables() const
const TableContainer & getWatvisctTables() const
const int64_t Warning
Definition: LogUtil.hpp:31
const TableContainer & getRtempvdTables() const
const TableContainer & getRsvdTables() const
const TableContainer & getSsfnTables() const
const TableContainer & getSof2Tables() const
static void addMessage(int64_t messageFlag, const std::string &message)
const TableContainer & getPvdgTables() const
const TableContainer & getImptvdTables() const
const TableContainer & getSwfnTables() const
const TableContainer & getSgofTables() const
const TableContainer & getOilvisctTables() const
const TableContainer & getPlydhflfTables() const
const TableContainer & getPlyrockTables() const
const TableContainer & getEnkrvdTables() const
DeckKeywordConstPtr getKeyword(const std::string &keyword, size_t index) const
const TableContainer & getSwofTables() const
const TableContainer & getPlyadsTables() const
const TableContainer & getSgwfnTables() const
const TableContainer & operator[](const std::string &tableName) const
const TableContainer & getTables(const std::string &tableName) const
const TableContainer & getPlyviscTables() const