diff --git a/opm/core/props/IncompPropertiesSinglePhase.cpp b/opm/core/props/IncompPropertiesSinglePhase.cpp index b860bd73f..0d41c9fb4 100644 --- a/opm/core/props/IncompPropertiesSinglePhase.cpp +++ b/opm/core/props/IncompPropertiesSinglePhase.cpp @@ -38,8 +38,8 @@ namespace Opm rock_.init(eclState, grid.number_of_cells, grid.global_cell, grid.cartdims); if (deck->hasKeyword("DENSITY")) { - Opm::DeckRecordConstPtr densityRecord = deck->getKeyword("DENSITY")->getRecord(0); - surface_density_ = densityRecord->getItem("OIL")->getSIDouble(0); + const auto& densityRecord = deck->getKeyword("DENSITY").getRecord(0); + surface_density_ = densityRecord.getItem("OIL").getSIDouble(0); } else { surface_density_ = 1000.0; OPM_MESSAGE("Input is missing DENSITY -- using a standard density of " @@ -50,13 +50,13 @@ namespace Opm reservoir_density_ = surface_density_; if (deck->hasKeyword("PVCDO")) { - Opm::DeckRecordConstPtr pvcdoRecord = deck->getKeyword("PVCDO")->getRecord(0); - if (pvcdoRecord->getItem("OIL_COMPRESSIBILITY")->getSIDouble(0) != 0.0 || - pvcdoRecord->getItem("OIL_VISCOSIBILITY")->getSIDouble(0) != 0.0) { + const auto& pvcdoRecord = deck->getKeyword("PVCDO").getRecord(0); + if (pvcdoRecord.getItem("OIL_COMPRESSIBILITY").getSIDouble(0) != 0.0 || + pvcdoRecord.getItem("OIL_VISCOSIBILITY").getSIDouble(0) != 0.0) { OPM_MESSAGE("Compressibility effects in PVCDO are ignored."); } - reservoir_density_ /= pvcdoRecord->getItem("OIL_VOL_FACTOR")->getSIDouble(0); - viscosity_ = pvcdoRecord->getItem("OIL_VISCOSITY")->getSIDouble(0); + reservoir_density_ /= pvcdoRecord.getItem("OIL_VOL_FACTOR").getSIDouble(0); + viscosity_ = pvcdoRecord.getItem("OIL_VISCOSITY").getSIDouble(0); } else { viscosity_ = 1.0 * prefix::centi*unit::Poise; OPM_MESSAGE("Input is missing PVCDO -- using a standard viscosity of " diff --git a/opm/core/props/pvt/PvtPropertiesIncompFromDeck.cpp b/opm/core/props/pvt/PvtPropertiesIncompFromDeck.cpp index 2428cc65e..668ba70c3 100644 --- a/opm/core/props/pvt/PvtPropertiesIncompFromDeck.cpp +++ b/opm/core/props/pvt/PvtPropertiesIncompFromDeck.cpp @@ -50,9 +50,9 @@ namespace Opm // Surface densities. Accounting for different orders in eclipse and our code. if (deck->hasKeyword("DENSITY")) { - Opm::DeckRecordConstPtr densityRecord = deck->getKeyword("DENSITY")->getRecord(region_number); - surface_density_[phase_usage.phase_pos[PhaseUsage::Aqua]] = densityRecord->getItem("OIL")->getSIDouble(0); - surface_density_[phase_usage.phase_pos[PhaseUsage::Liquid]] = densityRecord->getItem("WATER")->getSIDouble(0); + const auto& densityRecord = deck->getKeyword("DENSITY").getRecord(region_number); + surface_density_[phase_usage.phase_pos[PhaseUsage::Aqua]] = densityRecord.getItem("OIL").getSIDouble(0); + surface_density_[phase_usage.phase_pos[PhaseUsage::Liquid]] = densityRecord.getItem("WATER").getSIDouble(0); } else { OPM_THROW(std::runtime_error, "Input is missing DENSITY\n"); } @@ -63,13 +63,13 @@ namespace Opm // Water viscosity. if (deck->hasKeyword("PVTW")) { - Opm::DeckRecordConstPtr pvtwRecord = deck->getKeyword("PVTW")->getRecord(region_number); - if (pvtwRecord->getItem("WATER_COMPRESSIBILITY")->getSIDouble(0) != 0.0 || - pvtwRecord->getItem("WATER_VISCOSIBILITY")->getSIDouble(0) != 0.0) { + const auto& pvtwRecord = deck->getKeyword("PVTW").getRecord(region_number); + if (pvtwRecord.getItem("WATER_COMPRESSIBILITY").getSIDouble(0) != 0.0 || + pvtwRecord.getItem("WATER_VISCOSIBILITY").getSIDouble(0) != 0.0) { OPM_MESSAGE("Compressibility effects in PVTW are ignored."); } - reservoir_density_[phase_usage.phase_pos[PhaseUsage::Aqua]] /= pvtwRecord->getItem("WATER_VOL_FACTOR")->getSIDouble(0); - viscosity_[phase_usage.phase_pos[PhaseUsage::Aqua]] = pvtwRecord->getItem("WATER_VISCOSITY")->getSIDouble(0); + reservoir_density_[phase_usage.phase_pos[PhaseUsage::Aqua]] /= pvtwRecord.getItem("WATER_VOL_FACTOR").getSIDouble(0); + viscosity_[phase_usage.phase_pos[PhaseUsage::Aqua]] = pvtwRecord.getItem("WATER_VISCOSITY").getSIDouble(0); } else { // Eclipse 100 default. // viscosity_[phase_usage.phase_pos[PhaseUsage::Aqua]] = 0.5*Opm::prefix::centi*Opm::unit::Poise; @@ -78,14 +78,14 @@ namespace Opm // Oil viscosity. if (deck->hasKeyword("PVCDO")) { - Opm::DeckRecordConstPtr pvcdoRecord = deck->getKeyword("PVCDO")->getRecord(region_number); + const auto& pvcdoRecord = deck->getKeyword("PVCDO").getRecord(region_number); - if (pvcdoRecord->getItem("OIL_COMPRESSIBILITY")->getSIDouble(0) != 0.0 || - pvcdoRecord->getItem("OIL_VISCOSIBILITY")->getSIDouble(0) != 0.0) { + if (pvcdoRecord.getItem("OIL_COMPRESSIBILITY").getSIDouble(0) != 0.0 || + pvcdoRecord.getItem("OIL_VISCOSIBILITY").getSIDouble(0) != 0.0) { OPM_MESSAGE("Compressibility effects in PVCDO are ignored."); } - reservoir_density_[phase_usage.phase_pos[PhaseUsage::Liquid]] /= pvcdoRecord->getItem("OIL_VOL_FACTOR")->getSIDouble(0); - viscosity_[phase_usage.phase_pos[PhaseUsage::Liquid]] = pvcdoRecord->getItem("OIL_VISCOSITY")->getSIDouble(0); + reservoir_density_[phase_usage.phase_pos[PhaseUsage::Liquid]] /= pvcdoRecord.getItem("OIL_VOL_FACTOR").getSIDouble(0); + viscosity_[phase_usage.phase_pos[PhaseUsage::Liquid]] = pvcdoRecord.getItem("OIL_VISCOSITY").getSIDouble(0); } else { OPM_THROW(std::runtime_error, "Input is missing PVCDO\n"); } diff --git a/opm/core/props/pvt/ThermalGasPvtWrapper.hpp b/opm/core/props/pvt/ThermalGasPvtWrapper.hpp index 7129cd146..d2fe70f54 100644 --- a/opm/core/props/pvt/ThermalGasPvtWrapper.hpp +++ b/opm/core/props/pvt/ThermalGasPvtWrapper.hpp @@ -60,13 +60,13 @@ namespace Opm assert(int(gasvisctTables_->size()) == numRegions); static_cast(numRegions); //Silence compiler warning - gasCompIdx_ = deck->getKeyword("GCOMPIDX")->getRecord(0)->getItem("GAS_COMPONENT_INDEX")->getInt(0) - 1; + gasCompIdx_ = deck->getKeyword("GCOMPIDX").getRecord(0).getItem("GAS_COMPONENT_INDEX").get< int >(0) - 1; gasvisctColumnName_ = "Viscosity"+std::to_string(static_cast(gasCompIdx_)); } // density if (deck->hasKeyword("TREF")) { - tref_ = deck->getKeyword("TREF")->getRecord(0)->getItem("TEMPERATURE")->getSIDouble(0); + tref_ = deck->getKeyword("TREF").getRecord(0).getItem("TEMPERATURE").getSIDouble(0); } } diff --git a/opm/core/props/pvt/ThermalOilPvtWrapper.hpp b/opm/core/props/pvt/ThermalOilPvtWrapper.hpp index 3dee98d87..5ded2f4b3 100644 --- a/opm/core/props/pvt/ThermalOilPvtWrapper.hpp +++ b/opm/core/props/pvt/ThermalOilPvtWrapper.hpp @@ -54,25 +54,25 @@ namespace Opm else if (deck->hasKeyword("PVDO")) numRegions = tables->getPvdoTables().size(); else if (deck->hasKeyword("PVCDO")) - numRegions = deck->getKeyword("PVCDO")->size(); + numRegions = deck->getKeyword("PVCDO").size(); else OPM_THROW(std::runtime_error, "Oil phase was not initialized using a known way"); // viscosity if (deck->hasKeyword("VISCREF")) { oilvisctTables_ = &tables->getOilvisctTables(); - Opm::DeckKeywordConstPtr viscrefKeyword = deck->getKeyword("VISCREF"); + const auto& viscrefKeyword = deck->getKeyword("VISCREF"); assert(int(oilvisctTables_->size()) == numRegions); - assert(int(viscrefKeyword->size()) == numRegions); + assert(int(viscrefKeyword.size()) == numRegions); viscrefPress_.resize(numRegions); viscrefRs_.resize(numRegions); muRef_.resize(numRegions); for (int regionIdx = 0; regionIdx < numRegions; ++regionIdx) { - DeckRecordConstPtr viscrefRecord = viscrefKeyword->getRecord(regionIdx); - viscrefPress_[regionIdx] = viscrefRecord->getItem("REFERENCE_PRESSURE")->getSIDouble(0); - viscrefRs_[regionIdx] = viscrefRecord->getItem("REFERENCE_RS")->getSIDouble(0); + const auto& viscrefRecord = viscrefKeyword.getRecord(regionIdx); + viscrefPress_[regionIdx] = viscrefRecord.getItem("REFERENCE_PRESSURE").getSIDouble(0); + viscrefRs_[regionIdx] = viscrefRecord.getItem("REFERENCE_RS").getSIDouble(0); // temperature used to calculate the reference viscosity [K]. the // value does not really matter if the underlying PVT object really @@ -96,13 +96,13 @@ namespace Opm // for the first EOS. (since EOS != PVT region.) tref_ = 0.0; if (deck->hasKeyword("THERMEX1")) { - oilCompIdx_ = deck->getKeyword("OCOMPIDX")->getRecord(0)->getItem("OIL_COMPONENT_INDEX")->getInt(0) - 1; + oilCompIdx_ = deck->getKeyword("OCOMPIDX").getRecord(0).getItem("OIL_COMPONENT_INDEX").get< int >(0) - 1; // always use the values of the first EOS - tref_ = deck->getKeyword("TREF")->getRecord(0)->getItem("TEMPERATURE")->getSIDouble(oilCompIdx_); - pref_ = deck->getKeyword("PREF")->getRecord(0)->getItem("PRESSURE")->getSIDouble(oilCompIdx_); - cref_ = deck->getKeyword("CREF")->getRecord(0)->getItem("COMPRESSIBILITY")->getSIDouble(oilCompIdx_); - thermex1_ = deck->getKeyword("THERMEX1")->getRecord(0)->getItem("EXPANSION_COEFF")->getSIDouble(oilCompIdx_); + tref_ = deck->getKeyword("TREF").getRecord(0).getItem("TEMPERATURE").getSIDouble(oilCompIdx_); + pref_ = deck->getKeyword("PREF").getRecord(0).getItem("PRESSURE").getSIDouble(oilCompIdx_); + cref_ = deck->getKeyword("CREF").getRecord(0).getItem("COMPRESSIBILITY").getSIDouble(oilCompIdx_); + thermex1_ = deck->getKeyword("THERMEX1").getRecord(0).getItem("EXPANSION_COEFF").getSIDouble(oilCompIdx_); } } diff --git a/opm/core/props/pvt/ThermalWaterPvtWrapper.hpp b/opm/core/props/pvt/ThermalWaterPvtWrapper.hpp index b19a4fd04..9f6665431 100644 --- a/opm/core/props/pvt/ThermalWaterPvtWrapper.hpp +++ b/opm/core/props/pvt/ThermalWaterPvtWrapper.hpp @@ -48,19 +48,19 @@ namespace Opm watvisctTables_ = 0; // stuff which we need to get from the PVTW keyword - Opm::DeckKeywordConstPtr pvtwKeyword = deck->getKeyword("PVTW"); - int numRegions = pvtwKeyword->size(); + const auto& pvtwKeyword = deck->getKeyword("PVTW"); + int numRegions = pvtwKeyword.size(); pvtwRefPress_.resize(numRegions); pvtwRefB_.resize(numRegions); pvtwCompressibility_.resize(numRegions); pvtwViscosity_.resize(numRegions); pvtwViscosibility_.resize(numRegions); for (int regionIdx = 0; regionIdx < numRegions; ++ regionIdx) { - Opm::DeckRecordConstPtr pvtwRecord = pvtwKeyword->getRecord(regionIdx); - pvtwRefPress_[regionIdx] = pvtwRecord->getItem("P_REF")->getSIDouble(0); - pvtwRefB_[regionIdx] = pvtwRecord->getItem("WATER_VOL_FACTOR")->getSIDouble(0); - pvtwViscosity_[regionIdx] = pvtwRecord->getItem("WATER_VISCOSITY")->getSIDouble(0); - pvtwViscosibility_[regionIdx] = pvtwRecord->getItem("WATER_VISCOSIBILITY")->getSIDouble(0); + const auto& pvtwRecord = pvtwKeyword.getRecord(regionIdx); + pvtwRefPress_[regionIdx] = pvtwRecord.getItem("P_REF").getSIDouble(0); + pvtwRefB_[regionIdx] = pvtwRecord.getItem("WATER_VOL_FACTOR").getSIDouble(0); + pvtwViscosity_[regionIdx] = pvtwRecord.getItem("WATER_VISCOSITY").getSIDouble(0); + pvtwViscosibility_[regionIdx] = pvtwRecord.getItem("WATER_VISCOSIBILITY").getSIDouble(0); } // quantities required for the temperature dependence of the viscosity @@ -68,34 +68,34 @@ namespace Opm if (deck->hasKeyword("VISCREF")) { auto tables = eclipseState->getTableManager(); watvisctTables_ = &tables->getWatvisctTables(); - Opm::DeckKeywordConstPtr viscrefKeyword = deck->getKeyword("VISCREF"); + const auto& viscrefKeyword = deck->getKeyword("VISCREF"); assert(int(watvisctTables_->size()) == numRegions); - assert(int(viscrefKeyword->size()) == numRegions); + assert(int(viscrefKeyword.size()) == numRegions); viscrefPress_.resize(numRegions); for (int regionIdx = 0; regionIdx < numRegions; ++ regionIdx) { - Opm::DeckRecordConstPtr viscrefRecord = viscrefKeyword->getRecord(regionIdx); + const auto& viscrefRecord = viscrefKeyword.getRecord(regionIdx); - viscrefPress_[regionIdx] = viscrefRecord->getItem("REFERENCE_PRESSURE")->getSIDouble(0); + viscrefPress_[regionIdx] = viscrefRecord.getItem("REFERENCE_PRESSURE").getSIDouble(0); } } // quantities required for the temperature dependence of the density if (deck->hasKeyword("WATDENT")) { - DeckKeywordConstPtr watdentKeyword = deck->getKeyword("WATDENT"); + const auto& watdentKeyword = deck->getKeyword("WATDENT"); - assert(int(watdentKeyword->size()) == numRegions); + assert(int(watdentKeyword.size()) == numRegions); watdentRefTemp_.resize(numRegions); watdentCT1_.resize(numRegions); watdentCT2_.resize(numRegions); for (int regionIdx = 0; regionIdx < numRegions; ++regionIdx) { - Opm::DeckRecordConstPtr watdentRecord = watdentKeyword->getRecord(regionIdx); + const auto& watdentRecord = watdentKeyword.getRecord(regionIdx); - watdentRefTemp_[regionIdx] = watdentRecord->getItem("REFERENCE_TEMPERATURE")->getSIDouble(0); - watdentCT1_[regionIdx] = watdentRecord->getItem("EXPANSION_COEFF_LINEAR")->getSIDouble(0); - watdentCT2_[regionIdx] = watdentRecord->getItem("EXPANSION_COEFF_QUADRATIC")->getSIDouble(0); + watdentRefTemp_[regionIdx] = watdentRecord.getItem("REFERENCE_TEMPERATURE").getSIDouble(0); + watdentCT1_[regionIdx] = watdentRecord.getItem("EXPANSION_COEFF_LINEAR").getSIDouble(0); + watdentCT2_[regionIdx] = watdentRecord.getItem("EXPANSION_COEFF_QUADRATIC").getSIDouble(0); } } } diff --git a/opm/core/props/rock/RockCompressibility.cpp b/opm/core/props/rock/RockCompressibility.cpp index 2f38d5002..148ea9ce6 100644 --- a/opm/core/props/rock/RockCompressibility.cpp +++ b/opm/core/props/rock/RockCompressibility.cpp @@ -60,16 +60,16 @@ namespace Opm transmult_ = rocktabTable.getColumn("PV_MULT_TRANX").vectorCopy(); } } else if (deck->hasKeyword("ROCK")) { - Opm::DeckKeywordConstPtr rockKeyword = deck->getKeyword("ROCK"); - if (rockKeyword->size() != 1) { + const auto& rockKeyword = deck->getKeyword("ROCK"); + if (rockKeyword.size() != 1) { // here it would be better not to use std::cout directly but to add the // warning to some "warning list"... - std::cout << "Can only handle a single region in ROCK ("<size()<<" regions specified)." + std::cout << "Can only handle a single region in ROCK ("<getRecord(0)->getItem("PREF")->getSIDouble(0); - rock_comp_ = rockKeyword->getRecord(0)->getItem("COMPRESSIBILITY")->getSIDouble(0); + pref_ = rockKeyword.getRecord(0).getItem("PREF").getSIDouble(0); + rock_comp_ = rockKeyword.getRecord(0).getItem("COMPRESSIBILITY").getSIDouble(0); } else { std::cout << "**** warning: no rock compressibility data found in deck (ROCK or ROCKTAB)." << std::endl; } diff --git a/opm/core/props/satfunc/RelpermDiagnostics.cpp b/opm/core/props/satfunc/RelpermDiagnostics.cpp index 1a4948abf..91f7772ac 100644 --- a/opm/core/props/satfunc/RelpermDiagnostics.cpp +++ b/opm/core/props/satfunc/RelpermDiagnostics.cpp @@ -190,9 +190,9 @@ namespace Opm{ void RelpermDiagnostics::tableCheck_(EclipseStateConstPtr eclState, - DeckConstPtr deck) + std::shared_ptr< const Deck > deck) { - const int numSatRegions = deck->getKeyword("TABDIMS")->getRecord(0)->getItem("NTSFUN")->getInt(0); + const int numSatRegions = deck->getKeyword("TABDIMS").getRecord(0).getItem("NTSFUN").get< int >(0); const std::string msg = "Number of saturation regions: " + std::to_string(numSatRegions) + "\n"; std::cout << msg << std::endl; streamLog_->addMessage(Log::MessageType::Info, msg); @@ -583,7 +583,7 @@ namespace Opm{ EclipseStateConstPtr eclState) { // get the number of saturation regions and the number of cells in the deck - const int numSatRegions = deck->getKeyword("TABDIMS")->getRecord(0)->getItem("NTSFUN")->getInt(0); + const int numSatRegions = deck->getKeyword("TABDIMS").getRecord(0).getItem("NTSFUN").get< int >(0); unscaledEpsInfo_.resize(numSatRegions); const auto tables = eclState->getTableManager(); diff --git a/opm/core/simulator/initState_impl.hpp b/opm/core/simulator/initState_impl.hpp index 02c97c135..d411d6136 100644 --- a/opm/core/simulator/initState_impl.hpp +++ b/opm/core/simulator/initState_impl.hpp @@ -612,7 +612,7 @@ namespace Opm // Set saturations from SWAT/SGAS, pressure from PRESSURE. std::vector& s = state.saturation(); std::vector& p = state.pressure(); - const std::vector& p_deck = deck->getKeyword("PRESSURE")->getSIDoubleData(); + const std::vector& p_deck = deck->getKeyword("PRESSURE").getSIDoubleData(); const int num_cells = number_of_cells; if (num_phases == 2) { if (!pu.phase_used[BlackoilPhases::Aqua]) { @@ -620,7 +620,7 @@ namespace Opm if (!deck->hasKeyword("SGAS")) { OPM_THROW(std::runtime_error, "initStateFromDeck(): missing SGAS keyword in 2-phase init"); } - const std::vector& sg_deck = deck->getKeyword("SGAS")->getSIDoubleData(); + const std::vector& sg_deck = deck->getKeyword("SGAS").getSIDoubleData(); const int gpos = pu.phase_pos[BlackoilPhases::Vapour]; const int opos = pu.phase_pos[BlackoilPhases::Liquid]; for (int c = 0; c < num_cells; ++c) { @@ -634,7 +634,7 @@ namespace Opm if (!deck->hasKeyword("SWAT")) { OPM_THROW(std::runtime_error, "initStateFromDeck(): missing SWAT keyword in 2-phase init"); } - const std::vector& sw_deck = deck->getKeyword("SWAT")->getSIDoubleData(); + const std::vector& sw_deck = deck->getKeyword("SWAT").getSIDoubleData(); const int wpos = pu.phase_pos[BlackoilPhases::Aqua]; const int nwpos = (wpos + 1) % 2; for (int c = 0; c < num_cells; ++c) { @@ -652,8 +652,8 @@ namespace Opm const int wpos = pu.phase_pos[BlackoilPhases::Aqua]; const int gpos = pu.phase_pos[BlackoilPhases::Vapour]; const int opos = pu.phase_pos[BlackoilPhases::Liquid]; - const std::vector& sw_deck = deck->getKeyword("SWAT")->getSIDoubleData(); - const std::vector& sg_deck = deck->getKeyword("SGAS")->getSIDoubleData(); + const std::vector& sw_deck = deck->getKeyword("SWAT").getSIDoubleData(); + const std::vector& sg_deck = deck->getKeyword("SGAS").getSIDoubleData(); for (int c = 0; c < num_cells; ++c) { int c_deck = (global_cell == NULL) ? c : global_cell[c]; s[3*c + wpos] = sw_deck[c_deck]; @@ -884,7 +884,7 @@ namespace Opm face_cells, begin_face_centroids, begin_cell_centroids, dimensions, props, deck, gravity, state); if (deck->hasKeyword("RS")) { - const std::vector& rs_deck = deck->getKeyword("RS")->getSIDoubleData(); + const std::vector& rs_deck = deck->getKeyword("RS").getSIDoubleData(); const int num_cells = number_of_cells; for (int c = 0; c < num_cells; ++c) { int c_deck = (global_cell == NULL) ? c : global_cell[c]; @@ -893,7 +893,7 @@ namespace Opm initBlackoilSurfvolUsingRSorRV(number_of_cells, props, state); computeSaturation(props,state); } else if (deck->hasKeyword("RV")){ - const std::vector& rv_deck = deck->getKeyword("RV")->getSIDoubleData(); + const std::vector& rv_deck = deck->getKeyword("RV").getSIDoubleData(); const int num_cells = number_of_cells; for (int c = 0; c < num_cells; ++c) { int c_deck = (global_cell == NULL) ? c : global_cell[c];