Cantera  2.0
SolidTransport.h
Go to the documentation of this file.
1 /**
2  * @file SolidTransport.h
3  * Header file for defining the class SolidTransport, which handles transport
4  * of ions within solid phases
5  * (see \ref tranprops and \link Cantera::SolidTransport SolidTransport \endlink).
6  */
7 
8 // Copyright 2003 California Institute of Technology
9 
10 #ifndef CT_SOLIDTRAN_H
11 #define CT_SOLIDTRAN_H
12 
13 // STL includes
14 #include <vector>
15 #include <string>
16 #include <map>
17 #include <numeric>
18 #include <algorithm>
19 
20 // Cantera includes
21 #include "TransportBase.h"
23 
24 namespace Cantera
25 {
26 //! Class SolidTransport implements transport properties for solids.
27 class SolidTransport : public Transport
28 {
29 
30 public:
31 
32  //! Default constructor
34 
35  //! Copy Constructor
36  /*!
37  * @param right Object to be copied
38  */
39  SolidTransport(const SolidTransport& right);
40 
41  //! Destructor
42  virtual ~SolidTransport();
43 
44  //! Assignment operator
45  /*!
46  * This is NOT a virtual function.
47  *
48  * @param right Reference to Transport object to be copied into the
49  * current one.
50  */
52 
53  //! Duplication routine for objects which inherit from
54  //! %Transport
55  /*!
56  * This virtual routine can be used to duplicate %Transport objects
57  * inherited from %Transport even if the application only has
58  * a pointer to %Transport to work with.
59  *
60  * These routines are basically wrappers around the derived copy
61  * constructor.
62  */
63  virtual Transport* duplMyselfAsTransport() const;
64 
65 
66  virtual int model() const {
67  return cSolidTransport;
68  }
69 
70  virtual doublereal thermalConductivity();
71  virtual void getMixDiffCoeffs(doublereal* const d);
72 
73  //! Compute the electrical mobilities of the species from the diffusion coefficients,
74  //! using the Einstein relation.
75  /*!
76  * Frequently, but not always, the mobility is calculated from the
77  * diffusion coefficient using the Einstein relation
78  *
79  * \f[
80  * \mu^e_k = \frac{F D_k}{R T}
81  * \f]
82  *
83  * units (m^2/V/s).
84  * @param mobil Returns the mobilities of
85  * the species in array \c mobil_e. The array must be
86  * dimensioned at least as large as the number of species.
87  */
88  virtual void getMobilities(doublereal* const mobil);
89 
90  virtual void setParameters(const int n, const int k, const doublereal* const p);
91 
92  friend class TransportFactory;
93 
94  /**
95  * The electrical conductivity (Siemens/m).
96  */
97  virtual doublereal electricalConductivity();
98 
99 
100 private:
101 
102  //! number of mobile species
103  /*!
104  * This is equal to the
105  */
106  size_t m_nmobile;
107 
108  //! Coefficient for the diffusivity of species within a solid
109  /*!
110  * This is with respect to the lattice
111  * units = m**2 / s
112  * vector of length m_nmobile
113  */
115 
116  //! Temperature power coefficient for the diffusivity of species in a solid
117  /*!
118  * vector of length m_nmobile
119  */
121 
122  //! Arrhenius factor for the species diffusivities of a solid
123  /*!
124  * units = temperature
125  * vector of length m_nmobile
126  */
128 
129  //! Index of mobile species to global species
130  /*!
131  * vector of length m_nmobile
132  */
134 
135  //! Coefficient for the thermal conductivity of a solid
136  /*!
137  * units = kg m / s3 /K = W/m/K
138  */
139  doublereal m_Alam;
140 
141  //! Temperature power coefficient for the thermal conductivity of a solid
142  doublereal m_Nlam;
143 
144  //! Arrhenius factor for the thermal conductivity of a solid
145  /*!
146  * units = temperature
147  */
148  doublereal m_Elam;
149 
150  //! extra fp array of length nSpecies()
152 };
153 }
154 #endif
155 
156 
157 
158 
159 
160