adding three-phase simulator including water evaporation and saltpreciopitation

This commit is contained in:
Paul Egberts 2022-04-11 21:56:44 +02:00
parent aaf063ed98
commit c2fa5fc5a8
3 changed files with 14 additions and 4 deletions

View File

@ -388,7 +388,7 @@ add_dependencies(moduleVersion opmsimulators)
set(FLOW_MODELS blackoil brine energy extbo foam gasoil gaswater set(FLOW_MODELS blackoil brine energy extbo foam gasoil gaswater
oilwater oilwater_brine gaswater_brine oilwater_polymer oilwater oilwater_brine gaswater_brine oilwater_polymer
oilwater_polymer_injectivity micp polymer solvent oilwater_polymer_injectivity micp polymer solvent
gasoil_energy brine_saltprecipitation gaswater_saltprec_vapwat) gasoil_energy brine_saltprecipitation gaswater_saltprec_vapwat brine_precsalt_vapwat)
set(FLOW_VARIANT_MODELS brine_energy onephase onephase_energy) set(FLOW_VARIANT_MODELS brine_energy onephase onephase_energy)
set(FLOW_TGTS) set(FLOW_TGTS)

View File

@ -35,6 +35,7 @@
#include <flow/flow_ebos_brine.hpp> #include <flow/flow_ebos_brine.hpp>
#include <flow/flow_ebos_brine_saltprecipitation.hpp> #include <flow/flow_ebos_brine_saltprecipitation.hpp>
#include <flow/flow_ebos_gaswater_saltprec_vapwat.hpp> #include <flow/flow_ebos_gaswater_saltprec_vapwat.hpp>
#include <flow/flow_ebos_brine_precsalt_vapwat.hpp>
#include <flow/flow_ebos_oilwater_brine.hpp> #include <flow/flow_ebos_oilwater_brine.hpp>
#include <flow/flow_ebos_gaswater_brine.hpp> #include <flow/flow_ebos_gaswater_brine.hpp>
#include <flow/flow_ebos_energy.hpp> #include <flow/flow_ebos_energy.hpp>
@ -685,9 +686,17 @@ private:
} }
} }
else if (eclipseState_->getSimulationConfig().hasPRECSALT()) { else if (eclipseState_->getSimulationConfig().hasPRECSALT()) {
flowEbosBrineSaltPrecipitationSetDeck( if (eclipseState_->getSimulationConfig().hasVAPWAT()) {
setupTime_, deck_, eclipseState_, schedule_, summaryConfig_); //case with water vaporization into gas phase and salt precipitation
return flowEbosBrineSaltPrecipitationMain(argc_, argv_, outputCout_, outputFiles_); flowEbosBrinePrecsaltVapwatSetDeck(
setupTime_, deck_, eclipseState_, schedule_, summaryConfig_);
return flowEbosBrinePrecsaltVapwatMain(argc_, argv_, outputCout_, outputFiles_);
}
else {
flowEbosBrineSaltPrecipitationSetDeck(
setupTime_, deck_, eclipseState_, schedule_, summaryConfig_);
return flowEbosBrineSaltPrecipitationMain(argc_, argv_, outputCout_, outputFiles_);
}
} }
else { else {
flowEbosBrineSetDeck( flowEbosBrineSetDeck(

View File

@ -289,6 +289,7 @@ namespace Opm
perf_vap_oil_rate = getValue(vap_oil); perf_vap_oil_rate = getValue(vap_oil);
} }
if (FluidSystem::phaseIsActive(FluidSystem::waterPhaseIdx)) { if (FluidSystem::phaseIsActive(FluidSystem::waterPhaseIdx)) {
const unsigned waterCompIdx = Indices::canonicalToActiveComponentIndex(FluidSystem::waterCompIdx);
const Value vap_wat = rvw * cq_sGas; const Value vap_wat = rvw * cq_sGas;
cq_s[waterCompIdx] += vap_wat; cq_s[waterCompIdx] += vap_wat;
if (this->isProducer()) if (this->isProducer())