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