42 thermo.
T().
mesh().time().constant(),
50 if (!chemistryDict.
isDict(
"chemistryType"))
53 <<
"Template parameter based chemistry solver selection is no " 54 <<
"longer supported. Please create a chemistryType dictionary" 55 <<
"instead." <<
endl <<
endl <<
"For example, the entry:" <<
endl 56 <<
" chemistrySolver ode<standardChemistryModel<" 57 <<
"rhoChemistryModel,sutherland<specie<janaf<perfectGas>," 58 <<
"sensibleInternalEnergy>>>>" <<
endl <<
endl <<
"becomes:" 60 <<
" solver ode;" <<
endl <<
" method standard;" 65 chemistryDict.
subDict(
"chemistryType");
67 const word solverName =
70 {
"solver",
"chemistrySolver"}
85 chemistryTypeDictNew.
add(
"solver", solverName);
86 chemistryTypeDictNew.
add(
"method", methodName);
88 Info<<
"Selecting chemistry solver " << chemistryTypeDictNew <<
endl;
90 const word chemSolverNameName =
91 solverName +
'<' + methodName +
'<' + thermo.
thermoName() +
">>";
93 typename thermoConstructorTable::iterator cstrIter =
94 thermoConstructorTablePtr_->find(chemSolverNameName);
96 if (cstrIter == thermoConstructorTablePtr_->end())
100 dynamicCode::allowSystemOperations
101 && !dynamicCode::resolveTemplate(basicChemistryModel::typeName).empty()
106 basicThermo::thermoNameComponents(thermo.
thermoName())
109 substitutions.
append({
"solver", solverName});
110 substitutions.
append({
"method", methodName});
114 basicChemistryModel::typeName,
118 cstrIter = thermoConstructorTablePtr_->find(chemSolverNameName);
120 if (cstrIter == thermoConstructorTablePtr_->end())
123 <<
"Compilation and linkage of " 124 << basicChemistryModel::typeName <<
" type " <<
nl 125 <<
"chemistryType" << chemistryTypeDict <<
nl <<
nl 132 <<
"Unknown " << typeName_() <<
" type " << chemistryTypeDictNew
135 const wordList names(thermoConstructorTablePtr_->sortedToc());
138 thisCmpts.
append(word::null);
139 thisCmpts.append(word::null);
142 basicThermo::splitThermoName(thermo.
thermoName(), 5)
147 validNames[0][0] =
"solver";
148 validNames[0][1] =
"method";
151 const wordList cmpts(basicThermo::splitThermoName(names[i], 7));
164 <<
"Valid " << validNames[0][0] <<
'/' << validNames[0][1]
165 <<
" combinations for this thermodynamic model are:" 173 validCmpts[0][0] =
"solver";
174 validCmpts[0][1] =
"method";
175 validCmpts[0][2] =
"transport";
176 validCmpts[0][3] =
"thermo";
177 validCmpts[0][4] =
"equationOfState";
178 validCmpts[0][5] =
"specie";
179 validCmpts[0][6] =
"energy";
182 validCmpts.
append(basicThermo::splitThermoName(names[i], 7));
186 <<
"All " << validCmpts[0][0] <<
'/' << validCmpts[0][1]
187 <<
"/thermodynamics combinations are:" #define forAll(list, i)
Loop across all elements in list.
fluidReactionThermo & thermo
static word phasePropertyName(const word &name, const word &phaseName)
Return the name of a property for a given phase.
errorManipArg< error, int > exit(error &err, const int errNo=1)
A list of keyword definitions, which are a keyword followed by any number of values (e...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
virtual word thermoName() const =0
Return the name of the thermo physics.
Ostream & endl(Ostream &os)
Add newline and flush stream.
Base-class for multi-component fluid thermodynamic properties.
bool isDict(const word &) const
Check if entry is a sub-dictionary.
bool add(entry *, bool mergeEntry=false)
Add a new entry.
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
const dictionary & subDict(const word &) const
Find and return a sub-dictionary.
static autoPtr< basicChemistryModel > New(const fluidReactionThermo &thermo)
Select based on fluid reaction thermo.
A List obtained as a section of another List.
A class for handling words, derived from string.
void append(const T &)
Append an element at the end of the list.
void printTable(const List< wordList > &, List< string::size_type > &, Ostream &)
const Mesh & mesh() const
Return mesh.
List< word > wordList
A List of words.
T lookupOrDefault(const word &, const T &, bool recursive=false, bool patternMatch=true) const
Find and return a T,.
virtual const volScalarField & T() const =0
Temperature [K].
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
ITstream & lookupBackwardsCompatible(const wordList &, bool recursive=false, bool patternMatch=true) const
Find and return an entry data stream, trying a list of keywords.