Use DenT instances for temperature dependent density

This commit is contained in:
Joakim Hove 2020-02-25 06:14:29 +01:00
parent d4ee80c358
commit de9dd579b6
3 changed files with 25 additions and 26 deletions

View File

@ -110,7 +110,7 @@ public:
////// //////
const auto& tables = eclState.getTableManager(); const auto& tables = eclState.getTableManager();
enableThermalDensity_ = deck.hasKeyword("GASDENT"); enableThermalDensity_ = tables.GasDenT().size() > 0;
enableThermalViscosity_ = tables.hasTables("GASVISCT"); enableThermalViscosity_ = tables.hasTables("GASVISCT");
enableInternalEnergy_ = tables.hasTables("SPECHEAT"); enableInternalEnergy_ = tables.hasTables("SPECHEAT");
@ -121,7 +121,7 @@ public:
if (enableThermalViscosity_) { if (enableThermalViscosity_) {
const auto& gasvisctTables = tables.getGasvisctTables(); const auto& gasvisctTables = tables.getGasvisctTables();
int gasCompIdx = deck.getKeyword("GCOMPIDX").getRecord(0).getItem("GAS_COMPONENT_INDEX").get< int >(0) - 1; int gasCompIdx = deck.getKeyword("GCOMPIDX").getRecord(0).getItem("GAS_COMPONENT_INDEX").get< int >(0) - 1;
std::string gasvisctColumnName = "Viscosity"+std::to_string(static_cast<long long>(gasCompIdx)); std::string gasvisctColumnName = "Viscosity" + std::to_string(static_cast<long long>(gasCompIdx));
for (unsigned regionIdx = 0; regionIdx < numRegions; ++regionIdx) { for (unsigned regionIdx = 0; regionIdx < numRegions; ++regionIdx) {
const auto& T = gasvisctTables[regionIdx].getColumn("Temperature").vectorCopy(); const auto& T = gasvisctTables[regionIdx].getColumn("Temperature").vectorCopy();
@ -131,17 +131,18 @@ public:
} }
// temperature dependence of gas density // temperature dependence of gas density
if (enableThermalDensity_) { if (tables.GasDenT().size() > 0) {
const auto& gasdentKeyword = deck.getKeyword("GASDENT"); const auto& gasDenT = tables.GasDenT();
assert(gasdentKeyword.size() == numRegions); assert(gasDenT.size() == numRegions);
for (unsigned regionIdx = 0; regionIdx < numRegions; ++regionIdx) { for (unsigned regionIdx = 0; regionIdx < numRegions; ++regionIdx) {
const auto& gasdentRecord = gasdentKeyword.getRecord(regionIdx); const auto& record = gasDenT[regionIdx];
gasdentRefTemp_[regionIdx] = gasdentRecord.getItem("REFERENCE_TEMPERATURE").getSIDouble(0); gasdentRefTemp_[regionIdx] = record.T0;
gasdentCT1_[regionIdx] = gasdentRecord.getItem("EXPANSION_COEFF_LINEAR").getSIDouble(0); gasdentCT1_[regionIdx] = record.C1;
gasdentCT2_[regionIdx] = gasdentRecord.getItem("EXPANSION_COEFF_QUADRATIC").getSIDouble(0); gasdentCT2_[regionIdx] = record.C2;
} }
enableThermalDensity_ = true;
} }
if (enableInternalEnergy_) { if (enableInternalEnergy_) {

View File

@ -116,7 +116,7 @@ public:
////// //////
const auto& tables = eclState.getTableManager(); const auto& tables = eclState.getTableManager();
enableThermalDensity_ = deck.hasKeyword("OILDENT"); enableThermalDensity_ = tables.OilDenT().size() > 0;
enableThermalViscosity_ = tables.hasTables("OILVISCT"); enableThermalViscosity_ = tables.hasTables("OILVISCT");
enableInternalEnergy_ = tables.hasTables("SPECHEAT"); enableInternalEnergy_ = tables.hasTables("SPECHEAT");
@ -157,16 +157,15 @@ public:
} }
// temperature dependence of oil density // temperature dependence of oil density
if (enableThermalDensity_) { const auto& oilDenT = tables.OilDenT();
const auto& oildentKeyword = deck.getKeyword("OILDENT"); if (oilDenT.size() > 0) {
assert(oilDenT.size() == numRegions);
assert(oildentKeyword.size() == numRegions);
for (unsigned regionIdx = 0; regionIdx < numRegions; ++regionIdx) { for (unsigned regionIdx = 0; regionIdx < numRegions; ++regionIdx) {
const auto& oildentRecord = oildentKeyword.getRecord(regionIdx); const auto& record = oilDenT[regionIdx];
oildentRefTemp_[regionIdx] = oildentRecord.getItem("REFERENCE_TEMPERATURE").getSIDouble(0); oildentRefTemp_[regionIdx] = record.T0;
oildentCT1_[regionIdx] = oildentRecord.getItem("EXPANSION_COEFF_LINEAR").getSIDouble(0); oildentCT1_[regionIdx] = record.C1;
oildentCT2_[regionIdx] = oildentRecord.getItem("EXPANSION_COEFF_QUADRATIC").getSIDouble(0); oildentCT2_[regionIdx] = record.C2;
} }
} }

View File

@ -122,7 +122,7 @@ public:
////// //////
const auto& tables = eclState.getTableManager(); const auto& tables = eclState.getTableManager();
enableThermalDensity_ = deck.hasKeyword("WATDENT"); enableThermalDensity_ = tables.WatDenT().size() > 0;
enableThermalViscosity_ = tables.hasTables("WATVISCT"); enableThermalViscosity_ = tables.hasTables("WATVISCT");
enableInternalEnergy_ = tables.hasTables("SPECHEAT"); enableInternalEnergy_ = tables.hasTables("SPECHEAT");
@ -130,20 +130,19 @@ public:
setNumRegions(numRegions); setNumRegions(numRegions);
if (enableThermalDensity_) { if (enableThermalDensity_) {
const auto& watdentKeyword = deck.getKeyword("WATDENT"); const auto& watDenT = tables.WatDenT();
assert(watdentKeyword.size() == numRegions); assert(watDenT.size() == numRegions);
for (unsigned regionIdx = 0; regionIdx < numRegions; ++regionIdx) { for (unsigned regionIdx = 0; regionIdx < numRegions; ++regionIdx) {
const auto& watdentRecord = watdentKeyword.getRecord(regionIdx); const auto& record = watDenT[regionIdx];
watdentRefTemp_[regionIdx] = watdentRecord.getItem("REFERENCE_TEMPERATURE").getSIDouble(0); watdentRefTemp_[regionIdx] = record.T0;
watdentCT1_[regionIdx] = watdentRecord.getItem("EXPANSION_COEFF_LINEAR").getSIDouble(0); watdentCT1_[regionIdx] = record.C1;
watdentCT2_[regionIdx] = watdentRecord.getItem("EXPANSION_COEFF_QUADRATIC").getSIDouble(0); watdentCT2_[regionIdx] = record.C2;
} }
} }
if (enableThermalViscosity_) { if (enableThermalViscosity_) {
if (tables.getViscrefTable().empty()) if (tables.getViscrefTable().empty())
throw std::runtime_error("VISCREF is required when WATVISCT is present"); throw std::runtime_error("VISCREF is required when WATVISCT is present");