35 template<
class ThermoType>
38 const dictionary&
dict,
48 template<
class ThermoType>
53 if (!chemDict_.readIfPresent(
"elements", elems))
55 Info<<
" elements not defined in " << chemDict_.name() <<
endl;
59 DynamicList<word> elementNames_;
60 HashTable<label> elementIndices_;
62 for (
const word& elemName : elems)
64 if (elementIndices_.insert(elemName, elementNames_.size()))
66 elementNames_.append(elemName);
71 <<
"element " << elemName <<
" already in table." <<
endl;
76 for (
const word& specieName : speciesTable_)
78 const dictionary* elemsDict =
79 thermoDict_.subDict(specieName).findDict(
"elements");
84 <<
"Specie " << specieName
85 <<
" does not contain \"elements\" description."
89 wordList elemNames(elemsDict->toc());
90 List<specieElement> currentComposition(elemNames.size());
94 currentComposition[eni].name() = elemNames[eni];
96 currentComposition[eni].nAtoms() =
97 elemsDict->getOrDefault<label>
106 speciesComposition_.erase(specieName);
107 speciesComposition_.set(specieName, currentComposition);
114 template<
class ThermoType>
137 speciesTable_(setSpecies(chemDict_, species)),
138 speciesThermo_(thermoDict_),
139 reactions_(speciesTable_, speciesThermo_, chemDict_)
141 readSpeciesComposition();
145 template<
class ThermoType>
167 speciesTable_(setSpecies(chemDict_, species)),
168 speciesThermo_(thermoDict_),
169 reactions_(speciesTable_, speciesThermo_, chemDict_)
171 readSpeciesComposition();