Cantera  2.0
Tortuosity.h
1 /**
2  * @file TortuosityBruggeman.h
3  * Class to compute the increase in diffusive path length in porous media
4  * assuming the Bruggeman exponent relation
5  */
6 
7 /*
8  * Copyright (2005) Sandia Corporation. Under the terms of
9  * Contract DE-AC04-94AL85000 with Sandia Corporation, the
10  * U.S. Government retains certain rights in this software.
11  */
12 
13 #ifndef CT_TORTUOSITY_H
14 #define CT_TORTUOSITY_H
15 
16 namespace Cantera
17 {
18 
19 //! Specific Class to handle tortuosity corrections for diffusive transport
20 //! in porous media using the Bruggeman exponent
21 /*!
22  * Class to compute the increase in diffusive path length associated with
23  * tortuous path diffusion through, for example, porous media.
24  * This base class implementation relates tortuosity to volume fraction
25  * through a power-law relationship that goes back to Bruggeman. The
26  * exponent is referred to as the Bruggeman exponent.
27  *
28  * Note that the total diffusional flux is generally written as
29  *
30  * \f[
31  * \frac{ \phi C_T D_i \nabla X_i }{ \tau^2 }
32  * \f]
33  *
34  * where \f$ \phi \f$ is the volume fraction of the transported phase,
35  * \f$ \tau \f$ is referred to as the tortuosity. (Other variables are
36  * \f$ C_T \f$, the total concentration, \f$ D_i \f$, the diffusion
37  * coefficient, and \f$ X_i \f$, the mole fraction with Fickian
38  * transport assumed.)
39  *
40  * The tortuosity comes into play in conjunction the the
41  */
42 class Tortuosity
43 {
44 
45 public:
46  //! Default constructor uses Bruggeman exponent of 1.5
47  Tortuosity(double setPower = 1.5) : expBrug_(setPower) {
48  }
49 
50  //! The tortuosity factor models the effective increase in the
51  //! diffusive transport length.
52  /**
53  * This method returns \f$ 1/\tau^2 \f$ in the description of the
54  * flux \f$ \phi C_T D_i \nabla X_i / \tau^2 \f$.
55  */
56  virtual double tortuosityFactor(double porosity) {
57  return pow(porosity, expBrug_ - 1.0);
58  }
59 
60  //! The McMillan number is the ratio of the flux-like
61  //! variable to the value it would have without porous flow.
62  /**
63  * The McMillan number combines the effect of tortuosity
64  * and volume fraction of the transported phase. The net flux
65  * observed is then the product of the McMillan number and the
66  * non-porous transport rate. For a conductivity in a non-porous
67  * media, \f$ \kappa_0 \f$, the conductivity in the porous media
68  * would be \f$ \kappa = (\rm McMillan) \kappa_0 \f$.
69  */
70  virtual double McMillan(double porosity) {
71  return pow(porosity, expBrug_);
72  }
73 
74 protected:
75  //! Bruggeman exponent: power to which the tortuosity depends on the volume fraction
76  double expBrug_ ;
77 
78 };
79 
80 
81 
82 /** This class implements transport coefficient corrections
83  * appropriate for porous media where percolation theory applies.
84  * It is derived from the Tortuosity class.
85  */
86 class TortuosityPercolation : public Tortuosity
87 {
88 
89 public:
90  //! Default constructor uses Bruggeman exponent of 1.5
91  TortuosityPercolation(double percolationThreshold = 0.4, double conductivityExponent = 2.0) : percolationThreshold_(percolationThreshold), conductivityExponent_(conductivityExponent) {
92  }
93 
94  //! The tortuosity factor models the effective increase in the
95  //! diffusive transport length.
96  /**
97  * This method returns \f$ 1/\tau^2 \f$ in the description of the
98  * flux \f$ \phi C_T D_i \nabla X_i / \tau^2 \f$.
99  */
100  double tortuosityFactor(double porosity) {
101  return McMillan(porosity) / porosity;
102  }
103 
104  //! The McMillan number is the ratio of the flux-like
105  //! variable to the value it would have without porous flow.
106  /**
107  * The McMillan number combines the effect of tortuosity
108  * and volume fraction of the transported phase. The net flux
109  * observed is then the product of the McMillan number and the
110  * non-porous transport rate. For a conductivity in a non-porous
111  * media, \f$ \kappa_0 \f$, the conductivity in the porous media
112  * would be \f$ \kappa = (\rm McMillan) \kappa_0 \f$.
113  */
114  double McMillan(double porosity) {
115  return pow((porosity - percolationThreshold_)
116  / (1.0 - percolationThreshold_),
118  }
119 
120 protected:
121  //! Critical volume fraction / site density for percolation
122  double percolationThreshold_;
123  //! Conductivity exponent
124  /**
125  * The McMillan number (ratio of effective conductivity
126  * to non-porous conductivity) is
127  * \f[ \kappa/\kappa_0 = ( \phi - \phi_c )^\mu \f]
128  * where \f$ \mu \f$ is the conductivity exponent (typical
129  * values range from 1.6 to 2.0) and \f$ \phi_c \f$
130  * is the percolation threshold.
131  */
132  double conductivityExponent_;
133 };
134 
135 
136 
137 /** This class implements transport coefficient corrections
138  * appropriate for porous media with a dispersed phase.
139  * This model goes back to Maxwell. The formula for the
140  * conductivity is expressed in terms of the volume fraction
141  * of the continuous phase, \f$ \phi \f$, and the relative
142  * conductivities of the dispersed and continuous phases,
143  * \f$ r = \kappa_d / \kappa_0 \f$. For dilute particle
144  * suspensions the effective conductivity is
145  * \f[
146  * \kappa / \kappa_0 = 1 + 3 ( 1 - \phi ) ( r - 1 ) / ( r + 2 )
147  * + O(\phi^2)
148  * \f]
149  * The class is derived from the Tortuosity class.
150  */
151 class TortuosityMaxwell : public Tortuosity
152 {
153 
154 public:
155  //! Default constructor uses Bruggeman exponent of 1.5
156  TortuosityMaxwell(double relativeConductivites = 0.0) : relativeConductivites_(relativeConductivites) {
157  }
158 
159  //! The tortuosity factor models the effective increase in the
160  //! diffusive transport length.
161  /**
162  * This method returns \f$ 1/\tau^2 \f$ in the description of the
163  * flux \f$ \phi C_T D_i \nabla X_i / \tau^2 \f$.
164  */
165  double tortuosityFactor(double porosity) {
166  return McMillan(porosity) / porosity;
167  }
168 
169  //! The McMillan number is the ratio of the flux-like
170  //! variable to the value it would have without porous flow.
171  /**
172  * The McMillan number combines the effect of tortuosity
173  * and volume fraction of the transported phase. The net flux
174  * observed is then the product of the McMillan number and the
175  * non-porous transport rate. For a conductivity in a non-porous
176  * media, \f$ \kappa_0 \f$, the conductivity in the porous media
177  * would be \f$ \kappa = (\rm McMillan) \kappa_0 \f$.
178  */
179  double McMillan(double porosity) {
180  return 1 + 3 * (1.0 - porosity) * (relativeConductivites_ - 1.0) / (relativeConductivites_ + 2);
181  }
182 
183 protected:
184  //! Relative conductivities of the dispersed and continuous phases,
185  //! \code{relativeConductivites_}\f$ = \kappa_d / \kappa_0 \f$.
186  double relativeConductivites_;
187 
188 };
189 
190 }
191 #endif