69 const Element& element,
70 const FVElementGeometry& fvGeometry,
71 const ElementVolumeVariables& elemVolVars,
72 const ElementFaceVariables& elemFaceVars,
73 const SubControlVolumeFace& scvf,
74 const FluxVariablesCache& fluxVarsCache)
76 CellCenterPrimaryVariables flux(0.0);
78 const auto diffusiveFluxes = MolecularDiffusionType::flux(problem, element, fvGeometry, elemVolVars, scvf);
80 static constexpr auto referenceSystemFormulation = MolecularDiffusionType::referenceSystemFormulation();
84 auto upwindTerm = [compIdx](
const auto& volVars)
86 const auto density =
useMoles ? volVars.molarDensity() : volVars.density();
87 const auto fraction =
useMoles ? volVars.moleFraction(compIdx) : volVars.massFraction(compIdx);
88 return density * fraction;
91 flux[compIdx] = ParentType::advectiveFluxForCellCenter(problem, elemVolVars, elemFaceVars, scvf, upwindTerm);
96 flux[compIdx] +=
useMoles ? diffusiveFluxes[compIdx]/FluidSystem::molarMass(compIdx) : diffusiveFluxes[compIdx];
99 flux[compIdx] +=
useMoles ? diffusiveFluxes[compIdx] : diffusiveFluxes[compIdx]*FluidSystem::molarMass(compIdx);
101 DUNE_THROW(Dune::NotImplemented,
"other reference systems than mass and molar averaged are not implemented");
107 flux[ModelTraits::replaceCompEqIdx()] = std::accumulate(flux.begin(), flux.end(), 0.0);