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<chemistryModel<"
57 <<
"rhoChemistryModel,sutherland<specie<janaf<perfectGas>,"
58 <<
"sensibleInternalEnergy>>>>" <<
endl <<
endl <<
"becomes:"
64 chemistryDict.
subDict(
"chemistryType");
66 const word solverName =
69 {
"solver",
"chemistrySolver"}
78 chemistryTypeDictNew.
add(
"solver", solverName);
79 chemistryTypeDictNew.
add(
"method", methodName);
81 Info<<
"Selecting chemistry solver " << chemistryTypeDictNew <<
endl;
83 const word chemSolverNameName =
86 typename thermoConstructorTable::iterator cstrIter =
87 thermoConstructorTablePtr_->find(chemSolverNameName);
89 if (cstrIter == thermoConstructorTablePtr_->end())
102 substitutions.
append({
"solver", solverName});
103 substitutions.
append({
"method", methodName});
107 basicChemistryModel::typeName,
111 cstrIter = thermoConstructorTablePtr_->find(chemSolverNameName);
113 if (cstrIter == thermoConstructorTablePtr_->end())
116 <<
"Compilation and linkage of "
117 << basicChemistryModel::typeName <<
" type " <<
nl
118 <<
"chemistryType" << chemistryTypeDict <<
nl <<
nl
125 <<
"Unknown " << typeName_() <<
" type " << chemistryTypeDictNew
128 const wordList names(thermoConstructorTablePtr_->sortedToc());
140 validNames[0][0] =
"solver";
141 validNames[0][1] =
"method";
157 <<
"Valid " << validNames[0][0] <<
'/' << validNames[0][1]
158 <<
" combinations for this thermodynamic model are:"
166 validCmpts[0][0] =
"solver";
167 validCmpts[0][1] =
"method";
168 validCmpts[0][2] =
"transport";
169 validCmpts[0][3] =
"thermo";
170 validCmpts[0][4] =
"equationOfState";
171 validCmpts[0][5] =
"specie";
172 validCmpts[0][6] =
"energy";
179 <<
"All " << validCmpts[0][0] <<
'/' << validCmpts[0][1]
180 <<
"/thermodynamics combinations are:"
#define forAll(list, i)
Loop across all elements in list.
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
void append(const T &)
Append an element at the end of the list.
A List obtained as a section of another List.
static const word & constant()
Return constant name.
const fluidMulticomponentThermo & thermo() const
Return const access to the thermo.
static autoPtr< basicChemistryModel > New(const fluidMulticomponentThermo &thermo)
Select based on fluid reaction thermo.
virtual word thermoName() const =0
Name of the thermo physics.
static List< Pair< word > > thermoNameComponents(const word &thermoName)
Split name of thermo package into a list of named components names.
static word phasePropertyName(const word &name, const word &phaseName)
Name of a property for a given phase.
static wordList splitThermoName(const word &thermoName, const int nCmpt)
Split name of thermo package into a list of the components names.
virtual const fvMesh & mesh() const =0
Return const access to the mesh.
Extends base chemistry model by adding a thermo package, and ODE functions. Introduces chemistry equa...
A list of keyword definitions, which are a keyword followed by any number of values (e....
T lookupOrDefault(const word &, const T &, bool recursive=false, bool patternMatch=true) const
Find and return a T, if not found return the given default.
bool isDict(const word &) const
Check if entry is a sub-dictionary.
const dictionary & subDict(const word &) const
Find and return a sub-dictionary.
bool add(entry *, bool mergeEntry=false)
Add a new entry.
ITstream & lookupBackwardsCompatible(const wordList &, bool recursive=false, bool patternMatch=true) const
Find and return an entry data stream, trying a list of keywords.
static int allowSystemOperations
Flag if system operations are allowed.
static fileName resolveTemplate(const fileName &templateName)
Resolve code-template via the codeTemplateEnvName.
Base-class for multi-component fluid thermodynamic properties.
const Time & time() const
Return the top-level database.
A class for handling words, derived from string.
static const word null
An empty word.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
errorManipArg< error, int > exit(error &err, const int errNo=1)
List< word > wordList
A List of words.
Ostream & endl(Ostream &os)
Add newline and flush stream.
void printTable(const List< wordList > &, List< string::size_type > &, Ostream &)
fluidMulticomponentThermo & thermo