sorry, my previous email is not complete.
It's my complete email
​
​Hi,
I want to model evaporation of brine in porous media.
after checking fugacityCoefficient of brineair.hh file,I found that we use H2O 
fugacity for liquid phase.
for this reason, evaporation rate for brine and water is equal.but It is not 
correct.
I found TODO for changing fugacity of water to brine,but I don't understand why 
we can not add bellow code for  solving this problem:

change vapor pressure of brine component to:
    static Scalar vaporPressure(Scalar temperature, Scalar salinityy)
    {
        Scalar ps = H2O::vaporPressure(temperature); //Saturation vapor 
pressure for pure water
        Scalar pi = 0;
        using std::log;
        if (ThisType::salinity() < 0.26) // here we have hard coded the 
solubility limit for NaCl
            pi = (R * temperature * log(1- salinityy)); // simplified version 
of Eq 2.29 in Vishal Jambhekar's Promo
        else
            pi = (R * temperature * log(0.74));
        using std::exp;
        ps *= 0.9;// Kelvin's law for reduction in saturation vapor pressure 
due to osmotic potential
        return ps;
    }

then,change fugacitycoefficent of brineair.hh to :

    template <class FluidState>
    static Scalar fugacityCoefficient(const FluidState& fluidState, int 
phaseIdx, int compIdx)
    {
        assert(0 <= phaseIdx && phaseIdx < numPhases);
        assert(0 <= compIdx && compIdx < numComponents);

        Scalar T = fluidState.temperature(phaseIdx);
        Scalar salinityy = fluidState.massFraction(phaseIdx,NaClIdx);
        Scalar p = fluidState.pressure(phaseIdx);

        if (phaseIdx == gasPhaseIdx)
            return 1.0;

        else if (phaseIdx == liquidPhaseIdx)
        {
            // TODO: Should we use the vapor pressure of the mixture (brine) 
here?
            //       The presence of NaCl lowers the vapor pressure, thus, we 
would
            //       expect the fugacity coefficient to be lower as well. 
However,
            //       with the fugacity coefficient being dependent on the 
salinity,
            //       the equation system for the phase equilibria becomes 
non-linear
            //       and our constraint solvers assume linear system of 
equations.
            if (compIdx == H2OIdx)
                return Brinee::vaporPressure(T,salinityy)/p;

            else if (compIdx == AirIdx)
                return BinaryCoeff::H2O_Air::henry(T)/p;

            // we assume nacl always stays in the liquid phase
            else
                return 0.0;
        }

        DUNE_THROW(Dune::InvalidStateException, "Invalid phase index " << 
phaseIdx);
    }

Brinee is brine component from brine.hh file



-- 
This email was Anti Virus checked by  Security Gateway.
_______________________________________________
DuMux mailing list
[email protected]
https://listserv.uni-stuttgart.de/mailman/listinfo/dumux

Reply via email to