Merge pull request #1360 from akva2/noecl_flush

Yet another round of serialization preparation
This commit is contained in:
Arne Morten Kvarving
2019-12-19 10:25:25 +01:00
committed by GitHub
11 changed files with 288 additions and 5 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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 > {

View File

@@ -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;
};
}

View File

@@ -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,

View File

@@ -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:

View File

@@ -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;

View File

@@ -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;
};
}

View File

@@ -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;

View File

@@ -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);
}
}

View File

@@ -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;
}
}