87 void update(
const ElementContext& elemCtx,
unsigned dofIdx,
unsigned timeIdx)
89 ParentType::update(elemCtx, dofIdx, timeIdx);
91 const auto& T = elemCtx.problem().temperature(elemCtx, dofIdx, timeIdx);
92 fluidState_.setTemperature(T);
95 const auto& problem = elemCtx.problem();
96 const typename MaterialLaw::Params& materialParams =
97 problem.materialLawParams(elemCtx, dofIdx, timeIdx);
98 const auto& priVars = elemCtx.primaryVars(dofIdx, timeIdx);
105 fluidState_.setSaturation(liquidPhaseIdx, 1.0);
106 fluidState_.setSaturation(gasPhaseIdx, 0.0);
107 ScalarPhaseVector pC;
108 MaterialLaw::capillaryPressures(pC, materialParams, fluidState_);
113 const Evaluation& pW = priVars.makeEvaluation(pressureWIdx, timeIdx);
115 Toolbox::max(elemCtx.problem().referencePressure(elemCtx, dofIdx, 0),
116 pW + (pC[gasPhaseIdx] - pC[liquidPhaseIdx]));
121 fluidState_.setPressure(liquidPhaseIdx, pW);
122 fluidState_.setPressure(gasPhaseIdx, pN);
125 MaterialLaw::saturations(sat, materialParams, fluidState_);
126 fluidState_.setSaturation(liquidPhaseIdx, sat[liquidPhaseIdx]);
127 fluidState_.setSaturation(gasPhaseIdx, sat[gasPhaseIdx]);
129 typename FluidSystem::template ParameterCache<Evaluation> paramCache;
130 paramCache.updateAll(fluidState_);
133 const Evaluation& mu = FluidSystem::viscosity(fluidState_, paramCache, liquidPhaseIdx);
134 fluidState_.setViscosity(liquidPhaseIdx, mu);
135 fluidState_.setViscosity(gasPhaseIdx, 1e-20);
138 const Evaluation& rho = FluidSystem::density(fluidState_, paramCache, liquidPhaseIdx);
139 fluidState_.setDensity(liquidPhaseIdx, rho);
140 fluidState_.setDensity(gasPhaseIdx, 1e-20);
143 MaterialLaw::relativePermeabilities(relativePermeability_, materialParams, fluidState_);
146 for (
unsigned phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
147 mobility_[phaseIdx] = relativePermeability_[phaseIdx]/fluidState_.viscosity(phaseIdx);
150 porosity_ = problem.porosity(elemCtx, dofIdx, timeIdx);
153 intrinsicPerm_ = problem.intrinsicPermeability(elemCtx, dofIdx, timeIdx);
156 FluxIntensiveQuantities::update_(elemCtx, dofIdx, timeIdx);