diff --git a/dumux/geomechanics/el1p2c/el1p2clocalresidual.hh b/dumux/geomechanics/el1p2c/el1p2clocalresidual.hh index 27529a18c9d389ee92330ff7bfa8d9fdc90e61c9..aeb4c2a7ec0e8d559de59e087483059b4177ed98 100644 --- a/dumux/geomechanics/el1p2c/el1p2clocalresidual.hh +++ b/dumux/geomechanics/el1p2c/el1p2clocalresidual.hh @@ -116,13 +116,13 @@ namespace Dumux if(useMoles) { // storage term of the transport equation - mole fractions - storage[transportEqIdx] += volVars.fluidState().moleFraction(phaseIdx, transportCompIdx) + storage[transportEqIdx] += volVars.moleFraction(transportCompIdx) * volVars.effPorosity; } else { //storage term of the transport equation - mass fractions - storage[transportEqIdx] += volVars.fluidState().massFraction(phaseIdx, transportCompIdx) + storage[transportEqIdx] += volVars.massFraction(transportCompIdx) * volVars.effPorosity; } } @@ -209,26 +209,26 @@ namespace Dumux // advective flux of the component flux[transportEqIdx] += fluxVars.KmvpNormal() * - (( upwindWeight_)* up.fluidState().moleFraction(phaseIdx, transportCompIdx)/up.viscosity() + (( upwindWeight_)* up.moleFraction(transportCompIdx)/up.viscosity() + - (1 - upwindWeight_)* dn.fluidState().moleFraction(phaseIdx, transportCompIdx)/dn.viscosity()); + (1 - upwindWeight_)* dn.moleFraction(transportCompIdx)/dn.viscosity()); // flux of the dissolved second component due to solid displacement flux[transportEqIdx] += fluxVars.timeDerivUNormal() * - (( upwindWeight_)* up.fluidState().moleFraction(phaseIdx, transportCompIdx) + (( upwindWeight_)* up.moleFraction(transportCompIdx) * up.effPorosity + - (1 - upwindWeight_)*dn.fluidState().moleFraction(phaseIdx, transportCompIdx) + (1 - upwindWeight_)*dn.moleFraction(transportCompIdx) * up.effPorosity); // stabilization term if(withStabilization_) flux[transportEqIdx] -= stabilizationTerm * - (( upwindWeight_)* up.fluidState().moleFraction(phaseIdx, transportCompIdx) + (( upwindWeight_)* up.moleFraction(transportCompIdx) + - (1 - upwindWeight_)*dn.fluidState().moleFraction(phaseIdx, transportCompIdx)); + (1 - upwindWeight_)*dn.moleFraction(transportCompIdx)); } else { @@ -236,26 +236,26 @@ namespace Dumux // advective flux of the component flux[transportEqIdx] += fluxVars.KmvpNormal() * - (( upwindWeight_)* up.fluidState().massFraction(phaseIdx, transportCompIdx)/up.viscosity() + (( upwindWeight_)* up.massFraction(transportCompIdx)/up.viscosity() + - (1 - upwindWeight_)* dn.fluidState().massFraction(phaseIdx, transportCompIdx)/dn.viscosity()); + (1 - upwindWeight_)* dn.massFraction(transportCompIdx)/dn.viscosity()); // flux of the dissolved second component due to solid displacement flux[transportEqIdx] += fluxVars.timeDerivUNormal() * - (( upwindWeight_)* up.fluidState().massFraction(phaseIdx, transportCompIdx) + (( upwindWeight_)* up.massFraction(transportCompIdx) * up.effPorosity + - (1 - upwindWeight_)*dn.fluidState().massFraction(phaseIdx, transportCompIdx) + (1 - upwindWeight_)*dn.massFraction(transportCompIdx) * up.effPorosity); // stabilization term if(withStabilization_) flux[transportEqIdx] -= stabilizationTerm * - (( upwindWeight_)* up.fluidState().massFraction(phaseIdx, transportCompIdx) + (( upwindWeight_)* up.massFraction(transportCompIdx) + - (1 - upwindWeight_)*dn.fluidState().massFraction(phaseIdx, transportCompIdx)); + (1 - upwindWeight_)*dn.massFraction(transportCompIdx)); } } diff --git a/dumux/geomechanics/el1p2c/el1p2cvolumevariables.hh b/dumux/geomechanics/el1p2c/el1p2cvolumevariables.hh index 68f1977069d636e2dc1ca0c24a75a85df2b4ee3b..d647b13a292ed2e7024e063f8057d5e52d4bb71f 100644 --- a/dumux/geomechanics/el1p2c/el1p2cvolumevariables.hh +++ b/dumux/geomechanics/el1p2c/el1p2cvolumevariables.hh @@ -57,6 +57,8 @@ class ElOnePTwoCVolumeVariables : public OnePTwoCVolumeVariables<TypeTag>{ enum { dim = GridView::dimension }; + enum { phaseIdx = GET_PROP_VALUE(TypeTag, PhaseIdx) }; + typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; typedef Dune::FieldVector<Scalar,dim> DimVector; @@ -170,6 +172,24 @@ public: mutable Scalar effPorosity; mutable Scalar divU; + /*! + * \brief Returns the mass fraction of a given component in the + * given fluid phase within the control volume. + * + * \param compIdx The component index + */ + Scalar massFraction(const int compIdx) const + { return this->fluidState_.massFraction(phaseIdx, compIdx); } + + /*! + * \brief Returns the mole fraction of a given component in the + * given fluid phase within the control volume. + * + * \param compIdx The component index + */ + Scalar moleFraction(const int compIdx) const + { return this->fluidState_.moleFraction(phaseIdx, compIdx); } + protected: PrimaryVariables primaryVars_, prevPrimaryVars_; DimVector displacement_, prevDisplacement_;