147 lines
4.9 KiB
C++
147 lines
4.9 KiB
C++
/**
|
|
* @file Tortuosity.h
|
|
* Class to compute the increase in diffusive path length in porous media
|
|
* assuming the Bruggeman exponent relation
|
|
*/
|
|
|
|
/*
|
|
* Copyright (2005) Sandia Corporation. Under the terms of
|
|
* Contract DE-AC04-94AL85000 with Sandia Corporation, the
|
|
* U.S. Government retains certain rights in this software.
|
|
*/
|
|
|
|
#ifndef CT_TORTUOSITY_H
|
|
#define CT_TORTUOSITY_H
|
|
|
|
namespace Cantera
|
|
{
|
|
|
|
//! Specific Class to handle tortuosity corrections for diffusive transport
|
|
//! in porous media using the Bruggeman exponent
|
|
/*!
|
|
* Class to compute the increase in diffusive path length associated with
|
|
* tortuous path diffusion through, for example, porous media. This base class
|
|
* implementation relates tortuosity to volume fraction through a power-law
|
|
* relationship that goes back to Bruggeman. The exponent is referred to as the
|
|
* Bruggeman exponent.
|
|
*
|
|
* Note that the total diffusional flux is generally written as
|
|
*
|
|
* \f[
|
|
* \frac{ \phi C_T D_i \nabla X_i }{ \tau^2 }
|
|
* \f]
|
|
*
|
|
* where \f$ \phi \f$ is the volume fraction of the transported phase,
|
|
* \f$ \tau \f$ is referred to as the tortuosity. (Other variables are
|
|
* \f$ C_T \f$, the total concentration, \f$ D_i \f$, the diffusion coefficient,
|
|
* and \f$ X_i \f$, the mole fraction with Fickian transport assumed.)
|
|
*/
|
|
class Tortuosity
|
|
{
|
|
public:
|
|
//! Default constructor uses Bruggeman exponent of 1.5
|
|
Tortuosity(double setPower = 1.5) : expBrug_(setPower) {
|
|
}
|
|
|
|
//! The tortuosity factor models the effective increase in the
|
|
//! diffusive transport length.
|
|
/**
|
|
* This method returns \f$ 1/\tau^2 \f$ in the description of the
|
|
* flux \f$ \phi C_T D_i \nabla X_i / \tau^2 \f$.
|
|
*/
|
|
virtual double tortuosityFactor(double porosity) {
|
|
return pow(porosity, expBrug_ - 1.0);
|
|
}
|
|
|
|
//! The McMillan number is the ratio of the flux-like
|
|
//! variable to the value it would have without porous flow.
|
|
/**
|
|
* The McMillan number combines the effect of tortuosity and volume fraction
|
|
* of the transported phase. The net flux observed is then the product of
|
|
* the McMillan number and the non-porous transport rate. For a
|
|
* conductivity in a non-porous media, \f$ \kappa_0 \f$, the conductivity in
|
|
* the porous media would be \f$ \kappa = (\rm McMillan) \kappa_0 \f$.
|
|
*/
|
|
virtual double McMillan(double porosity) {
|
|
return pow(porosity, expBrug_);
|
|
}
|
|
|
|
protected:
|
|
//! Bruggeman exponent: power to which the tortuosity depends on the volume
|
|
//! fraction
|
|
double expBrug_;
|
|
};
|
|
|
|
|
|
/**
|
|
* This class implements transport coefficient corrections appropriate for
|
|
* porous media where percolation theory applies.
|
|
*/
|
|
class TortuosityPercolation : public Tortuosity
|
|
{
|
|
public:
|
|
//! Default constructor uses Bruggeman exponent of 1.5
|
|
TortuosityPercolation(double percolationThreshold = 0.4, double conductivityExponent = 2.0) : percolationThreshold_(percolationThreshold), conductivityExponent_(conductivityExponent) {
|
|
}
|
|
|
|
double tortuosityFactor(double porosity) {
|
|
return McMillan(porosity) / porosity;
|
|
}
|
|
|
|
double McMillan(double porosity) {
|
|
return pow((porosity - percolationThreshold_)
|
|
/ (1.0 - percolationThreshold_),
|
|
conductivityExponent_);
|
|
}
|
|
|
|
protected:
|
|
//! Critical volume fraction / site density for percolation
|
|
double percolationThreshold_;
|
|
//! Conductivity exponent
|
|
/**
|
|
* The McMillan number (ratio of effective conductivity
|
|
* to non-porous conductivity) is
|
|
* \f[
|
|
* \kappa/\kappa_0 = ( \phi - \phi_c )^\mu
|
|
* \f]
|
|
* where \f$ \mu \f$ is the conductivity exponent (typical values range from
|
|
* 1.6 to 2.0) and \f$ \phi_c \f$ is the percolation threshold.
|
|
*/
|
|
double conductivityExponent_;
|
|
};
|
|
|
|
|
|
/**
|
|
* This class implements transport coefficient corrections appropriate for
|
|
* porous media with a dispersed phase. This model goes back to Maxwell. The
|
|
* formula for the conductivity is expressed in terms of the volume fraction of
|
|
* the continuous phase, \f$ \phi \f$, and the relative conductivities of the
|
|
* dispersed and continuous phases, \f$ r = \kappa_d / \kappa_0 \f$. For dilute
|
|
* particle suspensions the effective conductivity is
|
|
* \f[
|
|
* \kappa / \kappa_0 = 1 + 3 ( 1 - \phi ) ( r - 1 ) / ( r + 2 ) + O(\phi^2)
|
|
* \f]
|
|
*/
|
|
class TortuosityMaxwell : public Tortuosity
|
|
{
|
|
public:
|
|
//! Default constructor uses Bruggeman exponent of 1.5
|
|
TortuosityMaxwell(double relativeConductivites = 0.0) : relativeConductivites_(relativeConductivites) {
|
|
}
|
|
|
|
double tortuosityFactor(double porosity) {
|
|
return McMillan(porosity) / porosity;
|
|
}
|
|
|
|
double McMillan(double porosity) {
|
|
return 1 + 3 * (1.0 - porosity) * (relativeConductivites_ - 1.0) / (relativeConductivites_ + 2);
|
|
}
|
|
|
|
protected:
|
|
//! Relative conductivities of the dispersed and continuous phases,
|
|
//! `relativeConductivites_` \f$ = \kappa_d / \kappa_0 \f$.
|
|
double relativeConductivites_;
|
|
};
|
|
|
|
}
|
|
#endif
|