Added classes to compute effects of porous flow on species transport.
There are two primary methods in these classes: McMillan() that computes the ratio of the porous transport rate to the non-porous transport rate. toruosityFactor() that computes the "tortuosity" component of this ratio (the increase in the diffusion length scale). The base class implements a general Bruggemann formulation and subclasses implement a percolation theory models and Maxwell's model. I did not put in copy constructors, etc., for these calsses yet.
This commit is contained in:
parent
82e215d732
commit
e8d545fba9
2 changed files with 177 additions and 1 deletions
|
|
@ -41,7 +41,7 @@ TRAN_OBJ = TransportFactory.o MultiTransport.o MixTransport.o MMCollisionInt.
|
|||
TRAN_H = TransportFactory.h MultiTransport.h MixTransport.h \
|
||||
MMCollisionInt.h SolidTransport.h DustyGasTransport.h \
|
||||
TransportBase.h L_matrix.h TransportParams.h WaterTransport.h \
|
||||
SimpleTransport.h LiquidTranInteraction.h
|
||||
SimpleTransport.h LiquidTranInteraction.h Tortuosity.h
|
||||
|
||||
ifeq ($(do_electro),1)
|
||||
do_issp = 1
|
||||
|
|
|
|||
176
Cantera/src/transport/Tortuosity.h
Normal file
176
Cantera/src/transport/Tortuosity.h
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
/**
|
||||
* @file Tortuosity.h
|
||||
* Class to compute the increase in diffusive path length associated with
|
||||
* tortuous path diffusion through, for example, porous media.
|
||||
*/
|
||||
|
||||
namespace Cantera {
|
||||
|
||||
/**
|
||||
* 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 Bruggemann. The
|
||||
* exponent is referred to as the Bruggemann 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.)
|
||||
*
|
||||
* The tortuosity comes into play in conjunction the the
|
||||
|
||||
*/
|
||||
class Tortuosity {
|
||||
|
||||
public:
|
||||
//! Default constructor uses Bruggemann 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 toruosityFactor( 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 toruosity
|
||||
* 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:
|
||||
//! Bruggemann exponent: power to which the tortuosity depends on the volume fraction
|
||||
double expBrug_ ;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
/** This class implements transport coefficient corrections
|
||||
* appropriate for porous media where percollation theory applies.
|
||||
* It is derived from the Tortuosity class.
|
||||
*/
|
||||
class TortuosityPercolation : public Tortuosity {
|
||||
|
||||
public:
|
||||
//! Default constructor uses Bruggemann exponent of 1.5
|
||||
TortuosityPercolation( double percolationThreshold = 0.4, double conductivityExponent = 2.0 ) : percolationThreshold_(percolationThreshold), conductivityExponent_(conductivityExponent) {
|
||||
}
|
||||
|
||||
//! 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$.
|
||||
*/
|
||||
double toruosityFactor( double porosity ) {
|
||||
return McMillan( porosity ) / porosity;
|
||||
}
|
||||
|
||||
//! 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 toruosity
|
||||
* 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$.
|
||||
*/
|
||||
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]
|
||||
* The class is derived from the Tortuosity class.
|
||||
*/
|
||||
class TortuosityMaxwell : public Tortuosity {
|
||||
|
||||
public:
|
||||
//! Default constructor uses Bruggemann exponent of 1.5
|
||||
TortuosityMaxwell( double relativeConductivites = 0.0 ) : relativeConductivites_(relativeConductivites) {
|
||||
}
|
||||
|
||||
//! 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$.
|
||||
*/
|
||||
double toruosityFactor( double porosity ) {
|
||||
return McMillan( porosity ) / porosity;
|
||||
}
|
||||
|
||||
//! 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 toruosity
|
||||
* 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$.
|
||||
*/
|
||||
double McMillan( double porosity ) {
|
||||
return 1 + 3 * ( 1.0 - porosity ) * ( relativeConductivites_ - 1.0 ) / ( relativeConductivites_ + 2 );
|
||||
}
|
||||
|
||||
protected:
|
||||
//! Relative conductivities of the dispersed and continuous phases,
|
||||
//! \code{relativeConductivites_}\f$ = \kappa_d / \kappa_0 \f$.
|
||||
double relativeConductivites_;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue