diff --git a/dumux/porousmediumflow/mpnc/implicit/diffusion/fluxvariables.hh b/dumux/porousmediumflow/mpnc/implicit/diffusion/fluxvariables.hh index ce68790af19a644d5c0e99dc00577af8d1509ebb..ce4b0ea710f2718e48db68fb0aacddab786bb07c 100644 --- a/dumux/porousmediumflow/mpnc/implicit/diffusion/fluxvariables.hh +++ b/dumux/porousmediumflow/mpnc/implicit/diffusion/fluxvariables.hh @@ -105,12 +105,12 @@ public: for (int compIdx = 0; compIdx < numComponents; ++compIdx){ // calculate mole fractions at the integration points of the face - moleFraction_[phaseIdx][compIdx] += elemVolVars[volVarsIdx].fluidState().moleFraction(phaseIdx, compIdx)* + moleFraction_[phaseIdx][compIdx] += elemVolVars[volVarsIdx].moleFraction(phaseIdx, compIdx)* face.shapeValue[idx]; // calculate mole fraction gradients tmp = feGrad; - tmp *= elemVolVars[volVarsIdx].fluidState().moleFraction(phaseIdx, compIdx); + tmp *= elemVolVars[volVarsIdx].moleFraction(phaseIdx, compIdx); moleFractionGrad_[phaseIdx][compIdx] += tmp; } } diff --git a/dumux/porousmediumflow/mpnc/implicit/mass/localresidual.hh b/dumux/porousmediumflow/mpnc/implicit/mass/localresidual.hh index 4f13725fced2d099cd05bf458c545327c97617a6..47d2b97d27ea94f581a3b7950d933d202eec2ee4 100644 --- a/dumux/porousmediumflow/mpnc/implicit/mass/localresidual.hh +++ b/dumux/porousmediumflow/mpnc/implicit/mass/localresidual.hh @@ -77,7 +77,7 @@ public: for (int compIdx = 0; compIdx < numComponents; ++ compIdx) { storage[compIdx] += volVars.saturation(phaseIdx)* - volVars.fluidState().molarity(phaseIdx, compIdx); + volVars.molarity(phaseIdx, compIdx); #ifndef NDEBUG if (!std::isfinite(storage[compIdx])) DUNE_THROW(NumericalProblem, "Calculated non-finite storage"); @@ -131,10 +131,10 @@ if (!std::isfinite(volumeFlux)) if (enableSmoothUpwinding_) { const Scalar kGradPNormal = fluxVars.kGradPNormal(phaseIdx); const Scalar mobUp = up.mobility(phaseIdx); - const Scalar conUp = up.fluidState().molarity(phaseIdx, compIdx); + const Scalar conUp = up.molarity(phaseIdx, compIdx); const Scalar mobDn = dn.mobility(phaseIdx); - const Scalar conDn = dn.fluidState().molarity(phaseIdx, compIdx); + const Scalar conDn = dn.molarity(phaseIdx, compIdx); const Scalar mobConUp = mobUp*conUp; const Scalar mobConDn = mobDn*conDn; @@ -180,9 +180,9 @@ if (!std::isfinite(volumeFlux)) {// not use smooth upwinding flux[compIdx] = volumeFlux * - (( massUpwindWeight)*up.fluidState().molarity(phaseIdx, compIdx) + (( massUpwindWeight)*up.molarity(phaseIdx, compIdx) + - ( 1. - massUpwindWeight)*dn.fluidState().molarity(phaseIdx, compIdx) ); + ( 1. - massUpwindWeight)*dn.molarity(phaseIdx, compIdx) ); if (!std::isfinite(flux[compIdx])) DUNE_THROW(NumericalProblem, "Calculated non-finite normal flux in phase " << phaseIdx << " comp " << compIdx << "T: "<< up.fluidState().temperature(phaseIdx) << "S "<<up.saturation(phaseIdx) ) ; } @@ -221,8 +221,8 @@ if (!std::isfinite(volumeFlux)) // integration point by the arithmetic mean of the // concentration of the sub-control volumes Scalar molarDensityAtIP; - molarDensityAtIP = volVarsI.fluidState().molarDensity(phaseIdx); - molarDensityAtIP += volVarsJ.fluidState().molarDensity(phaseIdx); + molarDensityAtIP = volVarsI.molarDensity(phaseIdx); + molarDensityAtIP += volVarsJ.molarDensity(phaseIdx); molarDensityAtIP /= 2; Diffusion::flux(flux, phaseIdx, fluxVars, molarDensityAtIP); diff --git a/dumux/porousmediumflow/mpnc/implicit/mass/localresidualkinetic.hh b/dumux/porousmediumflow/mpnc/implicit/mass/localresidualkinetic.hh index e2eb52905d4214743ad6a6429173ab28ea79cf2b..e1dbdfa3773a8cdb0d17e3f76349cfe4b0b1d4eb 100644 --- a/dumux/porousmediumflow/mpnc/implicit/mass/localresidualkinetic.hh +++ b/dumux/porousmediumflow/mpnc/implicit/mass/localresidualkinetic.hh @@ -205,7 +205,7 @@ public: Scalar x[numPhases][numComponents]; // mass fractions in wetting phase for(int phaseIdx=0; phaseIdx<numPhases; ++phaseIdx){ for (int compIdx=0; compIdx< numComponents; ++ compIdx){ - x[phaseIdx][compIdx] = volVars.fluidState().moleFraction(phaseIdx, compIdx); + x[phaseIdx][compIdx] = volVars.moleFraction(phaseIdx, compIdx); } } Valgrind::CheckDefined(x); @@ -221,7 +221,7 @@ public: #endif Scalar phaseDensity[numPhases]; for(int phaseIdx=0; phaseIdx<numPhases; ++phaseIdx){ - phaseDensity[phaseIdx] = volVars.fluidState().molarDensity(phaseIdx); + phaseDensity[phaseIdx] = volVars.molarDensity(phaseIdx); } // diffusion coefficients in wetting phase diff --git a/dumux/porousmediumflow/mpnc/implicit/volumevariables.hh b/dumux/porousmediumflow/mpnc/implicit/volumevariables.hh index c75367ca85b2b0ffb6dee2da83126cd606c0d1d4..e250b71db9df22c9be01842f9238d11796b753af 100644 --- a/dumux/porousmediumflow/mpnc/implicit/volumevariables.hh +++ b/dumux/porousmediumflow/mpnc/implicit/volumevariables.hh @@ -274,6 +274,40 @@ public: Scalar saturation(int phaseIdx) const { return fluidState_.saturation(phaseIdx); } + /*! + * \brief Returns the mass fraction of a given component in a + * given phase within the control volume in \f$[-]\f$. + * + * \param phaseIdx The phase index + * \param compIdx The component index + */ + Scalar massFraction(const int phaseIdx, const int compIdx) const + { return fluidState_.massFraction(phaseIdx, compIdx); } + + /*! + * \brief Returns the mole fraction of a given component in a + * given phase within the control volume in \f$[-]\f$. + * + * \param phaseIdx The phase index + * \param compIdx The component index + */ + Scalar moleFraction(const int phaseIdx, const int compIdx) const + { return fluidState_.moleFraction(phaseIdx, compIdx); } + + /*! + * \brief Return concentration \f$\mathrm{[mol/m^3]}\f$ of a component in the phase. + * + * \param compIdx The index of the component + */ + Scalar molarity(const int phaseIdx, int compIdx) const + { return fluidState_.molarity(phaseIdx, compIdx); } + + /*! + * \brief Return molar density \f$\mathrm{[mol/m^3]}\f$ the of the fluid phase. + */ + Scalar molarDensity(const int phaseIdx) const + { return fluidState_.molarDensity(phaseIdx);} + /*! * \brief Returns the effective mobility of a given phase within * the control volume. diff --git a/dumux/porousmediumflow/mpnc/implicit/vtkwritercommon.hh b/dumux/porousmediumflow/mpnc/implicit/vtkwritercommon.hh index 442f3fae04aecb25436e41d023e8bd4820d286ce..e6a8b735c0bf3a63d3a3780b55ddb2ecc0eb9272 100644 --- a/dumux/porousmediumflow/mpnc/implicit/vtkwritercommon.hh +++ b/dumux/porousmediumflow/mpnc/implicit/vtkwritercommon.hh @@ -157,9 +157,9 @@ public: if (mobilityOutput_) mobility_[phaseIdx][dofIdxGlobal] = volVars.mobility(phaseIdx); if (averageMolarMassOutput_) averageMolarMass_[phaseIdx][dofIdxGlobal] = volVars.fluidState().averageMolarMass(phaseIdx); for (int compIdx = 0; compIdx < numComponents; ++compIdx) { - if (moleFracOutput_) moleFrac_[phaseIdx][compIdx][dofIdxGlobal] = volVars.fluidState().moleFraction(phaseIdx, compIdx); - if (massFracOutput_) massFrac_[phaseIdx][compIdx][dofIdxGlobal] = volVars.fluidState().massFraction(phaseIdx, compIdx); - if (molarityOutput_) molarity_[phaseIdx][compIdx][dofIdxGlobal] = volVars.fluidState().molarity(phaseIdx, compIdx); + if (moleFracOutput_) moleFrac_[phaseIdx][compIdx][dofIdxGlobal] = volVars.moleFraction(phaseIdx, compIdx); + if (massFracOutput_) massFrac_[phaseIdx][compIdx][dofIdxGlobal] = volVars.massFraction(phaseIdx, compIdx); + if (molarityOutput_) molarity_[phaseIdx][compIdx][dofIdxGlobal] = volVars.molarity(phaseIdx, compIdx); } } }