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