mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Fix 2p case in relativeChange(...) in BlackoilModelEbos
This commit is contained in:
parent
ce84a59b29
commit
593546da4b
@ -416,21 +416,41 @@ namespace Opm {
|
|||||||
pressureNew = priVarsNew[Indices::pressureSwitchIdx];
|
pressureNew = priVarsNew[Indices::pressureSwitchIdx];
|
||||||
|
|
||||||
Scalar saturationsNew[FluidSystem::numPhases] = { 0.0 };
|
Scalar saturationsNew[FluidSystem::numPhases] = { 0.0 };
|
||||||
saturationsNew[FluidSystem::waterPhaseIdx] = priVarsNew[Indices::waterSaturationIdx];
|
Scalar oilSaturationNew = 1.0;
|
||||||
if (priVarsNew.primaryVarsMeaning() == PrimaryVariables::Sw_po_Sg)
|
if (FluidSystem::phaseIsActive(FluidSystem::waterPhaseIdx)) {
|
||||||
saturationsNew[FluidSystem::gasPhaseIdx] = priVarsNew[Indices::compositionSwitchIdx];
|
saturationsNew[FluidSystem::waterPhaseIdx] = priVarsNew[Indices::waterSaturationIdx];
|
||||||
saturationsNew[FluidSystem::oilPhaseIdx] = 1.0 - saturationsNew[FluidSystem::waterPhaseIdx] - saturationsNew[FluidSystem::gasPhaseIdx];
|
oilSaturationNew -= saturationsNew[FluidSystem::waterPhaseIdx];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FluidSystem::phaseIsActive(FluidSystem::gasPhaseIdx) && priVarsNew.primaryVarsMeaning() == PrimaryVariables::Sw_po_Sg) {
|
||||||
|
saturationsNew[FluidSystem::gasPhaseIdx] = priVarsNew[Indices::compositionSwitchIdx];
|
||||||
|
oilSaturationNew -= saturationsNew[FluidSystem::gasPhaseIdx];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FluidSystem::phaseIsActive(FluidSystem::oilPhaseIdx)) {
|
||||||
|
saturationsNew[FluidSystem::oilPhaseIdx] = oilSaturationNew;
|
||||||
|
}
|
||||||
|
|
||||||
const auto& priVarsOld = ebosSimulator_.model().solution(/*timeIdx=*/1)[globalElemIdx];
|
const auto& priVarsOld = ebosSimulator_.model().solution(/*timeIdx=*/1)[globalElemIdx];
|
||||||
|
|
||||||
Scalar pressureOld;
|
Scalar pressureOld;
|
||||||
pressureOld = priVarsNew[Indices::pressureSwitchIdx];
|
pressureOld = priVarsOld[Indices::pressureSwitchIdx];
|
||||||
|
|
||||||
Scalar saturationsOld[FluidSystem::numPhases] = { 0.0 };
|
Scalar saturationsOld[FluidSystem::numPhases] = { 0.0 };
|
||||||
saturationsOld[FluidSystem::waterPhaseIdx] = priVarsOld[Indices::waterSaturationIdx];
|
Scalar oilSaturationOld = 1.0;
|
||||||
if (priVarsOld.primaryVarsMeaning() == PrimaryVariables::Sw_po_Sg)
|
if (FluidSystem::phaseIsActive(FluidSystem::waterPhaseIdx)) {
|
||||||
saturationsOld[FluidSystem::gasPhaseIdx] = priVarsOld[Indices::compositionSwitchIdx];
|
saturationsOld[FluidSystem::waterPhaseIdx] = priVarsOld[Indices::waterSaturationIdx];
|
||||||
saturationsOld[FluidSystem::oilPhaseIdx] = 1.0 - saturationsOld[FluidSystem::waterPhaseIdx] - saturationsOld[FluidSystem::gasPhaseIdx];
|
oilSaturationOld -= saturationsOld[FluidSystem::waterPhaseIdx];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FluidSystem::phaseIsActive(FluidSystem::gasPhaseIdx) && priVarsOld.primaryVarsMeaning() == PrimaryVariables::Sw_po_Sg) {
|
||||||
|
saturationsOld[FluidSystem::gasPhaseIdx] = priVarsOld[Indices::compositionSwitchIdx];
|
||||||
|
oilSaturationOld -= saturationsOld[FluidSystem::gasPhaseIdx];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FluidSystem::phaseIsActive(FluidSystem::oilPhaseIdx)) {
|
||||||
|
saturationsOld[FluidSystem::oilPhaseIdx] = oilSaturationOld;
|
||||||
|
}
|
||||||
|
|
||||||
Scalar tmp = pressureNew - pressureOld;
|
Scalar tmp = pressureNew - pressureOld;
|
||||||
resultDelta += tmp*tmp;
|
resultDelta += tmp*tmp;
|
||||||
|
Loading…
Reference in New Issue
Block a user