Merge pull request #1360 from akva2/noecl_flush
Yet another round of serialization preparation
This commit is contained in:
@@ -46,6 +46,19 @@ namespace Opm {
|
||||
|
||||
{ }
|
||||
|
||||
Aqudims(size_t mxnaqn, size_t mxnaqc, size_t niftbl, size_t nriftb,
|
||||
size_t nanaqu, size_t ncamax, size_t mxnali, size_t mxaaql) :
|
||||
m_mxnaqn(mxnaqn),
|
||||
m_mxnaqc(mxnaqc),
|
||||
m_niftbl(niftbl),
|
||||
m_nriftb(nriftb),
|
||||
m_nanaqu(nanaqu),
|
||||
m_ncamax(ncamax),
|
||||
m_mxnali(mxnali),
|
||||
m_mxaaql(mxaaql)
|
||||
|
||||
{ }
|
||||
|
||||
explicit Aqudims(const Deck& deck) :
|
||||
Aqudims()
|
||||
{
|
||||
@@ -100,7 +113,19 @@ namespace Opm {
|
||||
size_t getNumAnalyticAquifersSingleList() const
|
||||
{
|
||||
return m_mxaaql;
|
||||
}
|
||||
}
|
||||
|
||||
bool operator==(const Aqudims& data) const
|
||||
{
|
||||
return m_mxnaqn == data.m_mxnaqn &&
|
||||
m_mxnaqc == data.m_mxnaqc &&
|
||||
m_niftbl == data.m_niftbl &&
|
||||
m_nriftb == data.m_nriftb &&
|
||||
m_nanaqu == data.m_nanaqu &&
|
||||
m_ncamax == data.m_ncamax &&
|
||||
m_mxnali == data.m_mxnali &&
|
||||
m_mxaaql == data.m_mxaaql;
|
||||
}
|
||||
|
||||
private:
|
||||
size_t m_mxnaqn , m_mxnaqc , m_niftbl , m_nriftb , m_nanaqu , m_ncamax , m_mxnali , m_mxaaql;
|
||||
|
||||
@@ -73,6 +73,15 @@ namespace Opm {
|
||||
{
|
||||
return m_nstrvd;
|
||||
}
|
||||
|
||||
bool operator==(const Eqldims& data) const
|
||||
{
|
||||
return this->getNumEquilRegions() == data.getNumEquilRegions() &&
|
||||
this->getNumDepthNodesP() == data.getNumDepthNodesP() &&
|
||||
this->getNumDepthNodesTable() == data.getNumDepthNodesTable() &&
|
||||
this->getNumTracerTables() == data.getNumTracerTables() &&
|
||||
this->getNumDepthNodesTracer() == data.getNumDepthNodesTracer();
|
||||
}
|
||||
private:
|
||||
size_t m_ntequl , m_depth_nodes_p , m_depth_nodes_tab , m_nttrvd , m_nstrvd;
|
||||
|
||||
|
||||
@@ -59,6 +59,12 @@ struct ROCKRecord {
|
||||
|
||||
double reference_pressure;
|
||||
double compressibility;
|
||||
|
||||
bool operator==(const ROCKRecord& data) const {
|
||||
return reference_pressure == data.reference_pressure &&
|
||||
compressibility == data.compressibility;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
struct RockTable : public FlatTable< ROCKRecord > {
|
||||
|
||||
@@ -28,9 +28,15 @@ namespace Opm {
|
||||
class PlymwinjTable : public PolyInjTable {
|
||||
public:
|
||||
|
||||
PlymwinjTable() = default;
|
||||
PlymwinjTable(const std::vector<double>& throughputs,
|
||||
const std::vector<double>& velocities,
|
||||
int tableNumber,
|
||||
const std::vector<std::vector<double>>& data);
|
||||
explicit PlymwinjTable(const DeckKeyword& table);
|
||||
|
||||
const std::vector<std::vector<double>>& getMoleWeights() const;
|
||||
bool operator==(const PlymwinjTable& data) const;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -44,18 +44,26 @@ namespace Opm {
|
||||
class PolyInjTable {
|
||||
public:
|
||||
|
||||
PolyInjTable() = default;
|
||||
PolyInjTable(const std::vector<double>& throughputs,
|
||||
const std::vector<double>& velocities,
|
||||
int tableNumber,
|
||||
const std::vector<std::vector<double>>& data);
|
||||
|
||||
int getTableNumber() const;
|
||||
|
||||
const std::vector<double>& getThroughputs() const;
|
||||
const std::vector<double>& getVelocities() const;
|
||||
const std::vector<std::vector<double>>& getTableData() const;
|
||||
|
||||
bool operator==(const PolyInjTable& data) const;
|
||||
|
||||
protected:
|
||||
std::vector<double> m_throughputs;
|
||||
std::vector<double> m_velocities;
|
||||
|
||||
// TODO: maybe not needed, since this is also stored in the std::map
|
||||
int m_table_number;
|
||||
int m_table_number = 0;
|
||||
|
||||
// each vector corresponds to the values corresponds to one value related to one x sampling point
|
||||
// as a result, the number of the vector should be equal to be the size of m_x_points,
|
||||
|
||||
@@ -72,6 +72,13 @@ namespace Opm {
|
||||
}
|
||||
|
||||
|
||||
bool operator==(const Regdims& data) const {
|
||||
return this->getNTFIP() == data.getNTFIP() &&
|
||||
this->getNMFIPR() == data.getNMFIPR() &&
|
||||
this->getNRFREG() == data.getNRFREG() &&
|
||||
this->getNTFREG() == data.getNTFREG() &&
|
||||
this->getNPLMIX() == data.getNPLMIX();
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
|
||||
@@ -28,12 +28,21 @@ namespace Opm {
|
||||
class SkprpolyTable : public PolyInjTable {
|
||||
public:
|
||||
|
||||
SkprpolyTable() = default;
|
||||
SkprpolyTable(const std::vector<double>& throughputs,
|
||||
const std::vector<double>& velocities,
|
||||
int tableNumber,
|
||||
const std::vector<std::vector<double>>& data,
|
||||
double ref_polymer_concentration);
|
||||
explicit SkprpolyTable(const DeckKeyword& table);
|
||||
|
||||
double referenceConcentration() const;
|
||||
void setReferenceConcentration(double refConcentration);
|
||||
|
||||
const std::vector<std::vector<double>>& getSkinPressures() const;
|
||||
|
||||
bool operator==(const SkprpolyTable& data) const;
|
||||
|
||||
private:
|
||||
double m_ref_polymer_concentration;
|
||||
|
||||
|
||||
@@ -28,10 +28,17 @@ namespace Opm {
|
||||
class SkprwatTable : public PolyInjTable {
|
||||
public:
|
||||
|
||||
SkprwatTable() = default;
|
||||
SkprwatTable(const std::vector<double>& throughputs,
|
||||
const std::vector<double>& velocities,
|
||||
int tableNumber,
|
||||
const std::vector<std::vector<double>>& data);
|
||||
|
||||
explicit SkprwatTable(const DeckKeyword& table);
|
||||
|
||||
const std::vector<std::vector<double>>& getSkinPressures() const;
|
||||
|
||||
bool operator==(const SkprwatTable& data) const;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -58,6 +58,31 @@ namespace Opm {
|
||||
public:
|
||||
explicit TableManager( const Deck& deck );
|
||||
TableManager() = default;
|
||||
TableManager(const std::map<std::string, TableContainer>& simpleTables,
|
||||
const std::vector<PvtgTable>& pvtgTables,
|
||||
const std::vector<PvtoTable>& pvtoTables,
|
||||
const std::vector<Rock2dTable>& rock2dTables,
|
||||
const std::vector<Rock2dtrTable>& rock2dtrTables,
|
||||
const PvtwTable& pvtwTable,
|
||||
const PvcdoTable& pvcdoTable,
|
||||
const DensityTable& densityTable,
|
||||
const RockTable& rockTable,
|
||||
const ViscrefTable& viscrefTable,
|
||||
const WatdentTable& watdentTable,
|
||||
const std::map<int, PlymwinjTable>& plymwinjTables,
|
||||
const std::map<int, SkprwatTable>& skprwatTables,
|
||||
const std::map<int, SkprpolyTable>& skprpolyTables,
|
||||
const Tabdims& tabdims,
|
||||
const Regdims& regdims,
|
||||
const Eqldims& eqldims,
|
||||
const Aqudims& aqudims,
|
||||
bool useImptvd,
|
||||
bool useEnptvd,
|
||||
bool useEqlnum,
|
||||
std::shared_ptr<JFunc> jfunc_param,
|
||||
double rtemp);
|
||||
|
||||
TableManager& operator=(const TableManager& data);
|
||||
|
||||
const TableContainer& getTables( const std::string& tableName ) const;
|
||||
const TableContainer& operator[](const std::string& tableName) const;
|
||||
@@ -135,6 +160,7 @@ namespace Opm {
|
||||
const std::map<int, PlymwinjTable>& getPlymwinjTables() const;
|
||||
const std::map<int, SkprwatTable>& getSkprwatTables() const;
|
||||
const std::map<int, SkprpolyTable>& getSkprpolyTables() const;
|
||||
const std::map<std::string, TableContainer>& getSimpleTables() const;
|
||||
|
||||
/// deck has keyword "IMPTVD" --- Imbition end-point versus depth tables
|
||||
bool useImptvd() const;
|
||||
@@ -149,6 +175,8 @@ namespace Opm {
|
||||
bool useJFunc() const;
|
||||
|
||||
double rtemp() const;
|
||||
|
||||
bool operator==(const TableManager& data) const;
|
||||
private:
|
||||
TableContainer& forceGetTables( const std::string& tableName , size_t numTables);
|
||||
|
||||
@@ -352,9 +380,9 @@ namespace Opm {
|
||||
std::shared_ptr<Eqldims> m_eqldims;
|
||||
Aqudims m_aqudims;
|
||||
|
||||
const bool hasImptvd = false;// if deck has keyword IMPTVD
|
||||
const bool hasEnptvd = false;// if deck has keyword ENPTVD
|
||||
const bool hasEqlnum = false;// if deck has keyword EQLNUM
|
||||
bool hasImptvd = false;// if deck has keyword IMPTVD
|
||||
bool hasEnptvd = false;// if deck has keyword ENPTVD
|
||||
bool hasEqlnum = false;// if deck has keyword EQLNUM
|
||||
std::shared_ptr<JFunc> jfunc;
|
||||
|
||||
double m_rtemp;
|
||||
|
||||
@@ -38,6 +38,17 @@ namespace Opm{
|
||||
|
||||
// PolyInjTable
|
||||
|
||||
PolyInjTable::PolyInjTable(const std::vector<double>& throughputs,
|
||||
const std::vector<double>& velocities,
|
||||
int tableNumber,
|
||||
const std::vector<std::vector<double>>& data)
|
||||
: m_throughputs(throughputs)
|
||||
, m_velocities(velocities)
|
||||
, m_table_number(tableNumber)
|
||||
, m_data(data)
|
||||
{
|
||||
}
|
||||
|
||||
int PolyInjTable::getTableNumber() const
|
||||
{
|
||||
return m_table_number;
|
||||
@@ -58,10 +69,26 @@ namespace Opm{
|
||||
return m_data;
|
||||
}
|
||||
|
||||
bool PolyInjTable::operator==(const PolyInjTable& data) const
|
||||
{
|
||||
return this->getTableNumber() == data.getTableNumber() &&
|
||||
this->getThroughputs() == data.getThroughputs() &&
|
||||
this->getVelocities() == data.getVelocities() &&
|
||||
this->getTableData() == data.getTableData();
|
||||
}
|
||||
|
||||
|
||||
|
||||
// PlymwinjTable
|
||||
|
||||
PlymwinjTable::PlymwinjTable(const std::vector<double>& throughputs,
|
||||
const std::vector<double>& velocities,
|
||||
int tableNumber,
|
||||
const std::vector<std::vector<double>>& data)
|
||||
: PolyInjTable(throughputs, velocities, tableNumber, data)
|
||||
{
|
||||
}
|
||||
|
||||
PlymwinjTable::PlymwinjTable(const Opm::DeckKeyword& table)
|
||||
{
|
||||
using namespace ParserKeywords;
|
||||
@@ -105,9 +132,22 @@ namespace Opm{
|
||||
return getTableData();
|
||||
}
|
||||
|
||||
bool PlymwinjTable::operator==(const PlymwinjTable& data) const
|
||||
{
|
||||
return static_cast<const PolyInjTable&>(*this) == static_cast<const PolyInjTable&>(data);
|
||||
}
|
||||
|
||||
|
||||
// SkprwatTable
|
||||
|
||||
SkprwatTable::SkprwatTable(const std::vector<double>& throughputs,
|
||||
const std::vector<double>& velocities,
|
||||
int tableNumber,
|
||||
const std::vector<std::vector<double>>& data)
|
||||
: PolyInjTable(throughputs, velocities, tableNumber, data)
|
||||
{
|
||||
}
|
||||
|
||||
SkprwatTable::SkprwatTable(const Opm::DeckKeyword &table)
|
||||
{
|
||||
using namespace ParserKeywords;
|
||||
@@ -151,9 +191,24 @@ namespace Opm{
|
||||
return getTableData();
|
||||
}
|
||||
|
||||
bool SkprwatTable::operator==(const SkprwatTable& data) const
|
||||
{
|
||||
return static_cast<const PolyInjTable&>(*this) == static_cast<const PolyInjTable&>(data);
|
||||
}
|
||||
|
||||
// SkprpolyTable
|
||||
|
||||
SkprpolyTable::SkprpolyTable(const std::vector<double>& throughputs,
|
||||
const std::vector<double>& velocities,
|
||||
int tableNumber,
|
||||
const std::vector<std::vector<double>>& data,
|
||||
double referenceConcentration)
|
||||
: PolyInjTable(throughputs, velocities, tableNumber, data)
|
||||
, m_ref_polymer_concentration(referenceConcentration)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
SkprpolyTable::SkprpolyTable(const Opm::DeckKeyword &table)
|
||||
{
|
||||
using namespace ParserKeywords;
|
||||
@@ -203,10 +258,21 @@ namespace Opm{
|
||||
return m_ref_polymer_concentration;
|
||||
}
|
||||
|
||||
void SkprpolyTable::setReferenceConcentration(double refConcentration)
|
||||
{
|
||||
m_ref_polymer_concentration = refConcentration;
|
||||
}
|
||||
|
||||
const std::vector<std::vector<double>>&
|
||||
SkprpolyTable::getSkinPressures() const
|
||||
{
|
||||
return getTableData();
|
||||
}
|
||||
|
||||
bool SkprpolyTable::operator==(const SkprpolyTable& data) const
|
||||
{
|
||||
return this->referenceConcentration() == data.referenceConcentration() &&
|
||||
static_cast<const PolyInjTable&>(*this) == static_cast<const PolyInjTable&>(data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -92,6 +92,55 @@
|
||||
|
||||
namespace Opm {
|
||||
|
||||
TableManager::TableManager(const std::map<std::string, TableContainer>& simpleTables,
|
||||
const std::vector<PvtgTable>& pvtgTables,
|
||||
const std::vector<PvtoTable>& pvtoTables,
|
||||
const std::vector<Rock2dTable>& rock2dTables,
|
||||
const std::vector<Rock2dtrTable>& rock2dtrTables,
|
||||
const PvtwTable& pvtwTable,
|
||||
const PvcdoTable& pvcdoTable,
|
||||
const DensityTable& densityTable,
|
||||
const RockTable& rockTable,
|
||||
const ViscrefTable& viscrefTable,
|
||||
const WatdentTable& watdentTable,
|
||||
const std::map<int, PlymwinjTable>& plymwinjTables,
|
||||
const std::map<int, SkprwatTable>& skprwatTables,
|
||||
const std::map<int, SkprpolyTable>& skprpolyTables,
|
||||
const Tabdims& tabdims,
|
||||
const Regdims& regdims,
|
||||
const Eqldims& eqldims,
|
||||
const Aqudims& aqudims,
|
||||
bool useImptvd,
|
||||
bool useEnptvd,
|
||||
bool useEqlnum,
|
||||
std::shared_ptr<JFunc> jfunc_param,
|
||||
double rtemp)
|
||||
:
|
||||
m_simpleTables(simpleTables),
|
||||
m_pvtgTables(pvtgTables),
|
||||
m_pvtoTables(pvtoTables),
|
||||
m_rock2dTables(rock2dTables),
|
||||
m_rock2dtrTables(rock2dtrTables),
|
||||
m_pvtwTable(pvtwTable),
|
||||
m_pvcdoTable(pvcdoTable),
|
||||
m_densityTable(densityTable),
|
||||
m_rockTable(rockTable),
|
||||
m_viscrefTable(viscrefTable),
|
||||
m_watdentTable(watdentTable),
|
||||
m_plymwinjTables(plymwinjTables),
|
||||
m_skprwatTables(skprwatTables),
|
||||
m_skprpolyTables(skprpolyTables),
|
||||
m_tabdims(tabdims),
|
||||
m_regdims(std::make_shared<Regdims>(regdims)),
|
||||
m_eqldims(std::make_shared<Eqldims>(eqldims)),
|
||||
m_aqudims(aqudims),
|
||||
hasImptvd(useImptvd),
|
||||
hasEnptvd(useEnptvd),
|
||||
hasEqlnum(useEqlnum),
|
||||
jfunc(std::move(jfunc_param)),
|
||||
m_rtemp(rtemp)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
TableManager::TableManager( const Deck& deck )
|
||||
@@ -144,6 +193,34 @@ namespace Opm {
|
||||
|
||||
}
|
||||
|
||||
TableManager& TableManager::operator=(const TableManager& data) {
|
||||
m_simpleTables = data.m_simpleTables;
|
||||
m_pvtgTables = data.m_pvtgTables;
|
||||
m_pvtoTables = data.m_pvtoTables;
|
||||
m_rock2dTables = data.m_rock2dTables;
|
||||
m_rock2dtrTables = data.m_rock2dtrTables;
|
||||
m_pvtwTable = data.m_pvtwTable;
|
||||
m_pvcdoTable = data.m_pvcdoTable;
|
||||
m_densityTable = data.m_densityTable;
|
||||
m_viscrefTable = data.m_viscrefTable;
|
||||
m_watdentTable = data.m_watdentTable;
|
||||
m_plymwinjTables = data.m_plymwinjTables;
|
||||
m_skprwatTables = data.m_skprwatTables;
|
||||
m_skprpolyTables = data.m_skprpolyTables;
|
||||
m_tabdims = data.m_tabdims;
|
||||
m_regdims = std::make_shared<Regdims>(*data.m_regdims);
|
||||
m_eqldims = std::make_shared<Eqldims>(*data.m_eqldims);
|
||||
m_aqudims = data.m_aqudims;
|
||||
hasImptvd = data.hasImptvd;
|
||||
hasEnptvd = data.hasEnptvd;
|
||||
hasEqlnum = data.hasEqlnum;
|
||||
if (data.jfunc)
|
||||
jfunc = std::make_shared<JFunc>(*data.jfunc);
|
||||
m_rtemp = data.m_rtemp;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
void TableManager::initDims(const Deck& deck) {
|
||||
using namespace Opm::ParserKeywords;
|
||||
|
||||
@@ -870,6 +947,10 @@ namespace Opm {
|
||||
return m_skprpolyTables;
|
||||
}
|
||||
|
||||
const std::map<std::string, TableContainer>& TableManager::getSimpleTables() const {
|
||||
return m_simpleTables;
|
||||
}
|
||||
|
||||
bool TableManager::useImptvd() const {
|
||||
return hasImptvd;
|
||||
}
|
||||
@@ -903,6 +984,37 @@ namespace Opm {
|
||||
return this->m_rtemp;
|
||||
}
|
||||
|
||||
bool TableManager::operator==(const TableManager& data) const {
|
||||
bool jfuncOk = false;
|
||||
if (jfunc && data.jfunc)
|
||||
jfuncOk = *jfunc == *data.jfunc;
|
||||
if (!jfunc && !data.jfunc)
|
||||
jfuncOk = true;
|
||||
|
||||
return m_simpleTables == data.m_simpleTables &&
|
||||
m_pvtgTables == data.m_pvtgTables &&
|
||||
m_pvtoTables == data.m_pvtoTables &&
|
||||
m_rock2dTables == data.m_rock2dTables &&
|
||||
m_rock2dtrTables == data.m_rock2dtrTables &&
|
||||
m_pvtwTable == data.m_pvtwTable &&
|
||||
m_pvcdoTable == data.m_pvcdoTable &&
|
||||
m_densityTable == data.m_densityTable &&
|
||||
m_viscrefTable == data.m_viscrefTable &&
|
||||
m_watdentTable == data.m_watdentTable &&
|
||||
m_plymwinjTables == data.m_plymwinjTables &&
|
||||
m_skprwatTables == data.m_skprwatTables &&
|
||||
m_skprpolyTables == data.m_skprpolyTables &&
|
||||
m_tabdims == data.m_tabdims &&
|
||||
*m_regdims == *data.m_regdims &&
|
||||
*m_eqldims == *data.m_eqldims &&
|
||||
m_aqudims == data.m_aqudims &&
|
||||
hasImptvd == data.hasImptvd &&
|
||||
hasEnptvd == data.hasEnptvd &&
|
||||
hasEqlnum == data.hasEqlnum &&
|
||||
jfuncOk &&
|
||||
m_rtemp == data.m_rtemp;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user