Cantera  3.1.0a1
CoverageDependentSurfPhase.h
Go to the documentation of this file.
1 /**
2  * @file CoverageDependentSurfPhase.h
3  * Header for a thermodynamics model of a coverage-dependent surface
4  * phase derived from SurfPhase, applying adsorbate lateral interaction
5  * correction factors to the SurfPhase thermodynamic properties.
6  * (see @ref thermoprops and class
7  * @link Cantera::CoverageDependentSurfPhase CoverageDependentSurfPhase@endlink).
8  */
9 
10 // This file is part of Cantera. See License.txt in the top-level directory or
11 // at https://cantera.org/license.txt for license and copyright information.
12 
13 #ifndef CT_COVERAGEDEPENDENTSURFPHASE_H
14 #define CT_COVERAGEDEPENDENTSURFPHASE_H
15 
16 #include "SurfPhase.h"
17 #include "cantera/base/Array.h"
18 
19 namespace Cantera
20 {
21 
22 //! A thermodynamic model for a coverage-dependent surface phase, applying surface
23 //! species lateral interaction correction factors to the ideal surface phase
24 //! properties.
25 /*!
26  * The ideal surface phase assumes no lateral interaction among surface species.
27  * This coverage-dependent surface phase allows adding lateral interaction
28  * correction terms to the ideal surface phase (SurfPhase) thermodynamic properties
29  * so that more accurate surface species thermochemistry can be achieved.
30  *
31  * ## Coverage-dependent Thermodynamic Properties Formulations
32  *
33  * At a low-coverage limit, a surface species thermochemistry is the same as
34  * that of ideal surface species since there are no adsorbates in the vicinity
35  * to cause lateral interaction. Therefore, it is logical to set ideal surface
36  * species properties as the low-coverage limit and add lateral interaction terms
37  * to them as excess properties. Accordingly, standard state coverage-dependent
38  * enthalpy, entropy, and heat capacity of a surface species @f$ k @f$ can be
39  * formulated as follows.
40  *
41  * @f[
42  * h_k^o(T,\theta)
43  * = \underbrace{h_k^{o,ideal}(T)
44  * + \int_{298}^{T}c_{p,k}^{o,ideal}(T)dT}_{\text{low-coverage limit}}
45  * + \underbrace{h_k^{o,cov}(T,\theta)
46  * + \int_{298}^{T}c_{p,k}^{o,cov}(T,\theta)dT}_{\text{coverage dependence}}
47  *
48  * @f]
49  *
50  * @f[
51  * s_k^o(T,\theta)
52  * = \underbrace{s_k^{o,ideal}(T)
53  * + \int_{298}^{T}\frac{c_{p,k}^{o,ideal}(T)}{T}dT}_{\text{low-coverage limit}}
54  * + \underbrace{s_k^{o,cov}(T,\theta)
55  * + \int_{298}^{T}\frac{c_{p,k}^{o,cov}(T,\theta)}{T}dT}_{\text{coverage
56  * dependence}}
57  * @f]
58  *
59  * @f[
60  * c_{p,k}^o(T,\theta)
61  * = \underbrace{c_{p,k}^{o,ideal}(T)}_{\text{low-coverage limit}}
62  * + \underbrace{c_{p,k}^{o,cov}(T,\theta)}_{\text{coverage dependence}}
63  * @f]
64  *
65  * ## Mathematical Models for Coverage-dependent Correction Terms
66  *
67  * Coverage-dependent correction terms for enthalpy and entropy can be calculated
68  * with one of the four algebraic models: linear dependency model, polynomial
69  * dependency model, piecewise-linear, and interpolative dependency model.
70  * In the dependency model equations, a coverage-dependent correction term is denoted
71  * by @f$ f^{cov} @f$ where @f$ f @f$ can be either enthalpy (@f$ h^{cov} @f$) or
72  * entropy (@f$ s^{cov} @f$). Because lateral interaction can compose of both
73  * self- and cross- interactions, the total correction term of species @f$ k @f$
74  * is a sum of all interacting species @f$ j @f$ which can include itself.
75  * Coefficients @f$ c^{(1)}_{k,j}-c^{(6)}_{k,j} @f$ are user-provided parameters
76  * that can be given in a input yaml.
77  *
78  * Linear dependency model:
79  * @f[
80  * f^{cov}_k(\theta) = \sum_j c^{(1)}_{k,j} \theta_j
81  * @f]
82  *
83  * Polynomial dependency model:
84  * @f[
85  * f^{cov}_k(\theta) =
86  * \sum_j \left[c^{(1)}_{k,j}\theta_j + c^{(2)}_{k,j}\theta_j^2
87  * + c^{(3)}_{k,j}\theta_j^3 + c^{(4)}_{k,j}\theta_j^4\right]
88  * @f]
89  *
90  * Piecewise-linear dependency model:
91  * @f[
92  * f^{cov}_k(\theta) = \sum_j \left\{
93  * \begin{array}{ll}
94  * c^{(5)}_{k,j}\theta_j & \text{, } \theta_j \leq \theta^\text{change}_{k,j} \\
95  * \left[c^{(6)}_{k,j}(\theta_j - \theta^\text{change}_{k,j})
96  * + (c^{(5)}_{k,j}\theta^\text{change}_{k,j})\right]
97  * & \text{, } \theta_j > \theta^\text{change}_{k,j} \\
98  * \end{array}
99  * \right.
100  * @f]
101  *
102  * Interpolative dependency model:
103  * @f[
104  * f^{cov}_k(\theta) =
105  * \sum_j \left[\frac{f^{cov}_k(\theta^{higher}_j) - f^{cov}_k(\theta^{lower}_j)}
106  * {\theta^{higher}_j - \theta^{lower}_j}(\theta_j - \theta^{lower}_j)
107  * + f^{cov}_k (\theta^{lower}_j)\right] \\
108  * \text{where } \theta^{lower}_j \leq \theta_j < \theta^{higher}_j
109  * @f]
110  *
111  * Coverage-dependent heat capacity is calculated using an equation with a
112  * quadratic dependence on coverages and a logarithmic dependence on temperature.
113  * Temperature is nondimensionalized with a reference temperature of 1 K.
114  * The coverage-dependent heat capacity of species @f$ k @f$ is a sum of
115  * all quantities dependent on coverage of species @f$ j @f$. Coefficients
116  * @f$ c^{(a)}_{k,j} \text{ and } c^{(b)}_{k,j} @f$ are user-provided parameters
117  * that can be given in an input yaml.
118  *
119  * Coverage-dependent heat capacity model:
120  * @f[
121  * c^{cov}_{p,k}(\theta) =
122  * \sum_j \left(c^{(a)}_{k,j} \ln\left(\frac{T}{1\text{ K}}\right)
123  * + c^{(b)}_{k,j}\right) \theta_j^2
124  * @f]
125  */
127 {
128 public:
129  //! A struct to store sets of parameters used in coverage-dependent enthalpy
130  //! and entropy calculations by a polynomial equation or a linear equation
131  //! in CoverageDependentSurfPhase.
133  {
134  /*!
135  * @param k index of a target species whose enthalpy and entropy are calculated
136  * @param j index of a species whose coverage affects enthalpy and entropy of
137  * a target species
138  * @param dep_map map of coverage-dependency parameters
139  */
140  PolynomialDependency(size_t k, size_t j, const AnyMap& dep_map);
141 
142  //! index of a target species whose enthalpy and entropy is calculated
143  size_t k;
144  //! index of a species whose coverage affects enthalpy and entropy of
145  //! a target species
146  size_t j;
147  //! array of polynomial coefficients describing coverage-dependent enthalpy
148  //! [J/kmol] in order of 1st-order, 2nd-order, 3rd-order, and 4th-order
149  //! coefficients (@f$ c^{(1)}, c^{(2)}, c^{(3)}, \text{ and } c^{(4)} @f$
150  //! in the linear or the polynomial dependency model)
151  vector<double> enthalpy_coeffs;
152  //! array of polynomial coefficients describing coverage-dependent entropy
153  //! [J/kmol/K] in order of 1st-order, 2nd-order, 3rd-order, and 4th-order
154  //! coefficients (@f$ c^{(1)}, c^{(2)}, c^{(3)}, \text{ and } c^{(4)} @f$
155  //! in the linear or the polynomial dependency model)
156  vector<double> entropy_coeffs;
157  //! boolean indicating whether the dependency is linear
158  bool isLinear;
159  };
160 
161  //! A struct to store sets of parameters used in coverage-dependent enthalpy
162  //! and entropy calculations by a interpolative equation or a piecewise-linear
163  //! equation in CoverageDependentSurfPhase.
165  {
166  /*!
167  * @param k index of a target species whose enthalpy and entropy are calculated
168  * @param j index of a species whose coverage affects enthalpy and entropy of
169  * a target species
170  * @param dep_map map of coverage-dependency parameters
171  * @param node species node of a target species
172  */
173  InterpolativeDependency(size_t k, size_t j,
174  const AnyMap& dep_map, const AnyBase& node);
175 
176  //! index of a target species whose enthalpy and entropy are calculated
177  size_t k;
178  //! index of a species whose coverage affects enthalpy and entropy of
179  //! a target species
180  size_t j;
181  //! map of <coverage[dimensionless], enthalpy[J/kmol]> pairs
182  map<double, double> enthalpy_map;
183  //! map of <coverage[dimensionless], entropy[J/kmol/K]> pairs
184  map<double, double> entropy_map;
185  //! boolean indicating whether the dependency is piecewise-linear
187  };
188 
189  //! A struct to store sets of parameters used in coverage-dependent heat capacity
190  //! calculations by a log-quadratic equation in CoverageDependentSurfPhase.
192  {
193  /*!
194  * @param k index of a target species whose heat capacity is calculated
195  * @param j index of a species whose coverage affects heat capacity of
196  * a target species
197  */
198  HeatCapacityDependency(size_t k, size_t j):
199  k(k), j(j), coeff_a(0.0), coeff_b(0.0) {}
200  //! index of a target species whose heat capacity is calculated
201  size_t k;
202  //! index of a species whose coverage affects heat capacity of
203  //! a target species
204  size_t j;
205  //! coefficient @f$ c^{(a)} @f$ [J/kmol/K] in the coverage-dependent
206  //! heat capacity model
207  double coeff_a;
208  //! coefficient @f$ c^{(b)} @f$ [J/kmol/K] in the coverage-dependent
209  //! heat capacity model
210  double coeff_b;
211  };
212 
213  //! Construct and initialize a CoverageDependentSurfPhase ThermoPhase object
214  //! directly from an ASCII input file.
215  /*!
216  * @param infile name of the input file. If blank, an empty phase will be created.
217  * @param id name of the phase id in the file. If blank, the first phase
218  * in the file is used.
219  */
220  explicit CoverageDependentSurfPhase(const string& infile="",
221  const string& id="");
222 
223  string type() const override {
224  return "coverage-dependent-surface";
225  }
226 
227  //! Add interpolative coverage dependence parameters for a species
228  /*!
229  * @param int_deps list of parameters as an InterpolativeDependency object
230  */
231  void addInterpolativeDependency(const InterpolativeDependency& int_deps);
232 
233  void initThermo() override;
234  bool addSpecies(shared_ptr<Species> spec) override;
235  void getParameters(AnyMap& phaseNode) const override;
236  void getSpeciesParameters(const string& name, AnyMap& speciesNode) const override;
237 
238  //! @name Methods calculating reference state thermodynamic properties
239  //! Reference state properties are evaluated at @f$ T \text{ and }
240  //! \theta^{ref} @f$. With coverage fixed at a reference value,
241  //! reference state properties are effectively only dependent on temperature.
242  //! @{
243  void getEnthalpy_RT_ref(double* hrt) const override;
244  void getEntropy_R_ref(double* sr) const override;
245  void getCp_R_ref(double* cpr) const override;
246  void getGibbs_RT_ref(double* grt) const override;
247  //! @}
248 
249  //! @name Methods calculating standard state thermodynamic properties
250  //! Standard state properties are evaluated at @f$ T \text{ and } \theta @f$,
251  //! and thus are dependent both on temperature and coverage.
252  //! @{
253 
254  //! Get the nondimensionalized standard state enthalpy vector.
255  /*!
256  * @f[
257  * \frac{h^o_k(T,\theta)}{RT}
258  * = \frac{h^{ref}_k(T) + h^{cov}_k(T,\theta)
259  * + \int_{298}^{T} c^{cov}_{p,k}(T,\theta)dT}{RT}
260  * @f]
261  */
262  void getEnthalpy_RT(double* hrt) const override;
263 
264  //! Get the nondimensionalized standard state entropy vector.
265  /*!
266  * @f[
267  * \frac{s^o_k(T,\theta)}{R}
268  * = \frac{s^{ref}_k(T) + s^{cov}_k(T,\theta)
269  * + \int_{298}^{T}\frac{c^{cov}_{p,k}(T,\theta)}{T}dT}{R}
270  * - \ln\left(\frac{1}{\theta_{ref}}\right)
271  * @f]
272  */
273  void getEntropy_R(double* sr) const override;
274 
275  //! Get the nondimensionalized standard state heat capacity vector.
276  /*!
277  * @f[
278  * \frac{c^o_{p,k}(T,\theta)}{RT}
279  * = \frac{c^{ref}_{p,k}(T) + c^{cov}_{p,k}(T,\theta)}{RT}
280  * @f]
281  */
282  void getCp_R(double* cpr) const override;
283 
284  //! Get the nondimensionalized standard state gibbs free energy vector.
285  /*!
286  * @f[
287  * \frac{g^o_k(T,\theta)}{RT}
288  * = \frac{h^o_k(T,\theta)}{RT} + \frac{s^o_k(T,\theta)}{R}
289  * @f]
290  */
291  void getGibbs_RT(double* grt) const override;
292 
293  //! Get the standard state gibbs free energy vector. Units: J/kmol.
294  /*!
295  * @f[
296  * g^o_k(T,\theta) = h^o_k(T,\theta) + Ts^o_k(T,\theta)
297  * @f]
298  */
299  void getPureGibbs(double* g) const override;
300 
301  //! Get the standard state chemical potential vector. Units: J/kmol.
302  /*!
303  * @f[
304  * \mu^o_k(T,\theta) = h^o_k(T,\theta) + Ts^o_k(T,\theta)
305  * @f]
306  */
307  void getStandardChemPotentials(double* mu0) const override;
308  //! @}
309 
310  //! @name Methods calculating partial molar thermodynamic properties
311  //! Partial molar properties are evaluated at @f$ T \text{ and } \theta @f$,
312  //! and thus are dependent both on temperature and coverage.
313  //! @{
314 
315  //! Get the partial molar enthalpy vector. Units: J/kmol.
316  /*!
317  * @f[
318  * \tilde{h}_k(T,\theta) = h^o_k(T,\theta)
319  * @f]
320  */
321  void getPartialMolarEnthalpies(double* hbar) const override;
322 
323  //! Get the partial molar entropy vector. Units: J/kmol/K.
324  /*!
325  * @f[
326  * \tilde{s}_k(T,\theta) = s^o_k(T,\theta) - R\ln(\theta_k)
327  * @f]
328  */
329  void getPartialMolarEntropies(double* sbar) const override;
330 
331  //! Get the partial molar heat capacity vector. Units: J/kmol/K.
332  /*!
333  * @f[
334  * \tilde{c}_{p,k}(T,\theta) = c^o_{p,k}(T,\theta)
335  * @f]
336  */
337  void getPartialMolarCp(double* cpbar) const override;
338 
339  //! Get the chemical potential vector. Units: J/kmol.
340  /*!
341  * @f[
342  * \mu_k(T,\theta) = \mu^o_k(T,\theta) + RT\ln(\theta_k)
343  * @f]
344  */
345  void getChemPotentials(double* mu) const override;
346  //! @}
347 
348  //! @name Methods calculating Phase thermodynamic properties
349  //! Phase properties are evaluated at @f$ T \text{ and } \theta @f$,
350  //! and thus are dependent both on temperature and coverage.
351 
352  //! @{
353 
354  //! Return the solution's molar enthalpy. Units: J/kmol
355  /*!
356  * @f[
357  * \hat h(T,\theta) = \sum_k \theta_k \tilde{h}_k(T,\theta)
358  * @f]
359  */
360  double enthalpy_mole() const override;
361 
362  //! Return the solution's molar entropy. Units: J/kmol/K
363  /*!
364  * @f[
365  * \hat s(T,\theta) = \sum_k \theta_k \tilde{s}_k(T,\theta)
366  * @f]
367  */
368  double entropy_mole() const override;
369 
370  //! Return the solution's molar heat capacity. Units: J/kmol/K
371  /*!
372  * @f[
373  * \hat{c_p}(T,\theta) = \sum_k \theta_k \tilde{c_p}_k(T,\theta)
374  * @f]
375  */
376  double cp_mole() const override;
377  //! @}
378 
379 protected:
380  //! Temporary storage for the coverages.
381  mutable vector<double> m_cov;
382 
383  //! Temporary storage for the coverage-dependent enthalpies.
384  mutable vector<double> m_h_cov;
385 
386  //! Temporary storage for the coverage-dependent entropies.
387  mutable vector<double> m_s_cov;
388 
389  //! Temporary storage for the coverage-dependent heat capacities.
390  mutable vector<double> m_cp_cov;
391 
392  //! Temporary storage for the coverage-dependent chemical potentials.
393  mutable vector<double> m_mu_cov;
394 
395  //! Temporary storage for the sum of reference state enthalpies and
396  //! coverage-dependent enthalpies.
397  mutable vector<double> m_enthalpy;
398 
399  //! Temporary storage for the sum of reference state entropies and
400  //! coverage-dependent entropies.
401  mutable vector<double> m_entropy;
402 
403  //! Temporary storage for the sum of reference state heat capacities and
404  //! coverage-dependent heat capacities.
405  mutable vector<double> m_heatcapacity;
406 
407  //! Temporary storage for the sum of reference state chemical potentials
408  //! and coverage-dependent chemical potentials.
409  mutable vector<double> m_chempot;
410 
411  //! Array of enthalpy and entropy coverage dependency parameters used in
412  //! the linear and polynomial dependency equations.
413  vector<PolynomialDependency> m_PolynomialDependency;
414 
415  //! Array of enthalpy and entropy coverage dependency parameters used in
416  //! the piecewise-linear and interpolative dependency equations.
417  vector<InterpolativeDependency> m_InterpolativeDependency;
418 
419  //! Array of heat capacity coverage dependency parameters.
420  vector<HeatCapacityDependency> m_HeatCapacityDependency;
421 
422 private:
423  //! Storage for the user-defined reference state coverage which has to be
424  //! greater than 0.0 and less than or equal to 1.0. default = 1.0.
425  double m_theta_ref;
426 
427  //! Last value of the state number processed.
428  mutable int m_stateNumlast;
429 
430  //! Update the species coverage-dependent thermodynamic functions.
431  /*!
432  * The coverage-dependent enthalpy and entropy are only re-evaluated
433  * if the coverage has changed. The coverage-dependent heat capacity
434  * is only re-evaluated if the coverage or temperature has changed.
435  */
436  void _updateCovDepThermo() const;
437 
438  //! Update the total (reference state + coverage-dependent)
439  //! thermodynamic functions.
440  /*!
441  * Calls subroutines for both ideal species thermodynamic update and
442  * coverage-dependent species thermodynamic update.
443  */
444  void _updateTotalThermo() const;
445 
446 };
447 
448 }
449 
450 #endif
Header file for class Cantera::Array2D.
Header for a simple thermodynamics model of a surface phase derived from ThermoPhase,...
Base class defining common data possessed by both AnyMap and AnyValue objects.
Definition: AnyMap.h:34
A map of string keys to values whose type can vary at runtime.
Definition: AnyMap.h:427
A thermodynamic model for a coverage-dependent surface phase, applying surface species lateral intera...
void getStandardChemPotentials(double *mu0) const override
Get the standard state chemical potential vector. Units: J/kmol.
void getPureGibbs(double *g) const override
Get the standard state gibbs free energy vector. Units: J/kmol.
double enthalpy_mole() const override
Return the solution's molar enthalpy. Units: J/kmol.
vector< double > m_entropy
Temporary storage for the sum of reference state entropies and coverage-dependent entropies.
vector< InterpolativeDependency > m_InterpolativeDependency
Array of enthalpy and entropy coverage dependency parameters used in the piecewise-linear and interpo...
void getPartialMolarEnthalpies(double *hbar) const override
Get the partial molar enthalpy vector. Units: J/kmol.
void getChemPotentials(double *mu) const override
Get the chemical potential vector. Units: J/kmol.
void getSpeciesParameters(const string &name, AnyMap &speciesNode) const override
Get phase-specific parameters of a Species object such that an identical one could be reconstructed a...
void getEntropy_R(double *sr) const override
Get the nondimensionalized standard state entropy vector.
CoverageDependentSurfPhase(const string &infile="", const string &id="")
Construct and initialize a CoverageDependentSurfPhase ThermoPhase object directly from an ASCII input...
vector< double > m_enthalpy
Temporary storage for the sum of reference state enthalpies and coverage-dependent enthalpies.
vector< HeatCapacityDependency > m_HeatCapacityDependency
Array of heat capacity coverage dependency parameters.
void getCp_R_ref(double *cpr) const override
Returns the vector of nondimensional constant pressure heat capacities of the reference state at the ...
void getCp_R(double *cpr) const override
Get the nondimensionalized standard state heat capacity vector.
void getParameters(AnyMap &phaseNode) const override
Store the parameters of a ThermoPhase object such that an identical one could be reconstructed using ...
string type() const override
String indicating the thermodynamic model implemented.
void initThermo() override
Initialize the ThermoPhase object after all species have been set up.
vector< double > m_h_cov
Temporary storage for the coverage-dependent enthalpies.
void getEntropy_R_ref(double *sr) const override
Returns the vector of nondimensional entropies of the reference state at the current temperature of t...
int m_stateNumlast
Last value of the state number processed.
vector< double > m_chempot
Temporary storage for the sum of reference state chemical potentials and coverage-dependent chemical ...
void addInterpolativeDependency(const InterpolativeDependency &int_deps)
Add interpolative coverage dependence parameters for a species.
vector< double > m_heatcapacity
Temporary storage for the sum of reference state heat capacities and coverage-dependent heat capaciti...
void _updateTotalThermo() const
Update the total (reference state + coverage-dependent) thermodynamic functions.
void getEnthalpy_RT(double *hrt) const override
Get the nondimensionalized standard state enthalpy vector.
double m_theta_ref
Storage for the user-defined reference state coverage which has to be greater than 0....
void _updateCovDepThermo() const
Update the species coverage-dependent thermodynamic functions.
void getGibbs_RT(double *grt) const override
Get the nondimensionalized standard state gibbs free energy vector.
double entropy_mole() const override
Return the solution's molar entropy. Units: J/kmol/K.
vector< double > m_mu_cov
Temporary storage for the coverage-dependent chemical potentials.
vector< double > m_s_cov
Temporary storage for the coverage-dependent entropies.
double cp_mole() const override
Return the solution's molar heat capacity. Units: J/kmol/K.
vector< double > m_cov
Temporary storage for the coverages.
void getPartialMolarCp(double *cpbar) const override
Get the partial molar heat capacity vector. Units: J/kmol/K.
bool addSpecies(shared_ptr< Species > spec) override
Add a Species to this Phase.
void getGibbs_RT_ref(double *grt) const override
Returns the vector of nondimensional Gibbs Free Energies of the reference state at the current temper...
vector< PolynomialDependency > m_PolynomialDependency
Array of enthalpy and entropy coverage dependency parameters used in the linear and polynomial depend...
vector< double > m_cp_cov
Temporary storage for the coverage-dependent heat capacities.
void getPartialMolarEntropies(double *sbar) const override
Get the partial molar entropy vector. Units: J/kmol/K.
void getEnthalpy_RT_ref(double *hrt) const override
Returns the vector of nondimensional enthalpies of the reference state at the current temperature of ...
string name() const
Return the name of the phase.
Definition: Phase.cpp:20
A simple thermodynamic model for a surface phase, assuming an ideal solution model.
Definition: SurfPhase.h:98
Namespace for the Cantera kernel.
Definition: AnyMap.cpp:564
A struct to store sets of parameters used in coverage-dependent heat capacity calculations by a log-q...
double coeff_a
coefficient [J/kmol/K] in the coverage-dependent heat capacity model
size_t k
index of a target species whose heat capacity is calculated
size_t j
index of a species whose coverage affects heat capacity of a target species
double coeff_b
coefficient [J/kmol/K] in the coverage-dependent heat capacity model
A struct to store sets of parameters used in coverage-dependent enthalpy and entropy calculations by ...
map< double, double > enthalpy_map
map of <coverage[dimensionless], enthalpy[J/kmol]> pairs
size_t k
index of a target species whose enthalpy and entropy are calculated
bool isPiecewise
boolean indicating whether the dependency is piecewise-linear
size_t j
index of a species whose coverage affects enthalpy and entropy of a target species
map< double, double > entropy_map
map of <coverage[dimensionless], entropy[J/kmol/K]> pairs
InterpolativeDependency(size_t k, size_t j, const AnyMap &dep_map, const AnyBase &node)
A struct to store sets of parameters used in coverage-dependent enthalpy and entropy calculations by ...
PolynomialDependency(size_t k, size_t j, const AnyMap &dep_map)
vector< double > entropy_coeffs
array of polynomial coefficients describing coverage-dependent entropy [J/kmol/K] in order of 1st-ord...
vector< double > enthalpy_coeffs
array of polynomial coefficients describing coverage-dependent enthalpy [J/kmol] in order of 1st-orde...
size_t k
index of a target species whose enthalpy and entropy is calculated
size_t j
index of a species whose coverage affects enthalpy and entropy of a target species
bool isLinear
boolean indicating whether the dependency is linear