From bb3daa5dcababbf4e1d80f609d7140900e7fd151 Mon Sep 17 00:00:00 2001 From: Timo Koch <timo.koch@iws.uni-stuttgart.de> Date: Mon, 8 Aug 2016 17:56:55 +0200 Subject: [PATCH] [fick's law] Implement mass fractions --- .../cellcentered/tpfa/fickslaw.hh | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/dumux/discretization/cellcentered/tpfa/fickslaw.hh b/dumux/discretization/cellcentered/tpfa/fickslaw.hh index 4ebd1fad13..202c3d9002 100644 --- a/dumux/discretization/cellcentered/tpfa/fickslaw.hh +++ b/dumux/discretization/cellcentered/tpfa/fickslaw.hh @@ -79,7 +79,8 @@ public: const ElementVolumeVariables& elemVolVars, const SubControlVolumeFace& scvFace, int phaseIdx, int compIdx, - const FluxVarsCache& fluxVarsCache) + const FluxVarsCache& fluxVarsCache, + bool useMoles = true) { // diffusion tensors are always solution dependent Scalar tij = calculateTransmissibility_(problem, element, fvGeometry, elemVolVars, scvFace, phaseIdx, compIdx); @@ -91,12 +92,24 @@ public: // and the outside volume variables const auto& outsideVolVars = elemVolVars[scvFace.outsideScvIdx()]; - // compute the diffusive flux - const auto xInside = insideVolVars.moleFraction(phaseIdx, compIdx); - const auto xOutside = outsideVolVars.moleFraction(phaseIdx, compIdx); - const auto rho = 0.5*(insideVolVars.molarDensity(phaseIdx) + outsideVolVars.molarDensity(phaseIdx)); + // compute the diffusive flux using mole fractions + if (useMoles) + { + const auto xInside = insideVolVars.moleFraction(phaseIdx, compIdx); + const auto xOutside = outsideVolVars.moleFraction(phaseIdx, compIdx); + const auto rho = 0.5*(insideVolVars.molarDensity(phaseIdx) + outsideVolVars.molarDensity(phaseIdx)); + + return rho*tij*(xInside - xOutside); + } + // compute the diffusive flux using mass fractions + else + { + const auto xInside = insideVolVars.massFraction(phaseIdx, compIdx); + const auto xOutside = outsideVolVars.massFraction(phaseIdx, compIdx); + const auto rho = 0.5*(insideVolVars.density(phaseIdx) + outsideVolVars.density(phaseIdx)); - return rho*tij*(xInside - xOutside); + return rho*tij*(xInside - xOutside); + } } static Stencil stencil(const Problem& problem, -- GitLab