diff --git a/dumux/material/fluidsystems/h2on2o2.hh b/dumux/material/fluidsystems/h2on2o2.hh index 1a144ee486a379d2f383892613b19be768a69024..e20979cd8e7208584740b8fd02de2d4e92a21b99 100644 --- a/dumux/material/fluidsystems/h2on2o2.hh +++ b/dumux/material/fluidsystems/h2on2o2.hh @@ -455,34 +455,39 @@ public: Scalar p = fluidState.pressure(phaseIdx); // liquid phase - if (phaseIdx == liquidPhaseIdx) { + if (phaseIdx == liquidPhaseIdx) + { + // assume pure water if (Policy::useH2ODensityAsLiquidMixtureDensity()) - // assume pure water return H2O::liquidDensity(T, p); + + // See: Eq. (7) in Class et al. (2002a) + // This assumes each gas molecule displaces exactly one + // molecule in the liquid. else - { - // See: Eq. (7) in Class et al. (2002a) - // This assumes each gas molecule displaces exactly one - // molecule in the liquid. return H2O::liquidMolarDensity(T, p) * (fluidState.moleFraction(liquidPhaseIdx, H2OIdx)*H2O::molarMass() + fluidState.moleFraction(liquidPhaseIdx, N2Idx)*N2::molarMass() + fluidState.moleFraction(liquidPhaseIdx, O2Idx)*O2::molarMass()); - } } // gas phase - using std::max; - if (Policy::useIdealGasDensity()) + else if (phaseIdx == gasPhaseIdx) + { + // for the gas phase assume an ideal gas - return IdealGas::molarDensity(T, p) - * fluidState.averageMolarMass(gasPhaseIdx); - - // assume ideal mixture: steam, nitrogen and oxygen don't "see" each - // other - return H2O::gasDensity(T, fluidState.partialPressure(gasPhaseIdx, H2OIdx)) - + N2::gasDensity(T, fluidState.partialPressure(gasPhaseIdx, N2Idx)) - + O2::gasDensity(T, fluidState.partialPressure(gasPhaseIdx, O2Idx)); + using std::max; + if (Policy::useIdealGasDensity()) + return IdealGas::molarDensity(T, p) * fluidState.averageMolarMass(gasPhaseIdx); + + // assume ideal mixture: steam, nitrogen and oxygen don't "see" each other + else + return H2O::gasDensity(T, fluidState.partialPressure(gasPhaseIdx, H2OIdx)) + + N2::gasDensity(T, fluidState.partialPressure(gasPhaseIdx, N2Idx)) + + O2::gasDensity(T, fluidState.partialPressure(gasPhaseIdx, O2Idx)); + } + + DUNE_THROW(Dune::InvalidStateException, "Unknown phase index " << phaseIdx); } using Base::molarDensity;