Cantera  2.2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
StatMech.cpp
Go to the documentation of this file.
1 /**
2  * @file StatMech.cpp
3  * \link Cantera::SpeciesThermoInterpType SpeciesThermoInterpType\endlink
4  */
5 
6 // Copyright 2007 Sandia National Laboratories
7 
9 #include <iostream>
10 
11 namespace Cantera
12 {
14  warn_deprecated("class StatMech", "To be removed after Cantera 2.2");
15 }
16 
17 StatMech::StatMech(int n, doublereal tlow, doublereal thigh,
18  doublereal pref,
19  const doublereal* coeffs,
20  const std::string& my_name) :
21  SpeciesThermoInterpType(n, tlow, thigh, pref),
22  sp_name(my_name)
23 {
24  // should error on zero -- cannot take ln(0)
25  if (m_lowT <= 0.0) {
26  throw CanteraError("Error in StatMech.cpp",
27  " Cannot take 0 tmin as input. \n\n");
28  }
29  buildmap();
30 }
31 
34 {
35 }
36 
38 {
39  if (&b != this) {
40  SpeciesThermoInterpType::operator=(b);
41  }
42  return *this;
43 }
44 
47 {
48  return new StatMech(*this);
49 }
50 
52 {
53  return STAT;
54 }
55 
57 {
58 
59  // build vector of strings
60  std::vector<std::string> SS;
61 
62  // now just iterate over name map to place each
63  // string in a key
64 
65  SS.push_back("Air");
66  SS.push_back("CPAir");
67  SS.push_back("Ar");
68  SS.push_back("Ar+");
69  SS.push_back("C");
70  SS.push_back("C+");
71  SS.push_back("C2");
72  SS.push_back("C2H");
73  SS.push_back("C2H2");
74  SS.push_back("C3");
75  SS.push_back("CF");
76  SS.push_back("CF2");
77  SS.push_back("CF3");
78  SS.push_back("CF4");
79  SS.push_back("CH");
80  SS.push_back("CH2");
81  SS.push_back("CH3");
82  SS.push_back("CH4");
83  SS.push_back("Cl");
84  SS.push_back("Cl2");
85  SS.push_back("CN");
86  SS.push_back("CN+");
87  SS.push_back("CO");
88  SS.push_back("CO+");
89  SS.push_back("CO2");
90  SS.push_back("F");
91  SS.push_back("F2");
92  SS.push_back("H");
93  SS.push_back("H+");
94  SS.push_back("H2");
95  SS.push_back("H2+");
96  SS.push_back("H2O");
97  SS.push_back("HCl");
98  SS.push_back("HCN");
99  SS.push_back("He");
100  SS.push_back("He+");
101  SS.push_back("N");
102  SS.push_back("N+");
103  SS.push_back("N2");
104  SS.push_back("CPN2");
105  SS.push_back("N2+");
106  SS.push_back("Ne");
107  SS.push_back("NCO");
108  SS.push_back("NH");
109  SS.push_back("NH+");
110  SS.push_back("NH2");
111  SS.push_back("NH3");
112  SS.push_back("NO");
113  SS.push_back("NO+");
114  SS.push_back("NO2");
115  SS.push_back("O");
116  SS.push_back("O+");
117  SS.push_back("O2");
118  SS.push_back("O2+");
119  SS.push_back("OH");
120  SS.push_back("Si");
121  SS.push_back("SiO");
122  SS.push_back("e");
123 
124  // now place each species in a map
125  size_t ii;
126  for (ii=0; ii < SS.size(); ii++) {
127  name_map[SS[ii]]=(new species);
128 
129  // init to crazy defaults
130  name_map[SS[ii]]->nvib = -1;
131  name_map[SS[ii]]->cfs = -1;
132  name_map[SS[ii]]->mol_weight = -1;
133 
134  name_map[SS[ii]]->theta[0] =0.0;
135  name_map[SS[ii]]->theta[1] =0.0;
136  name_map[SS[ii]]->theta[2] =0.0;
137  name_map[SS[ii]]->theta[3] =0.0;
138  name_map[SS[ii]]->theta[4] =0.0;
139  }
140 
141  // now set all species information
142 
143  // build Air
144  name_map["Air"]->cfs = 2.5;
145  name_map["Air"]->mol_weight=28.96;
146  name_map["Air"]->nvib=0;
147 
148  // build CPAir
149  name_map["CPAir"]->cfs = 2.5;
150  name_map["CPAir"]->mol_weight=28.96;
151  name_map["CPAir"]->nvib=0;
152 
153  // build Ar
154  name_map["Ar"]->cfs = 1.5;
155  name_map["Ar"]->mol_weight=39.944;
156  name_map["Ar"]->nvib=0;
157 
158  // build Ar+
159  name_map["Ar+"]->cfs = 1.5;
160  name_map["Ar+"]->mol_weight=39.94345;
161  name_map["Ar+"]->nvib=0;
162 
163  // build C
164  name_map["C"]->cfs = 1.5;
165  name_map["C"]->mol_weight=12.011;
166  name_map["C"]->nvib=0;
167 
168  // build C+
169  name_map["C+"]->cfs = 1.5;
170  name_map["C+"]->mol_weight=12.01045;
171  name_map["C+"]->nvib=0;
172 
173  // C2
174  name_map["C2"]->cfs=2.5;
175  name_map["C2"]->mol_weight=24.022;
176  name_map["C2"]->nvib=1;
177  name_map["C2"]->theta[0]=2.6687e3;
178 
179  // C2H
180  name_map["C2H"]->cfs=2.5;
181  name_map["C2H"]->mol_weight=25.03;
182  name_map["C2H"]->nvib=3;
183  name_map["C2H"]->theta[0]=5.20100e+03;
184  name_map["C2H"]->theta[1]=7.20000e+03;
185  name_map["C2H"]->theta[2]=2.66100e+03;
186 
187  // C2H2
188  name_map["C2H2"]->cfs=2.5;
189  name_map["C2H2"]->mol_weight=26.038;
190  name_map["C2H2"]->nvib=5;
191  name_map["C2H2"]->theta[0]=4.85290e+03;
192  name_map["C2H2"]->theta[1]=2.84000e+03;
193  name_map["C2H2"]->theta[2]=4.72490e+03;
194  name_map["C2H2"]->theta[3]=8.81830e+02;
195  name_map["C2H2"]->theta[4]=1.05080e+03;
196 
197  // C3
198  name_map["C3"]->cfs=2.5;
199  name_map["C3"]->mol_weight=36.033;
200  name_map["C3"]->nvib=3;
201  name_map["C3"]->theta[0]=1.84500e+03;
202  name_map["C3"]->theta[1]=7.78700e+02;
203  name_map["C3"]->theta[2]=3.11760e+03;
204 
205  // CF
206  name_map["CF"]->cfs=2.5;
207  name_map["CF"]->mol_weight=31.00940;
208  name_map["CF"]->nvib=1;
209  name_map["CF"]->theta[0]=1.88214e+03;
210 
211  // CF2
212  name_map["CF2"]->cfs=3;
213  name_map["CF2"]->mol_weight=50.00780;
214  name_map["CF2"]->nvib=3;
215  name_map["CF2"]->theta[0]=1.76120e+03;
216  name_map["CF2"]->theta[1]=9.56820e+02;
217  name_map["CF2"]->theta[2]=1.60000e+03;
218 
219  // CF3
220  name_map["CF3"]->cfs=3;
221  name_map["CF3"]->mol_weight=69.00620;
222  name_map["CF3"]->nvib=4;
223  name_map["CF3"]->theta[0]=1.56800e+03;
224  name_map["CF3"]->theta[1]=1.00900e+03;
225  name_map["CF3"]->theta[2]=1.81150e+03;
226  name_map["CF3"]->theta[3]=7.36680e+02;
227 
228  // CF4
229  name_map["CF4"]->cfs=3;
230  name_map["CF4"]->mol_weight=88.00460;
231  name_map["CF4"]->nvib=4;
232  name_map["CF4"]->theta[0]=1.30720e+03;
233  name_map["CF4"]->theta[1]=6.25892e+02;
234  name_map["CF4"]->theta[2]=1.84540e+03;
235  name_map["CF4"]->theta[3]=9.08950e+02;
236 
237  // CH
238  name_map["CH"]->cfs=2.5;
239  name_map["CH"]->mol_weight=13.01900;
240  name_map["CH"]->nvib=1;
241  name_map["CH"]->theta[0]=4.11290e+03;
242 
243  // CH2
244  name_map["CH2"]->cfs=3;
245  name_map["CH2"]->mol_weight=14.02700;
246  name_map["CH2"]->nvib=3;
247  name_map["CH2"]->theta[0]=4.31650e+03;
248  name_map["CH2"]->theta[1]=1.95972e+03;
249  name_map["CH2"]->theta[2]=4.60432e+03;
250 
251  // CH3
252  name_map["CH3"]->cfs=3;
253  name_map["CH3"]->mol_weight=15.03500;
254  name_map["CH3"]->nvib=4;
255  name_map["CH3"]->theta[0]=4.31650e+03;
256  name_map["CH3"]->theta[1]=8.73370e+02;
257  name_map["CH3"]->theta[2]=4.54960e+03;
258  name_map["CH3"]->theta[3]=2.01150e+03;
259 
260  // CH4
261  name_map["CH4"]->cfs=3;
262  name_map["CH4"]->mol_weight=16.04300;
263  name_map["CH4"]->nvib=4;
264  name_map["CH4"]->theta[0]=4.19660e+03;
265  name_map["CH4"]->theta[1]=2.20620e+03;
266  name_map["CH4"]->theta[2]=4.34450e+03;
267  name_map["CH4"]->theta[3]=1.88600e+03;
268 
269  // Cl
270  name_map["Cl"]->cfs=1.5;
271  name_map["Cl"]->mol_weight=35.45300;
272  name_map["Cl"]->nvib=0;
273 
274  // Cl2
275  name_map["Cl2"]->cfs=2.5;
276  name_map["Cl2"]->mol_weight=70.96;
277  name_map["Cl2"]->nvib=1;
278  name_map["Cl2"]->theta[0]=8.05355e+02;
279 
280  // CN
281  name_map["CN"]->cfs=2.5;
282  name_map["CN"]->mol_weight=26.01900;
283  name_map["CN"]->nvib=1;
284  name_map["CN"]->theta[0]=2.97610e+03;
285 
286  // CN+
287  name_map["CN+"]->cfs=2.5;
288  name_map["CN+"]->mol_weight=26.01845;
289  name_map["CN+"]->nvib=1;
290  name_map["CN+"]->theta[0]=2.92520e+03;
291 
292  // CO
293  name_map["CO"]->cfs=2.5;
294  name_map["CO"]->mol_weight=28.01100;
295  name_map["CO"]->nvib=1;
296  name_map["CO"]->theta[0]=3.12200e+03;
297 
298  // CO+
299  name_map["CO+"]->cfs=2.5;
300  name_map["CO+"]->mol_weight=28.01045;
301  name_map["CO+"]->nvib=1;
302  name_map["CO+"]->theta[0]=3.18800e+03;
303 
304  // CO2
305  name_map["CO2"]->cfs=2.5;
306  name_map["CO2"]->mol_weight=44.01100;
307  name_map["CO2"]->nvib=3;
308  name_map["CO2"]->theta[0]=1.91870e+03;
309  name_map["CO2"]->theta[1]=9.59660e+02;
310  name_map["CO2"]->theta[2]=3.38210e+03;
311 
312  // F
313  name_map["F"]->cfs=1.5;
314  name_map["F"]->mol_weight=18.99840;
315  name_map["F"]->nvib=0;
316 
317  // F2
318  name_map["F2"]->cfs=2.5;
319  name_map["F2"]->mol_weight=37.99680;
320  name_map["F2"]->nvib=1;
321  name_map["F2"]->theta[0]=1.32020e+03;
322 
323  // H
324  name_map["H"]->cfs=1.5;
325  name_map["H"]->mol_weight=1;
326  name_map["H"]->nvib=0;
327 
328  // H+
329  name_map["H+"]->cfs=1.5;
330  name_map["H+"]->mol_weight=1.00745;
331  name_map["H+"]->nvib=0;
332 
333  // H2
334  name_map["H2"]->cfs=2.5;
335  name_map["H2"]->mol_weight=2.01600;
336  name_map["H2"]->nvib=1;
337  name_map["H2"]->theta[0]=6.33140e+03;
338 
339  // H2+
340  name_map["H2+"]->cfs=2.5;
341  name_map["H2+"]->mol_weight=2.01545;
342  name_map["H2+"]->nvib=1;
343  name_map["H2+"]->theta[0]=3.34280e+03;
344 
345  // H2O
346  name_map["H2O"]->cfs=3.0;
347  name_map["H2O"]->mol_weight=18.01600;
348  name_map["H2O"]->nvib=3;
349  name_map["H2O"]->theta[0]=5.26130e+03;
350  name_map["H2O"]->theta[1]=2.29460e+03;
351  name_map["H2O"]->theta[2]=5.40395e+03;
352 
353  // HCl
354  name_map["HCl"]->cfs=2.5;
355  name_map["HCl"]->mol_weight=36.46100;
356  name_map["HCl"]->nvib=1;
357  name_map["HCl"]->theta[0]=4.30330e+03;
358 
359  // HCN
360  name_map["HCN"]->cfs=2.5;
361  name_map["HCN"]->mol_weight=27.02700;
362  name_map["HCN"]->nvib=3;
363  name_map["HCN"]->theta[0]=3.01620e+03;
364  name_map["HCN"]->theta[1]=1.02660e+03;
365  name_map["HCN"]->theta[2]=4.76450e+03;
366 
367  // He
368  name_map["He"]->cfs=1.5;
369  name_map["He"]->mol_weight=4.00300;
370  name_map["He"]->nvib=0;
371 
372  // He+
373  name_map["He+"]->cfs=1.5;
374  name_map["He+"]->mol_weight=4.00245;
375  name_map["He+"]->nvib=0;
376 
377  // N
378  name_map["N"]->cfs=1.5;
379  name_map["N"]->mol_weight=14.008;
380  name_map["N"]->nvib=0;
381 
382  // Ne
383  name_map["Ne"]->cfs=1.5;
384  name_map["Ne"]->mol_weight=20.17900;
385  name_map["Ne"]->nvib=0;
386 
387  // N+
388  name_map["N+"]->cfs=1.5;
389  name_map["N+"]->mol_weight=14.00745;
390  name_map["N+"]->nvib=0;
391 
392  // N2
393  name_map["N2"]->cfs=2.5;
394  name_map["N2"]->mol_weight=28.01600;
395  name_map["N2"]->nvib=1;
396  name_map["N2"]->theta[0]=3.39500e+03;
397 
398  // N2+
399  name_map["N2+"]->cfs=2.5;
400  name_map["N2+"]->mol_weight=28.01545;
401  name_map["N2+"]->nvib=1;
402  name_map["N2+"]->theta[0]=3.17580e+03;
403 
404  // CPN2
405  name_map["CPN2"]->cfs=2.5;
406  name_map["CPN2"]->mol_weight=28.01600;
407  name_map["CPN2"]->nvib=0;
408 
409  // NCO
410  name_map["NCO"]->cfs=2.5;
411  name_map["NCO"]->mol_weight=42.01900;
412  name_map["NCO"]->nvib=3;
413  name_map["NCO"]->theta[0]=1.83600e+03;
414  name_map["NCO"]->theta[1]=7.67100e+02;
415  name_map["NCO"]->theta[2]=2.76800e+03;
416 
417  // NH
418  name_map["NH"]->cfs=2.5;
419  name_map["NH"]->mol_weight=15.01600;
420  name_map["NH"]->nvib=1;
421  name_map["NH"]->theta[0]=4.72240e+03;
422 
423  // NH+
424  name_map["NH+"]->cfs=2.5;
425  name_map["NH+"]->mol_weight=15.01545;
426  name_map["NH+"]->nvib=0;
427 
428  // NH2
429  name_map["NH2"]->cfs=2.5;
430  name_map["NH2"]->mol_weight=16.02400;
431  name_map["NH2"]->nvib=0;
432 
433  // NH3
434  name_map["NH3"]->cfs=2.5;
435  name_map["NH3"]->mol_weight=17.03200;
436  name_map["NH3"]->nvib=4;
437  name_map["NH3"]->theta[0]=4.78100e+03;
438  name_map["NH3"]->theta[1]=1.47040e+03;
439  name_map["NH3"]->theta[2]=4.95440e+03;
440  name_map["NH3"]->theta[3]=2.34070e+03;
441 
442  // NO
443  name_map["NO"]->cfs=2.5;
444  name_map["NO"]->mol_weight=30.00800;
445  name_map["NO"]->nvib=1;
446  name_map["NO"]->theta[0]=2.81700e+03;
447 
448  // NO+
449  name_map["NO+"]->cfs=2.5;
450  name_map["NO+"]->mol_weight=30.00745;
451  name_map["NO+"]->nvib=1;
452  name_map["NO+"]->theta[0]=3.42100e+03;
453 
454  // NO2
455  name_map["NO2"]->cfs=3;
456  name_map["NO2"]->mol_weight=46.00800;
457  name_map["NO2"]->nvib=3;
458  name_map["NO2"]->theta[0]=1.07900e+03;
459  name_map["NO2"]->theta[1]=1.90000e+03;
460  name_map["NO2"]->theta[2]=2.32700e+03;
461 
462  // O
463  name_map["O"]->cfs=1.5;
464  name_map["O"]->mol_weight=16.000;
465  name_map["O"]->nvib=0;
466 
467  // O+
468  name_map["O+"]->cfs=1.5;
469  name_map["O+"]->mol_weight=15.99945;
470  name_map["O+"]->nvib=0;
471 
472  // O2
473  name_map["O2"]->cfs=2.5;
474  name_map["O2"]->mol_weight=32.00000;
475  name_map["O2"]->nvib=1;
476  name_map["O2"]->theta[0]=2.23900e+03;
477 
478  // O2
479  name_map["O2+"]->cfs=2.5;
480  name_map["O2+"]->mol_weight=31.99945;
481  name_map["O2+"]->nvib=1;
482  name_map["O2+"]->theta[0]=2.74120e+03;
483 
484  // OH
485  name_map["OH"]->cfs=2.5;
486  name_map["OH"]->mol_weight=17.00800;
487  name_map["OH"]->nvib=1;
488  name_map["OH"]->theta[0]=5.37820e+03;
489 
490  // Si
491  name_map["Si"]->cfs=1.5;
492  name_map["Si"]->mol_weight=28.08550;
493  name_map["Si"]->nvib=0;
494 
495  // SiO
496  name_map["SiO"]->cfs=2.5;
497  name_map["SiO"]->mol_weight=44.08550;
498  name_map["SiO"]->nvib=1;
499  name_map["SiO"]->theta[0]=1.78640e+03;
500 
501  // electron
502  name_map["e"]->cfs=1.5;
503  name_map["e"]->mol_weight=0.00055;
504  name_map["e"]->nvib=0;
505 
506  for (ii=0; ii < SS.size(); ii++) {
507  // check nvib was initialized for all species
508  if (name_map[SS[ii]]->nvib == -1) {
509  std::cout << name_map[SS[ii]]->nvib << std::endl;
510  throw CanteraError("Error in StatMech.cpp",
511  "nvib not initialized!. \n\n");
512 
513  } else {
514  // check that theta is initialized
515  for (int i=0; i<name_map[SS[ii]]->nvib; i++) {
516  if (name_map[SS[ii]]->theta[i] <= 0.0) {
517  throw CanteraError("Error in StatMech.cpp",
518  "theta not initialized!. \n\n");
519  }
520  }
521 
522  // check that no non-zero theta exist
523  // for any theta larger than nvib!
524  for (int i=name_map[SS[ii]]->nvib; i<5; i++) {
525  if (name_map[SS[ii]]->theta[i] != 0.0) {
526  std::string err = "bad theta value for "+SS[ii]+"\n";
527  throw CanteraError("StatMech.cpp",err);
528  }
529  } // done with for loop
530  }
531 
532  // check mol weight was initialized for all species
533  if (name_map[SS[ii]]->mol_weight == -1) {
534  std::cout << name_map[SS[ii]]->mol_weight << std::endl;
535  throw CanteraError("Error in StatMech.cpp",
536  "mol_weight not initialized!. \n\n");
537 
538  }
539 
540  // cfs was initialized for all species
541  if (name_map[SS[ii]]->cfs == -1) {
542  std::cout << name_map[SS[ii]]->cfs << std::endl;
543  throw CanteraError("Error in StatMech.cpp",
544  "cfs not initialized!. \n\n");
545 
546  }
547 
548  } // done with sanity checks
549 
550  // mark it zero, dude
551  return 0;
552 }
553 
554 void StatMech::updateProperties(const doublereal* tt,
555  doublereal* cp_R, doublereal* h_RT,
556  doublereal* s_R) const
557 {
558 
559  std::map<std::string,species*>::iterator it;
560 
561  // get species name, to gather species properties
562  species* s;
563 
564  // pointer to map location of particular species
565  if (name_map.find(sp_name) != name_map.end()) {
566  s = name_map.find(sp_name)->second;
567  } else {
568  throw CanteraError("StatMech.cpp",
569  "species properties not found!. \n\n");
570  }
571 
572  // translational + rotational specific heat
573  doublereal ctr = 0.0;
574  double theta = 0.0;
575 
576  // 5/2 * R for molecules, 3/2 * R for atoms
577  ctr += GasConstant * s->cfs;
578 
579  // vibrational energy
580  for (int i=0; i< s->nvib; i++) {
581  theta = s->theta[i];
582  ctr += GasConstant * theta * (theta* exp(theta/tt[0])/(tt[0]*tt[0]))/((exp(theta/tt[0])-1) * (exp(theta/tt[0])-1));
583  }
584 
585  // Cp = Cv + R
586  doublereal cpdivR = ctr/GasConstant + 1;
587 
588  // ACTUNG: fix enthalpy and entropy
589  doublereal hdivRT = 0.0;
590  doublereal sdivR = 0.0;
591 
592  // return the computed properties in the location in the output
593  // arrays for this species
594  cp_R[m_index] = cpdivR;
595  h_RT[m_index] = hdivRT;
596  s_R [m_index] = sdivR;
597 }
598 
599 void StatMech::updatePropertiesTemp(const doublereal temp,
600  doublereal* cp_R, doublereal* h_RT,
601  doublereal* s_R) const
602 {
603  double tPoly[1];
604  tPoly[0] = temp;
605  updateProperties(tPoly, cp_R, h_RT, s_R);
606 }
607 
608 void StatMech::reportParameters(size_t& n, int& type,
609  doublereal& tlow, doublereal& thigh,
610  doublereal& pref,
611  doublereal* const coeffs) const
612 {
613  species* s;
614 
615  n = m_index;
616  type = STAT;
617  tlow = m_lowT;
618  thigh = m_highT;
619  pref = m_Pref;
620  for (int i = 0; i < 9; i++) {
621  coeffs[i] = 0.0;
622  }
623  doublereal temp = coeffs[0];
624  coeffs[1] = m_lowT;
625  coeffs[2] = m_highT;
626 
627  // get species name, to gather species properties
628  // pointer to map location of particular species
629  if (name_map.find(sp_name) != name_map.end()) {
630  s = name_map.find(sp_name)->second;
631  } else {
632  throw CanteraError("StatMech.cpp",
633  "species properties not found!. \n\n");
634  }
635 
636  double theta = 0.0;
637  doublereal cvib = 0;
638 
639  // vibrational energy
640  for (int i=0; i< s->nvib; i++) {
641  theta = s->theta[i];
642  cvib += GasConstant * theta * (theta* exp(theta/temp)/(temp*temp))/((exp(theta/temp)-1) * (exp(theta/temp)-1));
643  }
644 
645  // load vibrational energy
646  coeffs[3] = GasConstant * s->cfs;
647  coeffs[4] = cvib;
648 
649 }
650 
651 void StatMech::modifyParameters(doublereal* coeffs)
652 {
653 }
654 
655 }
Statistical mechanics.
Definition: StatMech.h:27
Pure Virtual Base class for the thermodynamic manager for an individual species' reference state...
virtual void updateProperties(const doublereal *tt, doublereal *cp_R, doublereal *h_RT, doublereal *s_R) const
Update the properties for this species, given a temperature polynomial.
Definition: StatMech.cpp:554
virtual int reportType() const
Returns an integer representing the type of parameterization.
Definition: StatMech.cpp:51
void warn_deprecated(const std::string &method, const std::string &extra)
Print a warning indicating that method is deprecated.
Definition: global.cpp:78
virtual void modifyParameters(doublereal *coeffs)
Modify parameters for the standard state.
Definition: StatMech.cpp:651
StatMech()
Empty constructor.
Definition: StatMech.cpp:13
virtual void updatePropertiesTemp(const doublereal temp, doublereal *cp_R, doublereal *h_RT, doublereal *s_R) const
Compute the reference-state property of one species.
Definition: StatMech.cpp:599
doublereal m_highT
Highest valid temperature.
virtual void reportParameters(size_t &n, int &type, doublereal &tlow, doublereal &thigh, doublereal &pref, doublereal *const coeffs) const
This utility function reports back the type of parameterization and all of the parameters for the spe...
Definition: StatMech.cpp:608
Base class for exceptions thrown by Cantera classes.
Definition: ctexceptions.h:99
Header for a single-species standard state object derived from.
int buildmap()
Build a series of maps for the properties needed for species.
Definition: StatMech.cpp:56
doublereal m_lowT
lowest valid temperature
#define STAT
Properties derived from theoretical considerations This is implemented in the class statmech in StatM...
StatMech & operator=(const StatMech &b)
assignment operator
Definition: StatMech.cpp:37
const doublereal GasConstant
Universal Gas Constant. [J/kmol/K].
Definition: ct_defs.h:64
virtual SpeciesThermoInterpType * duplMyselfAsSpeciesThermoInterpType() const
duplicator
Definition: StatMech.cpp:46
doublereal m_Pref
Reference state pressure.