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_.found(elemName))
66 elementIndices_.insert(elemName, elementNames_.size());
67 elementNames_.append(elemName);
72 <<
"element " << elemName <<
" already in table." <<
endl;
77 for (
const word& specieName : speciesTable_)
79 const dictionary* elemsDict =
80 thermoDict_.subDict(specieName).findDict(
"elements");
85 <<
"Specie " << specieName
86 <<
" does not contain \"elements\" description."
90 wordList elemNames(elemsDict->toc());
91 List<specieElement> currentComposition(elemNames.size());
95 currentComposition[eni].name() = elemNames[eni];
97 currentComposition[eni].nAtoms() =
98 elemsDict->getOrDefault<label>
107 speciesComposition_.erase(specieName);
108 speciesComposition_.set(specieName, currentComposition);
115 template<
class ThermoType>
138 speciesTable_(setSpecies(chemDict_, species)),
139 speciesThermo_(thermoDict_),
140 reactions_(speciesTable_, speciesThermo_, chemDict_)
142 readSpeciesComposition();
146 template<
class ThermoType>
168 speciesTable_(setSpecies(chemDict_, species)),
169 speciesThermo_(thermoDict_),
170 reactions_(speciesTable_, speciesThermo_, chemDict_)
172 readSpeciesComposition();