108 void update(
const ElementContext& elemCtx,
unsigned dofIdx,
unsigned timeIdx)
110 ParentType::update(elemCtx, dofIdx,
timeIdx);
111 EnergyIntensiveQuantities::updateTemperatures_(fluidState_, elemCtx, dofIdx,
timeIdx);
113 const auto& priVars = elemCtx.primaryVars(dofIdx,
timeIdx);
114 const auto& problem = elemCtx.problem();
122 Valgrind::CheckDefined(fluidState_.saturation(
phaseIdx));
125 Valgrind::CheckDefined(priVars.implicitSaturationIdx());
126 Valgrind::CheckDefined(
sumSat);
127 fluidState_.setSaturation(priVars.implicitSaturationIdx(), 1.0 -
sumSat);
135 problem.materialLawParams(elemCtx, dofIdx,
timeIdx);
140 const Evaluation&
p0 = priVars.makeEvaluation(pressure0Idx,
timeIdx);
150 unsigned lowestPresentPhaseIdx = priVars.lowestPresentPhaseIdx();
153 if (!priVars.phaseIsPresent(
phaseIdx)) {
162 Evaluation
sumx = 0.0;
164 const Evaluation& x = priVars.makeEvaluation(switch0Idx +
compIdx - 1,
timeIdx);
165 fluidState_.setMoleFraction(lowestPresentPhaseIdx,
compIdx, x);
170 fluidState_.setMoleFraction(lowestPresentPhaseIdx, 0, 1 -
sumx);
175 ComputeFromReferencePhase::solve(fluidState_,
paramCache,
176 lowestPresentPhaseIdx,
209 MiscibleMultiPhaseComposition::solve(fluidState_,
paramCache,
210 priVars.phasePresence(),
219 if constexpr (!enableEnergy) {
220 constexpr Scalar
myNan = std::numeric_limits<Scalar>::quiet_NaN();
232 MaterialLaw::relativePermeabilities(relativePermeability_,
234 Valgrind::CheckDefined(relativePermeability_);
243 porosity_ = problem.porosity(elemCtx, dofIdx,
timeIdx);
244 Valgrind::CheckDefined(porosity_);
247 intrinsicPerm_ = problem.intrinsicPermeability(elemCtx, dofIdx,
timeIdx);
250 FluxIntensiveQuantities::update_(elemCtx, dofIdx,
timeIdx);
253 EnergyIntensiveQuantities::update_(fluidState_,
paramCache, elemCtx, dofIdx,
timeIdx);
256 DiffusionIntensiveQuantities::update_(fluidState_,
paramCache, elemCtx, dofIdx,
timeIdx);
258 fluidState_.checkDefined();