85 const EqVector& update,
93 if (this->numIterations_ > 4) {
97 const auto& problem = this->simulator_.problem();
101 problem.materialLawParams(globalDofIdx, 0);
106 const Scalar T = problem.temperature(globalDofIdx, 0);
107 fs.setTemperature(T);
115 fs.setSaturation(liquidPhaseIdx, 1.0);
116 fs.setSaturation(gasPhaseIdx, 0.0);
118 MaterialLaw::capillaryPressures(
pC,
matParams, fs);
125 std::max(problem.referencePressure(globalDofIdx, 0),
126 pWOld + (
pC[gasPhaseIdx] -
pC[liquidPhaseIdx]));
131 fs.setPressure(liquidPhaseIdx,
pWOld);
132 fs.setPressure(gasPhaseIdx,
pNOld);
136 satOld[liquidPhaseIdx] = std::max(Scalar{0.0},
satOld[liquidPhaseIdx]);
143 fs.setSaturation(liquidPhaseIdx,
satOld[liquidPhaseIdx] - 0.2);
144 fs.setSaturation(gasPhaseIdx, 1.0 - (
satOld[liquidPhaseIdx] - 0.2));
145 MaterialLaw::capillaryPressures(
pC,
matParams, fs);
146 const Scalar
pwMin =
pNOld - (
pC[gasPhaseIdx] -
pC[liquidPhaseIdx]);
148 fs.setSaturation(liquidPhaseIdx,
satOld[liquidPhaseIdx] + 0.2);
149 fs.setSaturation(gasPhaseIdx, 1.0 - (
satOld[liquidPhaseIdx] + 0.2));
150 MaterialLaw::capillaryPressures(
pC,
matParams, fs);
151 const Scalar
pwMax =
pNOld - (
pC[gasPhaseIdx] -
pC[liquidPhaseIdx]);