Merge pull request #1066 from bska/uncouple-table-linearisation

Decouple Table Linearisation from LibECL
This commit is contained in:
Joakim Hove 2019-10-03 09:46:22 +02:00 committed by GitHub
commit 37203833b3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 234 additions and 155 deletions

View File

@ -651,6 +651,7 @@ if(ENABLE_ECL_OUTPUT)
opm/output/eclipse/VectorItems/intehead.hpp opm/output/eclipse/VectorItems/intehead.hpp
opm/output/eclipse/VectorItems/logihead.hpp opm/output/eclipse/VectorItems/logihead.hpp
opm/output/eclipse/VectorItems/msw.hpp opm/output/eclipse/VectorItems/msw.hpp
opm/output/eclipse/VectorItems/tabdims.hpp
opm/output/eclipse/VectorItems/well.hpp opm/output/eclipse/VectorItems/well.hpp
opm/output/eclipse/AggregateGroupData.hpp opm/output/eclipse/AggregateGroupData.hpp
opm/output/eclipse/AggregateConnectionData.hpp opm/output/eclipse/AggregateConnectionData.hpp

View File

@ -0,0 +1,76 @@
/*
Copyright (c) 2019 Equinor ASA
This file is part of the Open Porous Media project (OPM).
OPM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OPM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OPM. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef OPM_OUTPUT_ECLIPSE_VECTOR_TABDIMS_HPP
#define OPM_OUTPUT_ECLIPSE_VECTOR_TABDIMS_HPP
#include <vector>
namespace Opm { namespace RestartIO { namespace Helpers { namespace VectorItems {
namespace TabDims {
enum index : std::vector<int>::size_type {
// Number of elements in 'TAB' array
TabSize = 0,
// Oil PVT table
PvtoMainStart = 6,
PvtoCompStart = 7,
NumPvtoCompNodes = 8,
NumPvtoPressNodes = 9,
NumPvtoTables = 10,
// Water PVT table
PvtwStart = 11,
NumPvtwTables = 12,
// Gas PVT tables
PvtgMainStart = 13,
PvtgPressStart = 14,
NumPvtgCompNodes = 15,
NumPvtgPressNodes = 16,
NumPvtgTables = 17,
// Density tables
DensityTableStart = 18,
DensityNumTables = 19,
// SWFN tables
SwfnTableStart = 20,
SwfnNumSatNodes = 21,
SwfnNumTables = 22,
// SGFN tables
SgfnTableStart = 23,
SgfnNumSatNodes = 24,
SgfnNumTables = 25,
// SOFN tables
SofnTableStart = 26,
SofnNumSatNodes = 28,
SofnNumTables = 29,
// Size of TABDIMS array
TabDimsNumElems = 100,
};
} // namespace TabDims
}}}} // namespace Opm::RestartIO::Helpers::VectorItems
#endif // OPM_OUTPUT_ECLIPSE_VECTOR_TABDIMS_HPP

View File

@ -21,8 +21,6 @@
#include <opm/output/eclipse/Tables.hpp> #include <opm/output/eclipse/Tables.hpp>
#include <ert/ecl/ecl_kw_magic.h>
#include <opm/parser/eclipse/EclipseState/EclipseState.hpp> #include <opm/parser/eclipse/EclipseState/EclipseState.hpp>
#include <opm/parser/eclipse/EclipseState/Runspec.hpp> #include <opm/parser/eclipse/EclipseState/Runspec.hpp>
#include <opm/parser/eclipse/EclipseState/Tables/FlatTable.hpp> // PVTW, PVCDO #include <opm/parser/eclipse/EclipseState/Tables/FlatTable.hpp> // PVTW, PVCDO
@ -40,6 +38,7 @@
#include <opm/parser/eclipse/EclipseState/Tables/TableContainer.hpp> #include <opm/parser/eclipse/EclipseState/Tables/TableContainer.hpp>
#include <opm/parser/eclipse/Units/UnitSystem.hpp> #include <opm/parser/eclipse/Units/UnitSystem.hpp>
#include <opm/output/eclipse/VectorItems/tabdims.hpp>
#include <opm/output/eclipse/LinearisedOutputTable.hpp> #include <opm/output/eclipse/LinearisedOutputTable.hpp>
#include <algorithm> #include <algorithm>
@ -51,7 +50,10 @@
#include <utility> #include <utility>
#include <vector> #include <vector>
using Ix = ::Opm::RestartIO::Helpers::VectorItems::TabDims::index;
namespace { namespace {
/// Convenience type alias for a callable entity that extracts the /// Convenience type alias for a callable entity that extracts the
/// independent and primary dependent variates of a single property /// independent and primary dependent variates of a single property
/// function table into a linearised output table. Calling the function /// function table into a linearised output table. Calling the function
@ -1960,7 +1962,7 @@ namespace Opm {
Tables::Tables(const UnitSystem& units0) Tables::Tables(const UnitSystem& units0)
: units (units0) : units (units0)
, m_tabdims(TABDIMS_SIZE, 0) , m_tabdims(Ix::TabDimsNumElems, 0)
{ {
// Initialize subset of base pointers and dimensions to 1 to honour // Initialize subset of base pointers and dimensions to 1 to honour
// requirements of TABDIMS protocol. The magic constant 59 is // requirements of TABDIMS protocol. The magic constant 59 is
@ -1975,7 +1977,7 @@ namespace Opm {
this->data.insert(this->data.end(), new_data.begin(), new_data.end()); this->data.insert(this->data.end(), new_data.begin(), new_data.end());
this->m_tabdims[ TABDIMS_TAB_SIZE_ITEM ] = this->data.size(); this->m_tabdims[ Ix::TabSize ] = this->data.size();
} }
void Tables::addDensity( const DensityTable& density) void Tables::addDensity( const DensityTable& density)
@ -1985,14 +1987,14 @@ namespace Opm {
const size_t num_columns = density[0].size; const size_t num_columns = density[0].size;
std::vector<double> densityData( density.size() * num_columns , default_value); std::vector<double> densityData( density.size() * num_columns , default_value);
this->m_tabdims[ TABDIMS_NTDENS_ITEM ] = density.size(); this->m_tabdims[Ix::DensityNumTables] = density.size();
for (size_t table_num = 0; table_num < density.size(); table_num++) { for (size_t table_num = 0; table_num < density.size(); table_num++) {
const auto& record = density[table_num]; const auto& record = density[table_num];
densityData[ table_num * num_columns ] = this->units.from_si( UnitSystem::measure::density , record.oil); densityData[ table_num * num_columns ] = this->units.from_si( UnitSystem::measure::density , record.oil);
densityData[ table_num * num_columns + 1] = this->units.from_si( UnitSystem::measure::density , record.water); densityData[ table_num * num_columns + 1] = this->units.from_si( UnitSystem::measure::density , record.water);
densityData[ table_num * num_columns + 2] = this->units.from_si( UnitSystem::measure::density , record.gas); densityData[ table_num * num_columns + 2] = this->units.from_si( UnitSystem::measure::density , record.gas);
} }
this->addData( TABDIMS_IBDENS_OFFSET_ITEM , densityData ); this->addData(Ix::DensityTableStart, densityData );
} }
} }
@ -2062,9 +2064,9 @@ namespace Opm {
const auto sgfn = const auto sgfn =
SatFunc::Gas::fromSGOF(nssfun, this->units, tables); SatFunc::Gas::fromSGOF(nssfun, this->units, tables);
this->addData(TABDIMS_IBSGFN_OFFSET_ITEM, sgfn); this->addData(Ix::SgfnTableStart, sgfn);
this->m_tabdims[TABDIMS_NSSGFN_ITEM] = nssfun; this->m_tabdims[Ix::SgfnNumSatNodes] = nssfun;
this->m_tabdims[TABDIMS_NTSGFN_ITEM] = tables.size(); this->m_tabdims[Ix::SgfnNumTables] = tables.size();
} }
if (oil) { if (oil) {
@ -2074,9 +2076,9 @@ namespace Opm {
const auto sofn = const auto sofn =
SatFunc::Oil::TwoPhase::fromSGOF(nssfun, tables); SatFunc::Oil::TwoPhase::fromSGOF(nssfun, tables);
this->addData(TABDIMS_IBSOFN_OFFSET_ITEM, sofn); this->addData(Ix::SofnTableStart, sofn);
this->m_tabdims[TABDIMS_NSSOFN_ITEM] = nssfun; this->m_tabdims[Ix::SofnNumSatNodes] = nssfun;
this->m_tabdims[TABDIMS_NTSOFN_ITEM] = tables.size(); this->m_tabdims[Ix::SofnNumTables] = tables.size();
} }
else if (wat && !gas) { // 2p O/W System else if (wat && !gas) { // 2p O/W System
const auto& tables = tabMgr.getSwofTables(); const auto& tables = tabMgr.getSwofTables();
@ -2084,9 +2086,9 @@ namespace Opm {
const auto sofn = const auto sofn =
SatFunc::Oil::TwoPhase::fromSWOF(nssfun, tables); SatFunc::Oil::TwoPhase::fromSWOF(nssfun, tables);
this->addData(TABDIMS_IBSOFN_OFFSET_ITEM, sofn); this->addData(Ix::SofnTableStart, sofn);
this->m_tabdims[TABDIMS_NSSOFN_ITEM] = nssfun; this->m_tabdims[Ix::SofnNumSatNodes] = nssfun;
this->m_tabdims[TABDIMS_NTSOFN_ITEM] = tables.size(); this->m_tabdims[Ix::SofnNumTables] = tables.size();
} }
else { // 3p G/O/W System else { // 3p G/O/W System
const auto& sgof = tabMgr.getSgofTables(); const auto& sgof = tabMgr.getSgofTables();
@ -2099,9 +2101,9 @@ namespace Opm {
const auto sofn = SatFunc::Oil::ThreePhase:: const auto sofn = SatFunc::Oil::ThreePhase::
fromSGOFandSWOF(numRows, sgof, swof); fromSGOFandSWOF(numRows, sgof, swof);
this->addData(TABDIMS_IBSOFN_OFFSET_ITEM, sofn); this->addData(Ix::SofnTableStart, sofn);
this->m_tabdims[TABDIMS_NSSOFN_ITEM] = numRows; this->m_tabdims[Ix::SofnNumSatNodes] = numRows;
this->m_tabdims[TABDIMS_NTSOFN_ITEM] = sgof.size(); this->m_tabdims[Ix::SofnNumTables] = sgof.size();
} }
} }
@ -2111,9 +2113,9 @@ namespace Opm {
const auto swfn = const auto swfn =
SatFunc::Water::fromSWOF(nssfun, this->units, tables); SatFunc::Water::fromSWOF(nssfun, this->units, tables);
this->addData(TABDIMS_IBSWFN_OFFSET_ITEM, swfn); this->addData(Ix::SwfnTableStart, swfn);
this->m_tabdims[TABDIMS_NSSWFN_ITEM] = nssfun; this->m_tabdims[Ix::SwfnNumSatNodes] = nssfun;
this->m_tabdims[TABDIMS_NTSWFN_ITEM] = tables.size(); this->m_tabdims[Ix::SwfnNumTables] = tables.size();
} }
} }
@ -2132,9 +2134,9 @@ namespace Opm {
const auto sgfn = const auto sgfn =
SatFunc::Gas::fromSGFN(nssfun, this->units, tables); SatFunc::Gas::fromSGFN(nssfun, this->units, tables);
this->addData(TABDIMS_IBSGFN_OFFSET_ITEM, sgfn); this->addData(Ix::SgfnTableStart, sgfn);
this->m_tabdims[TABDIMS_NSSGFN_ITEM] = nssfun; this->m_tabdims[Ix::SgfnNumSatNodes] = nssfun;
this->m_tabdims[TABDIMS_NTSGFN_ITEM] = tables.size(); this->m_tabdims[Ix::SgfnNumTables] = tables.size();
} }
if (oil) { if (oil) {
@ -2144,9 +2146,9 @@ namespace Opm {
const auto sofn = const auto sofn =
SatFunc::Oil::TwoPhase::fromSOF2(nssfun, tables); SatFunc::Oil::TwoPhase::fromSOF2(nssfun, tables);
this->addData(TABDIMS_IBSOFN_OFFSET_ITEM, sofn); this->addData(Ix::SofnTableStart, sofn);
this->m_tabdims[TABDIMS_NSSOFN_ITEM] = nssfun; this->m_tabdims[Ix::SofnNumSatNodes] = nssfun;
this->m_tabdims[TABDIMS_NTSOFN_ITEM] = tables.size(); this->m_tabdims[Ix::SofnNumTables] = tables.size();
} }
else { // 3p G/O/W System else { // 3p G/O/W System
const auto& tables = tabMgr.getSof3Tables(); const auto& tables = tabMgr.getSof3Tables();
@ -2154,9 +2156,9 @@ namespace Opm {
const auto sofn = const auto sofn =
SatFunc::Oil::ThreePhase::fromSOF3(nssfun, tables); SatFunc::Oil::ThreePhase::fromSOF3(nssfun, tables);
this->addData(TABDIMS_IBSOFN_OFFSET_ITEM, sofn); this->addData(Ix::SofnTableStart, sofn);
this->m_tabdims[TABDIMS_NSSOFN_ITEM] = nssfun; this->m_tabdims[Ix::SofnNumSatNodes] = nssfun;
this->m_tabdims[TABDIMS_NTSOFN_ITEM] = tables.size(); this->m_tabdims[Ix::SofnNumTables] = tables.size();
} }
} }
@ -2166,9 +2168,9 @@ namespace Opm {
const auto swfn = const auto swfn =
SatFunc::Water::fromSWFN(nssfun, this->units, tables); SatFunc::Water::fromSWFN(nssfun, this->units, tables);
this->addData(TABDIMS_IBSWFN_OFFSET_ITEM, swfn); this->addData(Ix::SwfnTableStart, swfn);
this->m_tabdims[TABDIMS_NSSWFN_ITEM] = nssfun; this->m_tabdims[Ix::SwfnNumSatNodes] = nssfun;
this->m_tabdims[TABDIMS_NTSWFN_ITEM] = tables.size(); this->m_tabdims[Ix::SwfnNumTables] = tables.size();
} }
} }
@ -2203,12 +2205,12 @@ namespace Opm {
const auto pressData = PVTFunc::Gas:: const auto pressData = PVTFunc::Gas::
pressureNodes(numPrimary, this->units, pvtg); pressureNodes(numPrimary, this->units, pvtg);
this->addData(TABDIMS_IBPVTG_OFFSET_ITEM, tableData); this->addData(Ix::PvtgMainStart, tableData);
this->addData(TABDIMS_JBPVTG_OFFSET_ITEM, pressData); this->addData(Ix::PvtgPressStart, pressData);
this->m_tabdims[TABDIMS_NPPVTG_ITEM] = numPrimary; this->m_tabdims[Ix::NumPvtgPressNodes] = numPrimary;
this->m_tabdims[TABDIMS_NRPVTG_ITEM] = numCompNodes; this->m_tabdims[Ix::NumPvtgCompNodes] = numCompNodes;
this->m_tabdims[TABDIMS_NTPVTG_ITEM] = pvtg.size(); this->m_tabdims[Ix::NumPvtgTables] = pvtg.size();
} }
else { else {
// Dry gas, pressure dependent compressibility. // Dry gas, pressure dependent compressibility.
@ -2219,9 +2221,9 @@ namespace Opm {
const auto tableData = PVTFunc::Gas::fromPVDG(numRows, this->units, pvdg); const auto tableData = PVTFunc::Gas::fromPVDG(numRows, this->units, pvdg);
this->addData(TABDIMS_IBPVTG_OFFSET_ITEM, tableData); this->addData(Ix::PvtgMainStart, tableData);
this->m_tabdims[TABDIMS_NPPVTG_ITEM] = numRows; this->m_tabdims[Ix::NumPvtgPressNodes] = numRows;
this->m_tabdims[TABDIMS_NTPVTG_ITEM] = pvdg.size(); this->m_tabdims[Ix::NumPvtgTables] = pvdg.size();
} }
} }
@ -2257,12 +2259,12 @@ namespace Opm {
const auto rsData = PVTFunc::Oil:: const auto rsData = PVTFunc::Oil::
compositionNodes(numCompNodes, this->units, pvto); compositionNodes(numCompNodes, this->units, pvto);
this->addData(TABDIMS_IBPVTO_OFFSET_ITEM, tableData); this->addData(Ix::PvtoMainStart, tableData);
this->addData(TABDIMS_JBPVTO_OFFSET_ITEM, rsData); this->addData(Ix::PvtoCompStart, rsData);
this->m_tabdims[TABDIMS_NPPVTO_ITEM] = numRows; this->m_tabdims[Ix::NumPvtoPressNodes] = numRows;
this->m_tabdims[TABDIMS_NRPVTO_ITEM] = numCompNodes; this->m_tabdims[Ix::NumPvtoCompNodes] = numCompNodes;
this->m_tabdims[TABDIMS_NTPVTO_ITEM] = pvto.size(); this->m_tabdims[Ix::NumPvtoTables] = pvto.size();
} }
else if (hasPVDO) { else if (hasPVDO) {
// Dead oil, pressure dependent compressibility. // Dead oil, pressure dependent compressibility.
@ -2273,9 +2275,9 @@ namespace Opm {
const auto tableData = PVTFunc::Oil::fromPVDO(numRows, this->units, pvdo); const auto tableData = PVTFunc::Oil::fromPVDO(numRows, this->units, pvdo);
this->addData(TABDIMS_IBPVTO_OFFSET_ITEM, tableData); this->addData(Ix::PvtoMainStart, tableData);
this->m_tabdims[TABDIMS_NPPVTO_ITEM] = numRows; this->m_tabdims[Ix::NumPvtoPressNodes] = numRows;
this->m_tabdims[TABDIMS_NTPVTO_ITEM] = pvdo.size(); this->m_tabdims[Ix::NumPvtoTables] = pvdo.size();
} }
else { else {
// Dead oil, constant compressibility. // Dead oil, constant compressibility.
@ -2285,9 +2287,9 @@ namespace Opm {
const auto tableData = PVTFunc::Oil::fromPVCDO(numRows, this->units, pvcdo); const auto tableData = PVTFunc::Oil::fromPVCDO(numRows, this->units, pvcdo);
this->addData(TABDIMS_IBPVTO_OFFSET_ITEM, tableData); this->addData(Ix::PvtoMainStart, tableData);
this->m_tabdims[TABDIMS_NPPVTO_ITEM] = numRows; this->m_tabdims[Ix::NumPvtoPressNodes] = numRows;
this->m_tabdims[TABDIMS_NTPVTO_ITEM] = pvcdo.size(); this->m_tabdims[Ix::NumPvtoTables] = pvcdo.size();
} }
} }
@ -2303,7 +2305,7 @@ namespace Opm {
const auto tableData = PVTFunc::Water::fromPVTW(this->units, pvtw); const auto tableData = PVTFunc::Water::fromPVTW(this->units, pvtw);
this->addData(TABDIMS_IBPVTW_OFFSET_ITEM, tableData); this->addData(Ix::PvtwStart, tableData);
this->m_tabdims[TABDIMS_NTPVTW_ITEM] = pvtw.size(); this->m_tabdims[Ix::NumPvtwTables] = pvtw.size();
} }
} }

View File

@ -31,8 +31,6 @@
#include <stdexcept> #include <stdexcept>
#include <vector> #include <vector>
#include <ert/ecl/ecl_kw_magic.h>
#include <opm/parser/eclipse/Deck/Deck.hpp> #include <opm/parser/eclipse/Deck/Deck.hpp>
#include <opm/parser/eclipse/EclipseState/EclipseState.hpp> #include <opm/parser/eclipse/EclipseState/EclipseState.hpp>
#include <opm/parser/eclipse/EclipseState/Grid/EclipseGrid.hpp> #include <opm/parser/eclipse/EclipseState/Grid/EclipseGrid.hpp>
@ -40,7 +38,9 @@
#include <opm/parser/eclipse/Parser/Parser.hpp> #include <opm/parser/eclipse/Parser/Parser.hpp>
#include <opm/parser/eclipse/Units/UnitSystem.hpp> #include <opm/parser/eclipse/Units/UnitSystem.hpp>
#include <opm/output/eclipse/VectorItems/tabdims.hpp>
using Ix = ::Opm::RestartIO::Helpers::VectorItems::TabDims::index;
namespace { namespace {
template <class Collection1, class Collection2> template <class Collection1, class Collection2>
@ -1172,9 +1172,9 @@ BOOST_AUTO_TEST_CASE (Oil_Water_Family_One)
// SOFN // SOFN
{ {
const auto ibsofn = tabdims[ TABDIMS_IBSOFN_OFFSET_ITEM ] - 1; const auto ibsofn = tabdims[ Ix::SofnTableStart ] - 1;
const auto nssofn = tabdims[ TABDIMS_NSSOFN_ITEM ]; const auto nssofn = tabdims[ Ix::SofnNumSatNodes ];
const auto ntsofn = tabdims[ TABDIMS_NTSOFN_ITEM ]; const auto ntsofn = tabdims[ Ix::SofnNumTables ];
const auto ncol = 3; const auto ncol = 3;
const auto sofn = std::vector<double> { const auto sofn = std::vector<double> {
@ -1190,9 +1190,9 @@ BOOST_AUTO_TEST_CASE (Oil_Water_Family_One)
// SWFN // SWFN
{ {
const auto ibswfn = tabdims[ TABDIMS_IBSWFN_OFFSET_ITEM ] - 1; const auto ibswfn = tabdims[ Ix::SwfnTableStart ] - 1;
const auto nsswfn = tabdims[ TABDIMS_NSSWFN_ITEM ]; const auto nsswfn = tabdims[ Ix::SwfnNumSatNodes ];
const auto ntswfn = tabdims[ TABDIMS_NTSWFN_ITEM ]; const auto ntswfn = tabdims[ Ix::SwfnNumTables ];
const auto ncol = 5; const auto ncol = 5;
const auto swfn = std::vector<double> { const auto swfn = std::vector<double> {
@ -1219,9 +1219,9 @@ BOOST_AUTO_TEST_CASE (Oil_Water_Family_Two)
// SOFN // SOFN
{ {
const auto ibsofn = tabdims[ TABDIMS_IBSOFN_OFFSET_ITEM ] - 1; const auto ibsofn = tabdims[ Ix::SofnTableStart ] - 1;
const auto nssofn = tabdims[ TABDIMS_NSSOFN_ITEM ]; const auto nssofn = tabdims[ Ix::SofnNumSatNodes ];
const auto ntsofn = tabdims[ TABDIMS_NTSOFN_ITEM ]; const auto ntsofn = tabdims[ Ix::SofnNumTables ];
const auto ncol = 3; const auto ncol = 3;
const auto sofn = std::vector<double> { const auto sofn = std::vector<double> {
@ -1237,9 +1237,9 @@ BOOST_AUTO_TEST_CASE (Oil_Water_Family_Two)
// SWFN // SWFN
{ {
const auto ibswfn = tabdims[ TABDIMS_IBSWFN_OFFSET_ITEM ] - 1; const auto ibswfn = tabdims[ Ix::SwfnTableStart ] - 1;
const auto nsswfn = tabdims[ TABDIMS_NSSWFN_ITEM ]; const auto nsswfn = tabdims[ Ix::SwfnNumSatNodes ];
const auto ntswfn = tabdims[ TABDIMS_NTSWFN_ITEM ]; const auto ntswfn = tabdims[ Ix::SwfnNumTables ];
const auto ncol = 5; const auto ncol = 5;
const auto swfn = std::vector<double> { const auto swfn = std::vector<double> {
@ -1266,9 +1266,9 @@ BOOST_AUTO_TEST_CASE (Gas_Oil_Familiy_One)
// SGFN // SGFN
{ {
const auto ibsgfn = tabdims[ TABDIMS_IBSGFN_OFFSET_ITEM ] - 1; const auto ibsgfn = tabdims[ Ix::SgfnTableStart ] - 1;
const auto nssgfn = tabdims[ TABDIMS_NSSGFN_ITEM ]; const auto nssgfn = tabdims[ Ix::SgfnNumSatNodes ];
const auto ntsgfn = tabdims[ TABDIMS_NTSGFN_ITEM ]; const auto ntsgfn = tabdims[ Ix::SgfnNumTables ];
const auto ncol = 5; const auto ncol = 5;
const auto sgfn = std::vector<double> { const auto sgfn = std::vector<double> {
@ -1284,9 +1284,9 @@ BOOST_AUTO_TEST_CASE (Gas_Oil_Familiy_One)
// SOFN // SOFN
{ {
const auto ibsofn = tabdims[ TABDIMS_IBSOFN_OFFSET_ITEM ] - 1; const auto ibsofn = tabdims[ Ix::SofnTableStart ] - 1;
const auto nssofn = tabdims[ TABDIMS_NSSOFN_ITEM ]; const auto nssofn = tabdims[ Ix::SofnNumSatNodes ];
const auto ntsofn = tabdims[ TABDIMS_NTSOFN_ITEM ]; const auto ntsofn = tabdims[ Ix::SofnNumTables ];
const auto ncol = 3; const auto ncol = 3;
const auto sofn = std::vector<double> { const auto sofn = std::vector<double> {
@ -1313,9 +1313,9 @@ BOOST_AUTO_TEST_CASE (Gas_Oil_Familiy_Two)
// SGFN // SGFN
{ {
const auto ibsgfn = tabdims[ TABDIMS_IBSGFN_OFFSET_ITEM ] - 1; const auto ibsgfn = tabdims[ Ix::SgfnTableStart ] - 1;
const auto nssgfn = tabdims[ TABDIMS_NSSGFN_ITEM ]; const auto nssgfn = tabdims[ Ix::SgfnNumSatNodes ];
const auto ntsgfn = tabdims[ TABDIMS_NTSGFN_ITEM ]; const auto ntsgfn = tabdims[ Ix::SgfnNumTables ];
const auto ncol = 5; const auto ncol = 5;
const auto sgfn = std::vector<double> { const auto sgfn = std::vector<double> {
@ -1331,9 +1331,9 @@ BOOST_AUTO_TEST_CASE (Gas_Oil_Familiy_Two)
// SOFN // SOFN
{ {
const auto ibsofn = tabdims[ TABDIMS_IBSOFN_OFFSET_ITEM ] - 1; const auto ibsofn = tabdims[ Ix::SofnTableStart ] - 1;
const auto nssofn = tabdims[ TABDIMS_NSSOFN_ITEM ]; const auto nssofn = tabdims[ Ix::SofnNumSatNodes ];
const auto ntsofn = tabdims[ TABDIMS_NTSOFN_ITEM ]; const auto ntsofn = tabdims[ Ix::SofnNumTables ];
const auto ncol = 3; const auto ncol = 3;
const auto sofn = std::vector<double> { const auto sofn = std::vector<double> {
@ -1366,9 +1366,9 @@ BOOST_AUTO_TEST_CASE (Serialize_Family_One)
// SGFN // SGFN
{ {
const auto ibsgfn = tabdims[ TABDIMS_IBSGFN_OFFSET_ITEM ] - 1; const auto ibsgfn = tabdims[ Ix::SgfnTableStart ] - 1;
const auto nssgfn = tabdims[ TABDIMS_NSSGFN_ITEM ]; const auto nssgfn = tabdims[ Ix::SgfnNumSatNodes ];
const auto ntsgfn = tabdims[ TABDIMS_NTSGFN_ITEM ]; const auto ntsgfn = tabdims[ Ix::SgfnNumTables ];
const auto ncol = 5; const auto ncol = 5;
const auto sgfn = std::vector<double> { const auto sgfn = std::vector<double> {
@ -1384,9 +1384,9 @@ BOOST_AUTO_TEST_CASE (Serialize_Family_One)
// SOFN // SOFN
{ {
const auto ibsofn = tabdims[ TABDIMS_IBSOFN_OFFSET_ITEM ] - 1; const auto ibsofn = tabdims[ Ix::SofnTableStart ] - 1;
const auto nssofn = tabdims[ TABDIMS_NSSOFN_ITEM ]; const auto nssofn = tabdims[ Ix::SofnNumSatNodes ];
const auto ntsofn = tabdims[ TABDIMS_NTSOFN_ITEM ]; const auto ntsofn = tabdims[ Ix::SofnNumTables ];
const auto ncol = 5; const auto ncol = 5;
const auto sofn = std::vector<double> { const auto sofn = std::vector<double> {
@ -1402,9 +1402,9 @@ BOOST_AUTO_TEST_CASE (Serialize_Family_One)
// SWFN // SWFN
{ {
const auto ibswfn = tabdims[ TABDIMS_IBSWFN_OFFSET_ITEM ] - 1; const auto ibswfn = tabdims[ Ix::SwfnTableStart ] - 1;
const auto nsswfn = tabdims[ TABDIMS_NSSWFN_ITEM ]; const auto nsswfn = tabdims[ Ix::SwfnNumSatNodes ];
const auto ntswfn = tabdims[ TABDIMS_NTSWFN_ITEM ]; const auto ntswfn = tabdims[ Ix::SwfnNumTables ];
const auto ncol = 5; const auto ncol = 5;
const auto swfn = std::vector<double> { const auto swfn = std::vector<double> {
@ -1431,9 +1431,9 @@ BOOST_AUTO_TEST_CASE (Serialize_Family_Two)
// SGFN // SGFN
{ {
const auto ibsgfn = tabdims[ TABDIMS_IBSGFN_OFFSET_ITEM ] - 1; const auto ibsgfn = tabdims[ Ix::SgfnTableStart ] - 1;
const auto nssgfn = tabdims[ TABDIMS_NSSGFN_ITEM ]; const auto nssgfn = tabdims[ Ix::SgfnNumSatNodes ];
const auto ntsgfn = tabdims[ TABDIMS_NTSGFN_ITEM ]; const auto ntsgfn = tabdims[ Ix::SgfnNumTables ];
const auto ncol = 5; const auto ncol = 5;
const auto sgfn = std::vector<double> { const auto sgfn = std::vector<double> {
@ -1449,9 +1449,9 @@ BOOST_AUTO_TEST_CASE (Serialize_Family_Two)
// SOFN // SOFN
{ {
const auto ibsofn = tabdims[ TABDIMS_IBSOFN_OFFSET_ITEM ] - 1; const auto ibsofn = tabdims[ Ix::SofnTableStart ] - 1;
const auto nssofn = tabdims[ TABDIMS_NSSOFN_ITEM ]; const auto nssofn = tabdims[ Ix::SofnNumSatNodes ];
const auto ntsofn = tabdims[ TABDIMS_NTSOFN_ITEM ]; const auto ntsofn = tabdims[ Ix::SofnNumTables ];
const auto ncol = 5; const auto ncol = 5;
const auto sofn = std::vector<double> { const auto sofn = std::vector<double> {
@ -1467,9 +1467,9 @@ BOOST_AUTO_TEST_CASE (Serialize_Family_Two)
// SWFN // SWFN
{ {
const auto ibswfn = tabdims[ TABDIMS_IBSWFN_OFFSET_ITEM ] - 1; const auto ibswfn = tabdims[ Ix::SwfnTableStart ] - 1;
const auto nsswfn = tabdims[ TABDIMS_NSSWFN_ITEM ]; const auto nsswfn = tabdims[ Ix::SwfnNumSatNodes ];
const auto ntswfn = tabdims[ TABDIMS_NTSWFN_ITEM ]; const auto ntswfn = tabdims[ Ix::SwfnNumTables ];
const auto ncol = 5; const auto ncol = 5;
const auto swfn = std::vector<double> { const auto swfn = std::vector<double> {
@ -1589,14 +1589,14 @@ PVDG
const auto& tabdims = tables.tabdims(); const auto& tabdims = tables.tabdims();
const auto& tab = tables.tab(); const auto& tab = tables.tab();
const auto ibpvtg = tabdims[ TABDIMS_IBPVTG_OFFSET_ITEM ] - 1; const auto ibpvtg = tabdims[ Ix::PvtgMainStart ] - 1;
const auto nppvtg = tabdims[ TABDIMS_NPPVTG_ITEM ]; const auto nppvtg = tabdims[ Ix::NumPvtgPressNodes ];
const auto ntpvtg = tabdims[ TABDIMS_NTPVTG_ITEM ]; const auto ntpvtg = tabdims[ Ix::NumPvtgTables ];
const auto ncol = 5; const auto ncol = 5;
// Pg table defaulted // Pg table defaulted
BOOST_CHECK_EQUAL(tabdims[TABDIMS_JBPVTG_OFFSET_ITEM], 1); BOOST_CHECK_EQUAL(tabdims[Ix::PvtgPressStart], 1);
BOOST_CHECK_EQUAL(tabdims[TABDIMS_NRPVTG_ITEM], 1); BOOST_CHECK_EQUAL(tabdims[Ix::NumPvtgCompNodes], 1);
BOOST_CHECK_EQUAL(nppvtg, 16); BOOST_CHECK_EQUAL(nppvtg, 16);
BOOST_CHECK_EQUAL(ntpvtg, 2); BOOST_CHECK_EQUAL(ntpvtg, 2);
@ -1712,14 +1712,14 @@ PVDG
const auto& tabdims = tables.tabdims(); const auto& tabdims = tables.tabdims();
const auto& tab = tables.tab(); const auto& tab = tables.tab();
const auto ibpvtg = tabdims[ TABDIMS_IBPVTG_OFFSET_ITEM ] - 1; const auto ibpvtg = tabdims[ Ix::PvtgMainStart ] - 1;
const auto nppvtg = tabdims[ TABDIMS_NPPVTG_ITEM ]; const auto nppvtg = tabdims[ Ix::NumPvtgPressNodes ];
const auto ntpvtg = tabdims[ TABDIMS_NTPVTG_ITEM ]; const auto ntpvtg = tabdims[ Ix::NumPvtgTables ];
const auto ncol = 5; const auto ncol = 5;
// Pg table defaulted // Pg table defaulted
BOOST_CHECK_EQUAL(tabdims[TABDIMS_JBPVTG_OFFSET_ITEM], 1); BOOST_CHECK_EQUAL(tabdims[Ix::PvtgPressStart], 1);
BOOST_CHECK_EQUAL(tabdims[TABDIMS_NRPVTG_ITEM], 1); BOOST_CHECK_EQUAL(tabdims[Ix::NumPvtgCompNodes], 1);
BOOST_CHECK_EQUAL(nppvtg, 14); // Table 2 BOOST_CHECK_EQUAL(nppvtg, 14); // Table 2
BOOST_CHECK_EQUAL(ntpvtg, 2); BOOST_CHECK_EQUAL(ntpvtg, 2);
@ -1825,11 +1825,11 @@ PVTG
const auto& tabdims = tables.tabdims(); const auto& tabdims = tables.tabdims();
const auto& tab = tables.tab(); const auto& tab = tables.tab();
const auto ibpvtg = tabdims[ TABDIMS_IBPVTG_OFFSET_ITEM ] - 1; const auto ibpvtg = tabdims[ Ix::PvtgMainStart ] - 1;
const auto jbpvtg = tabdims[ TABDIMS_JBPVTG_OFFSET_ITEM ] - 1; const auto jbpvtg = tabdims[ Ix::PvtgPressStart ] - 1;
const auto nppvtg = tabdims[ TABDIMS_NPPVTG_ITEM ]; const auto nppvtg = tabdims[ Ix::NumPvtgPressNodes ];
const auto nrpvtg = tabdims[ TABDIMS_NRPVTG_ITEM ]; const auto nrpvtg = tabdims[ Ix::NumPvtgCompNodes ];
const auto ntpvtg = tabdims[ TABDIMS_NTPVTG_ITEM ]; const auto ntpvtg = tabdims[ Ix::NumPvtgTables ];
const auto ncol = 5; const auto ncol = 5;
BOOST_CHECK_EQUAL(nppvtg, 7); BOOST_CHECK_EQUAL(nppvtg, 7);
@ -1976,11 +1976,11 @@ PVTG
const auto& tabdims = tables.tabdims(); const auto& tabdims = tables.tabdims();
const auto& tab = tables.tab(); const auto& tab = tables.tab();
const auto ibpvtg = tabdims[ TABDIMS_IBPVTG_OFFSET_ITEM ] - 1; const auto ibpvtg = tabdims[ Ix::PvtgMainStart ] - 1;
const auto jbpvtg = tabdims[ TABDIMS_JBPVTG_OFFSET_ITEM ] - 1; const auto jbpvtg = tabdims[ Ix::PvtgPressStart ] - 1;
const auto nppvtg = tabdims[ TABDIMS_NPPVTG_ITEM ]; const auto nppvtg = tabdims[ Ix::NumPvtgPressNodes ];
const auto nrpvtg = tabdims[ TABDIMS_NRPVTG_ITEM ]; const auto nrpvtg = tabdims[ Ix::NumPvtgCompNodes ];
const auto ntpvtg = tabdims[ TABDIMS_NTPVTG_ITEM ]; const auto ntpvtg = tabdims[ Ix::NumPvtgTables ];
const auto ncol = 5; const auto ncol = 5;
BOOST_CHECK_EQUAL(nppvtg, 7); BOOST_CHECK_EQUAL(nppvtg, 7);
@ -2122,11 +2122,11 @@ PVTG
const auto& tabdims = tables.tabdims(); const auto& tabdims = tables.tabdims();
const auto& tab = tables.tab(); const auto& tab = tables.tab();
const auto ibpvtg = tabdims[ TABDIMS_IBPVTG_OFFSET_ITEM ] - 1; const auto ibpvtg = tabdims[ Ix::PvtgMainStart ] - 1;
const auto jbpvtg = tabdims[ TABDIMS_JBPVTG_OFFSET_ITEM ] - 1; const auto jbpvtg = tabdims[ Ix::PvtgPressStart ] - 1;
const auto nppvtg = tabdims[ TABDIMS_NPPVTG_ITEM ]; const auto nppvtg = tabdims[ Ix::NumPvtgPressNodes ];
const auto nrpvtg = tabdims[ TABDIMS_NRPVTG_ITEM ]; const auto nrpvtg = tabdims[ Ix::NumPvtgCompNodes ];
const auto ntpvtg = tabdims[ TABDIMS_NTPVTG_ITEM ]; const auto ntpvtg = tabdims[ Ix::NumPvtgTables ];
const auto ncol = 5; const auto ncol = 5;
BOOST_CHECK_EQUAL(nppvtg, 5); // Table 1 BOOST_CHECK_EQUAL(nppvtg, 5); // Table 1
@ -2260,14 +2260,14 @@ PVCDO
const auto& tabdims = tables.tabdims(); const auto& tabdims = tables.tabdims();
const auto& tab = tables.tab(); const auto& tab = tables.tab();
const auto ibpvto = tabdims[ TABDIMS_IBPVTO_OFFSET_ITEM ] - 1; const auto ibpvto = tabdims[ Ix::PvtoMainStart ] - 1;
const auto nppvto = tabdims[ TABDIMS_NPPVTO_ITEM ]; const auto nppvto = tabdims[ Ix::NumPvtoPressNodes ];
const auto ntpvto = tabdims[ TABDIMS_NTPVTO_ITEM ]; const auto ntpvto = tabdims[ Ix::NumPvtoTables ];
const auto ncol = 5; const auto ncol = 5;
// Rs table defaulted // Rs table defaulted
BOOST_CHECK_EQUAL(tabdims[TABDIMS_JBPVTO_OFFSET_ITEM], 1); BOOST_CHECK_EQUAL(tabdims[Ix::PvtoCompStart], 1);
BOOST_CHECK_EQUAL(tabdims[TABDIMS_NRPVTO_ITEM], 1); BOOST_CHECK_EQUAL(tabdims[Ix::NumPvtoCompNodes], 1);
BOOST_CHECK_EQUAL(nppvto, 4); BOOST_CHECK_EQUAL(nppvto, 4);
BOOST_CHECK_EQUAL(ntpvto, 2); BOOST_CHECK_EQUAL(ntpvto, 2);
@ -2345,14 +2345,14 @@ PVDO
const auto& tabdims = tables.tabdims(); const auto& tabdims = tables.tabdims();
const auto& tab = tables.tab(); const auto& tab = tables.tab();
const auto ibpvto = tabdims[ TABDIMS_IBPVTO_OFFSET_ITEM ] - 1; const auto ibpvto = tabdims[ Ix::PvtoMainStart ] - 1;
const auto nppvto = tabdims[ TABDIMS_NPPVTO_ITEM ]; const auto nppvto = tabdims[ Ix::NumPvtoPressNodes ];
const auto ntpvto = tabdims[ TABDIMS_NTPVTO_ITEM ]; const auto ntpvto = tabdims[ Ix::NumPvtoTables ];
const auto ncol = 5; const auto ncol = 5;
// Rs table defaulted // Rs table defaulted
BOOST_CHECK_EQUAL(tabdims[TABDIMS_JBPVTO_OFFSET_ITEM], 1); BOOST_CHECK_EQUAL(tabdims[Ix::PvtoCompStart], 1);
BOOST_CHECK_EQUAL(tabdims[TABDIMS_NRPVTO_ITEM], 1); BOOST_CHECK_EQUAL(tabdims[Ix::NumPvtoCompNodes], 1);
BOOST_CHECK_EQUAL(nppvto, 8); BOOST_CHECK_EQUAL(nppvto, 8);
BOOST_CHECK_EQUAL(ntpvto, 2); BOOST_CHECK_EQUAL(ntpvto, 2);
@ -2442,14 +2442,14 @@ PVDO
const auto& tabdims = tables.tabdims(); const auto& tabdims = tables.tabdims();
const auto& tab = tables.tab(); const auto& tab = tables.tab();
const auto ibpvto = tabdims[ TABDIMS_IBPVTO_OFFSET_ITEM ] - 1; const auto ibpvto = tabdims[ Ix::PvtoMainStart ] - 1;
const auto nppvto = tabdims[ TABDIMS_NPPVTO_ITEM ]; const auto nppvto = tabdims[ Ix::NumPvtoPressNodes ];
const auto ntpvto = tabdims[ TABDIMS_NTPVTO_ITEM ]; const auto ntpvto = tabdims[ Ix::NumPvtoTables ];
const auto ncol = 5; const auto ncol = 5;
// Rs table defaulted // Rs table defaulted
BOOST_CHECK_EQUAL(tabdims[TABDIMS_JBPVTO_OFFSET_ITEM], 1); BOOST_CHECK_EQUAL(tabdims[Ix::PvtoCompStart], 1);
BOOST_CHECK_EQUAL(tabdims[TABDIMS_NRPVTO_ITEM], 1); BOOST_CHECK_EQUAL(tabdims[Ix::NumPvtoCompNodes], 1);
BOOST_CHECK_EQUAL(nppvto, 10); // Table 1 BOOST_CHECK_EQUAL(nppvto, 10); // Table 1
BOOST_CHECK_EQUAL(ntpvto, 2); BOOST_CHECK_EQUAL(ntpvto, 2);
@ -2541,11 +2541,11 @@ PVTO
const auto& tabdims = tables.tabdims(); const auto& tabdims = tables.tabdims();
const auto& tab = tables.tab(); const auto& tab = tables.tab();
const auto ibpvto = tabdims[ TABDIMS_IBPVTO_OFFSET_ITEM ] - 1; const auto ibpvto = tabdims[ Ix::PvtoMainStart ] - 1;
const auto jbpvto = tabdims[ TABDIMS_JBPVTO_OFFSET_ITEM ] - 1; const auto jbpvto = tabdims[ Ix::PvtoCompStart ] - 1;
const auto nppvto = tabdims[ TABDIMS_NPPVTO_ITEM ]; const auto nppvto = tabdims[ Ix::NumPvtoPressNodes ];
const auto nrpvto = tabdims[ TABDIMS_NRPVTO_ITEM ]; const auto nrpvto = tabdims[ Ix::NumPvtoCompNodes ];
const auto ntpvto = tabdims[ TABDIMS_NTPVTO_ITEM ]; const auto ntpvto = tabdims[ Ix::NumPvtoTables ];
const auto ncol = 5; const auto ncol = 5;
BOOST_CHECK_EQUAL(nppvto, 4); BOOST_CHECK_EQUAL(nppvto, 4);
@ -2690,11 +2690,11 @@ PVTO
const auto& tabdims = tables.tabdims(); const auto& tabdims = tables.tabdims();
const auto& tab = tables.tab(); const auto& tab = tables.tab();
const auto ibpvto = tabdims[ TABDIMS_IBPVTO_OFFSET_ITEM ] - 1; const auto ibpvto = tabdims[ Ix::PvtoMainStart ] - 1;
const auto jbpvto = tabdims[ TABDIMS_JBPVTO_OFFSET_ITEM ] - 1; const auto jbpvto = tabdims[ Ix::PvtoCompStart ] - 1;
const auto nppvto = tabdims[ TABDIMS_NPPVTO_ITEM ]; const auto nppvto = tabdims[ Ix::NumPvtoPressNodes ];
const auto nrpvto = tabdims[ TABDIMS_NRPVTO_ITEM ]; const auto nrpvto = tabdims[ Ix::NumPvtoCompNodes ];
const auto ntpvto = tabdims[ TABDIMS_NTPVTO_ITEM ]; const auto ntpvto = tabdims[ Ix::NumPvtoTables ];
const auto ncol = 5; const auto ncol = 5;
BOOST_CHECK_EQUAL(nppvto, 5); BOOST_CHECK_EQUAL(nppvto, 5);
@ -2848,11 +2848,11 @@ PVTO
const auto& tabdims = tables.tabdims(); const auto& tabdims = tables.tabdims();
const auto& tab = tables.tab(); const auto& tab = tables.tab();
const auto ibpvto = tabdims[ TABDIMS_IBPVTO_OFFSET_ITEM ] - 1; const auto ibpvto = tabdims[ Ix::PvtoMainStart ] - 1;
const auto jbpvto = tabdims[ TABDIMS_JBPVTO_OFFSET_ITEM ] - 1; const auto jbpvto = tabdims[ Ix::PvtoCompStart ] - 1;
const auto nppvto = tabdims[ TABDIMS_NPPVTO_ITEM ]; const auto nppvto = tabdims[ Ix::NumPvtoPressNodes ];
const auto nrpvto = tabdims[ TABDIMS_NRPVTO_ITEM ]; const auto nrpvto = tabdims[ Ix::NumPvtoCompNodes ];
const auto ntpvto = tabdims[ TABDIMS_NTPVTO_ITEM ]; const auto ntpvto = tabdims[ Ix::NumPvtoTables ];
const auto ncol = 5; const auto ncol = 5;
// Verify declared TABDIMS from input // Verify declared TABDIMS from input
@ -2999,8 +2999,8 @@ PVTW
const auto& tabdims = tables.tabdims(); const auto& tabdims = tables.tabdims();
const auto& tab = tables.tab(); const auto& tab = tables.tab();
const auto ibpvtw = tabdims[ TABDIMS_IBPVTW_OFFSET_ITEM ] - 1; const auto ibpvtw = tabdims[ Ix::PvtwStart ] - 1;
const auto ntpvtw = tabdims[ TABDIMS_NTPVTW_ITEM ]; const auto ntpvtw = tabdims[ Ix::NumPvtwTables ];
const auto ncol = 5; const auto ncol = 5;
BOOST_CHECK_EQUAL(ntpvtw, 2); BOOST_CHECK_EQUAL(ntpvtw, 2);