11 #ifndef CT_SPECIESTHERMO_MGR_H
12 #define CT_SPECIESTHERMO_MGR_H
43 template<
class InputIter>
51 for (; begin != end; ++begin) {
52 begin->updateProperties(T, cp_R, h_RT, s_R);
69 template<
class InputIter>
70 doublereal
_minTemp(InputIter begin, InputIter end)
72 doublereal _minT = 0.0;
73 for (; begin != end; ++begin) {
74 _minT =
std::max(_minT, begin->minTemp());
92 template<
class _InputIter>
93 doublereal
_maxTemp(_InputIter begin, _InputIter end)
95 doublereal _maxT = 1.e10;
96 for (; begin != end; ++begin) {
97 _maxT =
std::min(_maxT, begin->maxTemp());
120 "Species reference pressure ("
121 +
fp2str(prnew) +
") does not match previously-defined "
122 +
"reference pressure (" +
fp2str(prold) +
")") {}
142 +
") does not match any known type.") {}
150 CanteraError(proc,
"Specified species parameterization type (" + stype
151 +
") does not match any known type.") {}
165 template<
class T1,
class T2>
223 virtual void install(std::string name,
size_t sp,
int type,
254 virtual void update(doublereal t, doublereal* cp_R,
255 doublereal* h_RT, doublereal* s_R)
const;
340 DEPRECATED(
virtual void modifyParams(
size_t index, doublereal* c));
342 #ifdef H298MODIFY_CAPABILITY
344 virtual doublereal reportOneHf298(
int k)
const {
348 virtual void modifyOneHf298(
const int k,
const doublereal Hf298New) {
349 throw CanteraError(
"reportHF298",
"unimplemented");
371 template<
class T1,
class T2>
375 if (&right ==
this) {
387 template<
class T1,
class T2>
395 template<
class T1,
class T2>
401 doublereal refPressure)
404 if (type == m_thermo1.ID) {
405 m_thermo1.install(name, sp, 0, c, minTemp, maxTemp,
407 speciesToType[sp] = m_thermo1.ID;
408 }
else if (type == m_thermo2.ID) {
409 m_thermo2.install(name, sp, 0, c, minTemp, maxTemp,
411 speciesToType[sp] = m_thermo2.ID;
417 template<
class T1,
class T2>
420 doublereal* h_RT, doublereal* s_R)
const
422 m_thermo1.update(t, cp_R, h_RT, s_R);
423 m_thermo2.update(t, cp_R, h_RT, s_R);
426 template<
class T1,
class T2>
430 std::map<size_t, int>::const_iterator p = speciesToType.find(k);
431 if (p != speciesToType.end()) {
437 template<
class T1,
class T2>
443 doublereal& refPressure)
const
445 int ctype = reportType(index);
446 if (ctype == m_thermo1.ID) {
447 m_thermo1.reportParams(index, type, c, minTemp, maxTemp,
449 }
else if (ctype == m_thermo2.ID) {
450 m_thermo2.reportParams(index, type, c, minTemp, maxTemp,
457 template<
class T1,
class T2>
461 int ctype = reportType(index);
462 if (ctype == m_thermo1.ID) {
463 m_thermo1.modifyParams(index, c);
464 }
else if (ctype == m_thermo2.ID) {
465 m_thermo2.modifyParams(index, c);