From 920f071f5f19b2586e5dbc0316da1336ec32da46 Mon Sep 17 00:00:00 2001 From: Cintia Goncalves Machado Date: Mon, 12 Oct 2020 16:46:39 +0200 Subject: [PATCH] fix fractions --- opm/simulators/wells/StandardWell_impl.hpp | 53 ++++++++++++++-------- 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/opm/simulators/wells/StandardWell_impl.hpp b/opm/simulators/wells/StandardWell_impl.hpp index fc5c0890c..8ff199a0d 100644 --- a/opm/simulators/wells/StandardWell_impl.hpp +++ b/opm/simulators/wells/StandardWell_impl.hpp @@ -256,30 +256,47 @@ namespace Opm return EvalWell(numWellEq_ + numEq, 1.0); } - if (FluidSystem::phaseIsActive(FluidSystem::waterPhaseIdx) && compIdx == Indices::canonicalToActiveComponentIndex(FluidSystem::waterCompIdx)) { - return primary_variables_evaluation_[WFrac]; + if (FluidSystem::phaseIsActive(FluidSystem::oilPhaseIdx)) { + if (FluidSystem::phaseIsActive(FluidSystem::waterPhaseIdx) && compIdx == Indices::canonicalToActiveComponentIndex(FluidSystem::waterCompIdx)) { + return primary_variables_evaluation_[WFrac]; + } + + if (FluidSystem::phaseIsActive(FluidSystem::gasPhaseIdx) && compIdx == Indices::canonicalToActiveComponentIndex(FluidSystem::gasCompIdx)) { + return primary_variables_evaluation_[GFrac]; + } + + if (has_solvent && compIdx == (unsigned)contiSolventEqIdx) { + return primary_variables_evaluation_[SFrac]; + } + } + else if (FluidSystem::phaseIsActive(FluidSystem::waterPhaseIdx) && compIdx == Indices::canonicalToActiveComponentIndex(FluidSystem::waterCompIdx)) { + return primary_variables_evaluation_[WFrac]; + + if (FluidSystem::phaseIsActive(FluidSystem::gasPhaseIdx) && compIdx == Indices::canonicalToActiveComponentIndex(FluidSystem::gasCompIdx)) { + return primary_variables_evaluation_[GFrac]; + } } - if (FluidSystem::phaseIsActive(FluidSystem::gasPhaseIdx) && compIdx == Indices::canonicalToActiveComponentIndex(FluidSystem::gasCompIdx)) { - return primary_variables_evaluation_[GFrac]; - } - - if (has_solvent && compIdx == (unsigned)contiSolventEqIdx) { - return primary_variables_evaluation_[SFrac]; - } - - // Oil fraction + // Oil or WATER fraction EvalWell well_fraction(numWellEq_ + numEq, 1.0); - if (FluidSystem::phaseIsActive(FluidSystem::waterPhaseIdx)) { - well_fraction -= primary_variables_evaluation_[WFrac]; - } + if (FluidSystem::phaseIsActive(FluidSystem::oilPhaseIdx)) { + if (FluidSystem::phaseIsActive(FluidSystem::waterPhaseIdx)) { + well_fraction -= primary_variables_evaluation_[WFrac]; + } - if (FluidSystem::phaseIsActive(FluidSystem::gasPhaseIdx)) { - well_fraction -= primary_variables_evaluation_[GFrac]; + if (FluidSystem::phaseIsActive(FluidSystem::gasPhaseIdx)) { + well_fraction -= primary_variables_evaluation_[GFrac]; + } + + if (has_solvent) { + well_fraction -= primary_variables_evaluation_[SFrac]; + } } - if (has_solvent) { - well_fraction -= primary_variables_evaluation_[SFrac]; + else if (FluidSystem::phaseIsActive(FluidSystem::waterPhaseIdx) && (FluidSystem::phaseIsActive(FluidSystem::gasPhaseIdx))) { + + well_fraction -= primary_variables_evaluation_[GFrac]; } + return well_fraction; }