Fix two phase EQUIL initialization

This commit is contained in:
Tor Harald Sandve 2016-06-07 08:40:16 +02:00 committed by Andreas Lauser
parent ff7cc37589
commit 4220bb2615

View File

@ -767,28 +767,34 @@ namespace Opm
double sat[BlackoilPhases::MaxNumPhases]; double sat[BlackoilPhases::MaxNumPhases];
double threshold_sat = 1.0e-6; double threshold_sat = 1.0e-6;
sat[waterpos] = smax[waterpos]; sat[oilpos] = 1.0;
sat[gaspos] = smax[gaspos]; if (water) {
sat[oilpos] = 1.0 - sat[waterpos] - sat[gaspos]; sat[waterpos] = smax[waterpos];
if (sw > smax[waterpos]-threshold_sat ) { sat[oilpos] -= sat[waterpos];
sat[waterpos] = smax[waterpos]; }
props.capPress(1, sat, &cell, pc, 0); if (gas) {
phase_pressures[oilpos][local_index] = phase_pressures[waterpos][local_index] + pc[waterpos]; sat[gaspos] = smax[gaspos];
} else if (sg > smax[gaspos]-threshold_sat) { sat[oilpos] -= sat[gaspos];
sat[gaspos] = smax[gaspos]; }
props.capPress(1, sat, &cell, pc, 0); if (water && sw > smax[waterpos]-threshold_sat ) {
phase_pressures[oilpos][local_index] = phase_pressures[gaspos][local_index] - pc[gaspos]; sat[waterpos] = smax[waterpos];
} props.capPress(1, sat, &cell, pc, 0);
if (sg < smin[gaspos]+threshold_sat) { phase_pressures[oilpos][local_index] = phase_pressures[waterpos][local_index] + pc[waterpos];
sat[gaspos] = smin[gaspos]; } else if (gas && sg > smax[gaspos]-threshold_sat) {
props.capPress(1, sat, &cell, pc, 0); sat[gaspos] = smax[gaspos];
phase_pressures[gaspos][local_index] = phase_pressures[oilpos][local_index] + pc[gaspos]; props.capPress(1, sat, &cell, pc, 0);
} phase_pressures[oilpos][local_index] = phase_pressures[gaspos][local_index] - pc[gaspos];
if (sw < smin[waterpos]+threshold_sat) { }
sat[waterpos] = smin[waterpos]; if (gas && sg < smin[gaspos]+threshold_sat) {
props.capPress(1, sat, &cell, pc, 0); sat[gaspos] = smin[gaspos];
phase_pressures[waterpos][local_index] = phase_pressures[oilpos][local_index] - pc[waterpos]; props.capPress(1, sat, &cell, pc, 0);
} phase_pressures[gaspos][local_index] = phase_pressures[oilpos][local_index] + pc[gaspos];
}
if (water && sw < smin[waterpos]+threshold_sat) {
sat[waterpos] = smin[waterpos];
props.capPress(1, sat, &cell, pc, 0);
phase_pressures[waterpos][local_index] = phase_pressures[oilpos][local_index] - pc[waterpos];
}
} }
return phase_saturations; return phase_saturations;
} }