diff --git a/applications/ebos/eclproblem.hh b/applications/ebos/eclproblem.hh index d3b599489..1b55edb36 100644 --- a/applications/ebos/eclproblem.hh +++ b/applications/ebos/eclproblem.hh @@ -833,132 +833,9 @@ private: const auto deck = this->simulator().gridManager().deck(); const auto eclState = this->simulator().gridManager().eclState(); - auto densityKeyword = deck->getKeyword("DENSITY"); - int numRegions = densityKeyword->size(); - FluidSystem::initBegin(numRegions); - - FluidSystem::setEnableDissolvedGas(deck->hasKeyword("DISGAS")); - FluidSystem::setEnableVaporizedOil(deck->hasKeyword("VAPOIL")); - - // set the reference densities of all PVT regions - for (int regionIdx = 0; regionIdx < numRegions; ++regionIdx) { - Opm::DeckRecordConstPtr densityRecord = densityKeyword->getRecord(regionIdx); - FluidSystem::setReferenceDensities(densityRecord->getItem("OIL")->getSIDouble(0), - densityRecord->getItem("WATER")->getSIDouble(0), - densityRecord->getItem("GAS")->getSIDouble(0), - regionIdx); - } - - typedef std::shared_ptr > GasPvtSharedPtr; - GasPvtSharedPtr gasPvt(createGasPvt_(deck, eclState)); - FluidSystem::setGasPvt(gasPvt); - - typedef std::shared_ptr > OilPvtSharedPtr; - OilPvtSharedPtr oilPvt(createOilPvt_(deck, eclState)); - FluidSystem::setOilPvt(oilPvt); - - typedef std::shared_ptr > WaterPvtSharedPtr; - WaterPvtSharedPtr waterPvt(createWaterPvt_(deck, eclState)); - FluidSystem::setWaterPvt(waterPvt); - - FluidSystem::initEnd(); + FluidSystem::initFromDeck(deck, eclState); } - Opm::OilPvtInterface* createOilPvt_(Opm::DeckConstPtr deck, - Opm::EclipseStateConstPtr eclState) - { - const auto tableManager = eclState->getTableManager(); - Opm::DeckKeywordConstPtr densityKeyword = deck->getKeyword("DENSITY"); - int numPvtRegions = densityKeyword->size(); - - if (deck->hasKeyword("PVTO")) { - Opm::LiveOilPvt *oilPvt = new Opm::LiveOilPvt; - oilPvt->setNumRegions(numPvtRegions); - - for (int regionIdx = 0; regionIdx < numPvtRegions; ++regionIdx) - oilPvt->setPvtoTable(regionIdx, tableManager->getPvtoTables()[regionIdx]); - - oilPvt->initEnd(); - return oilPvt; - } - else if (deck->hasKeyword("PVDO")) { - Opm::DeadOilPvt *oilPvt = new Opm::DeadOilPvt; - oilPvt->setNumRegions(numPvtRegions); - - for (int regionIdx = 0; regionIdx < numPvtRegions; ++regionIdx) - oilPvt->setPvdoTable(regionIdx, tableManager->getPvdoTables()[regionIdx]); - - oilPvt->initEnd(); - return oilPvt; - } - else if (deck->hasKeyword("PVCDO")) { - Opm::ConstantCompressibilityOilPvt *oilPvt = - new Opm::ConstantCompressibilityOilPvt; - oilPvt->setNumRegions(numPvtRegions); - - for (int regionIdx = 0; regionIdx < numPvtRegions; ++regionIdx) - oilPvt->setPvcdo(regionIdx, deck->getKeyword("PVCDO")); - - oilPvt->initEnd(); - return oilPvt; - } - // TODO (?): PVCO (this is not very hard but the opm-parser requires support for - // an additional table) - - OPM_THROW(std::logic_error, "Not implemented: Oil PVT of this deck!"); - } - - Opm::GasPvtInterface* createGasPvt_(Opm::DeckConstPtr deck, - Opm::EclipseStateConstPtr eclState) - { - Opm::DeckKeywordConstPtr densityKeyword = deck->getKeyword("DENSITY"); - const auto tableManager = eclState->getTableManager(); - int numPvtRegions = densityKeyword->size(); - - if (deck->hasKeyword("PVTG")) { - Opm::WetGasPvt *gasPvt = new Opm::WetGasPvt; - gasPvt->setNumRegions(numPvtRegions); - - for (int regionIdx = 0; regionIdx < numPvtRegions; ++regionIdx) - gasPvt->setPvtgTable(regionIdx, tableManager->getPvtgTables()[regionIdx]); - - gasPvt->initEnd(); - return gasPvt; - } - else if (deck->hasKeyword("PVDG")) { - Opm::DryGasPvt *gasPvt = new Opm::DryGasPvt; - gasPvt->setNumRegions(numPvtRegions); - - for (int regionIdx = 0; regionIdx < numPvtRegions; ++regionIdx) - gasPvt->setPvdgTable(regionIdx, tableManager->getPvdgTables()[regionIdx]); - - gasPvt->initEnd(); - return gasPvt; - } - OPM_THROW(std::logic_error, "Not implemented: Gas PVT of this deck!"); - } - - Opm::WaterPvtInterface* createWaterPvt_(Opm::DeckConstPtr deck, - Opm::EclipseStateConstPtr eclState) - { - Opm::DeckKeywordConstPtr densityKeyword = deck->getKeyword("DENSITY"); - int numPvtRegions = densityKeyword->size(); - - if (deck->hasKeyword("PVTW")) { - Opm::ConstantCompressibilityWaterPvt *waterPvt = - new Opm::ConstantCompressibilityWaterPvt; - waterPvt->setNumRegions(numPvtRegions); - - for (int regionIdx = 0; regionIdx < numPvtRegions; ++regionIdx) - waterPvt->setPvtw(regionIdx, deck->getKeyword("PVTW")); - - waterPvt->initEnd(); - return waterPvt; - } - - OPM_THROW(std::logic_error, "Not implemented: Water PVT of this deck!"); - } - void readInitialCondition_() { const auto &gridManager = this->simulator().gridManager();