84 const SubControlVolume& scv,
85 const VolumeVariables& volVars)
const
87 NumEqVector storage(0.0);
90 for (
int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
92 for (
int compIdx = 0; compIdx < numComponents; ++compIdx)
94 auto eqIdx = Indices::conti0EqIdx + compIdx;
95 storage[eqIdx] += volVars.porosity()
96 * volVars.saturation(phaseIdx)
97 * volVars.molarDensity(phaseIdx)
98 * volVars.moleFraction(phaseIdx, compIdx);
102 EnergyLocalResidual::fluidPhaseStorage(storage, problem, scv, volVars, phaseIdx);
106 EnergyLocalResidual::solidPhaseStorage(storage, scv, volVars);
123 const Element& element,
124 const FVElementGeometry& fvGeometry,
125 const ElementVolumeVariables& elemVolVars,
126 const SubControlVolumeFace& scvf,
127 const ElementFluxVariablesCache& elemFluxVarsCache)
const
129 FluxVariables fluxVars;
130 fluxVars.init(problem, element, fvGeometry, elemVolVars, scvf, elemFluxVarsCache);
131 static constexpr auto referenceSystemFormulation = FluxVariables::MolecularDiffusionType::referenceSystemFormulation();
134 NumEqVector flux(0.0);
137 for (
int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
139 for (
int compIdx = 0; compIdx < numComponents; ++compIdx)
141 auto upwindTerm = [phaseIdx, compIdx](
const VolumeVariables& volVars)
142 {
return volVars.molarDensity(phaseIdx)*volVars.moleFraction(phaseIdx, compIdx)*volVars.mobility(phaseIdx); };
145 auto eqIdx = Indices::conti0EqIdx + compIdx;
146 flux[eqIdx] += fluxVars.advectiveFlux(phaseIdx, upwindTerm);
150 EnergyLocalResidual::heatConvectionFlux(flux, fluxVars, phaseIdx);
154 EnergyLocalResidual::heatConductionFlux(flux, fluxVars);
157 const auto diffusionFluxesWPhase = fluxVars.molecularDiffusionFlux(wPhaseIdx);
158 Scalar jGW = diffusionFluxesWPhase[gCompIdx];
159 Scalar jNW = diffusionFluxesWPhase[nCompIdx];
160 Scalar jWW = -(jGW+jNW);
165 jGW /= FluidSystem::molarMass(gCompIdx);
166 jNW /= FluidSystem::molarMass(nCompIdx);
167 jWW /= FluidSystem::molarMass(wCompIdx);
170 const auto diffusionFluxesGPhase = fluxVars.molecularDiffusionFlux(gPhaseIdx);
171 Scalar jWG = diffusionFluxesGPhase[wCompIdx];
172 Scalar jNG = diffusionFluxesGPhase[nCompIdx];
173 Scalar jGG = -(jWG+jNG);
178 jWG /= FluidSystem::molarMass(wCompIdx);
179 jNG /= FluidSystem::molarMass(nCompIdx);
180 jGG /= FluidSystem::molarMass(gCompIdx);
184 const Scalar jWN = 0.0;
185 const Scalar jGN = 0.0;
186 const Scalar jNN = 0.0;
188 flux[contiWEqIdx] += jWW+jWG+jWN;
189 flux[contiNEqIdx] += jNW+jNG+jNN;
190 flux[contiGEqIdx] += jGW+jGG+jGN;