90 void update(
const ElementContext& elemCtx,
unsigned dofIdx,
unsigned timeIdx)
92 ParentType::update(elemCtx, dofIdx, timeIdx);
94 const auto& T = elemCtx.problem().temperature(elemCtx, dofIdx, timeIdx);
95 fluidState_.setTemperature(T);
98 const auto& problem = elemCtx.problem();
99 const typename MaterialLaw::Params& materialParams =
100 problem.materialLawParams(elemCtx, dofIdx, timeIdx);
101 const auto& priVars = elemCtx.primaryVars(dofIdx, timeIdx);
108 fluidState_.setSaturation(liquidPhaseIdx, 1.0);
109 fluidState_.setSaturation(gasPhaseIdx, 0.0);
110 ScalarPhaseVector pC;
111 MaterialLaw::capillaryPressures(pC, materialParams, fluidState_);
116 const Evaluation& pW = priVars.makeEvaluation(pressureWIdx, timeIdx);
117 const Evaluation pN =
118 Toolbox::max(elemCtx.problem().referencePressure(elemCtx, dofIdx, 0),
119 pW + (pC[gasPhaseIdx] - pC[liquidPhaseIdx]));
124 fluidState_.setPressure(liquidPhaseIdx, pW);
125 fluidState_.setPressure(gasPhaseIdx, pN);
128 MaterialLaw::saturations(sat, materialParams, fluidState_);
129 fluidState_.setSaturation(liquidPhaseIdx, sat[liquidPhaseIdx]);
130 fluidState_.setSaturation(gasPhaseIdx, sat[gasPhaseIdx]);
132 typename FluidSystem::template ParameterCache<Evaluation> paramCache;
133 paramCache.updateAll(fluidState_);
136 const Evaluation& mu = FluidSystem::viscosity(fluidState_, paramCache, liquidPhaseIdx);
137 fluidState_.setViscosity(liquidPhaseIdx, mu);
138 fluidState_.setViscosity(gasPhaseIdx, 1e-20);
141 const Evaluation& rho = FluidSystem::density(fluidState_, paramCache, liquidPhaseIdx);
142 fluidState_.setDensity(liquidPhaseIdx, rho);
143 fluidState_.setDensity(gasPhaseIdx, 1e-20);
146 MaterialLaw::relativePermeabilities(relativePermeability_, materialParams, fluidState_);
149 for (
unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx) {
150 mobility_[phaseIdx] = relativePermeability_[phaseIdx] / fluidState_.viscosity(phaseIdx);
154 porosity_ = problem.porosity(elemCtx, dofIdx, timeIdx);
157 intrinsicPerm_ = problem.intrinsicPermeability(elemCtx, dofIdx, timeIdx);
160 FluxIntensiveQuantities::update_(elemCtx, dofIdx, timeIdx);