31template<
class CombustionModel>
36 const word& combustionProperties
41 thermo.phasePropertyName(combustionProperties),
42 thermo.db().time().constant(),
49 word combModelName(
"none");
56 Info<<
"Combustion model not active: "
57 <<
thermo.phasePropertyName(combustionProperties)
58 <<
" not found" <<
endl;
61 Info<<
"Selecting combustion model " << combModelName <<
endl;
65 if (cmpts2.
size() == 2 || cmpts3.
size() == 3)
67 combModelName = cmpts2.
size() ? cmpts2[0] : cmpts3[0];
70 <<
"Template parameters are no longer required when selecting a "
72 <<
"obtained directly from the thermodynamics. Actually selecting "
73 <<
"combustion model " << combModelName <<
"." <<
endl;
77 const word compCombModelName
79 combModelName +
'<' + CombustionModel::reactionThermo::typeName +
'>'
82 const word thermoCombModelName
84 combModelName +
'<' + CombustionModel::reactionThermo::typeName +
','
85 +
thermo.thermoName() +
'>'
89 const auto& cnstrTable = *(CombustionModel::dictionaryConstructorTablePtr_);
91 auto ctorIter = cnstrTable.cfind(thermoCombModelName);
93 if (!ctorIter.found())
95 ctorIter = cnstrTable.cfind(compCombModelName);
98 if (!ctorIter.found())
100 const wordList names(cnstrTable.sortedToc());
140 for (
const word& validName : names)
144 if (cmpts.
size() == 2)
146 validCmpts2.
append(std::move(cmpts));
148 else if (cmpts.
size() == 7)
154 validCmpts7.
append(std::move(cmpts));
165 if (validCmpts2.
size() > 1)
168 <<
"All " << validCmpts2[0][0] <<
'/' << validCmpts2[0][1]
169 <<
" combinations are:" <<
nl <<
nl;
174 if (validCmpts7.
size() > 1)
177 <<
"All " << validCmpts7[0][0] <<
'/' << validCmpts7[0][1]
178 <<
"/thermoPhysics combinations are:" <<
nl <<
nl;
189 ctorIter.val()(combModelName,
thermo,
turb, combustionProperties)
compressible::turbulenceModel & turb
ReactionThermo reactionThermo
Thermo type.
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects.
void append(const T &val)
Copy append an element to the end of this list.
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
Defines the attributes of an object for which implicit objectRegistry management is supported,...
bool typeHeaderOk(const bool checkType=true, const bool search=true, const bool verbose=true)
Read header (uses typeFilePath to find file) and check its info.
static autoPtr< Time > New()
Construct (dummy) Time - no functionObjects or libraries.
void size(const label n)
Older name for setAddressableSize.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
static wordList splitThermoName(const std::string &thermoName, const int nExpectedCmpts)
Split thermo package name into a list of components names.
Abstract base class for turbulence models (RAS, LES and laminar).
bool readEntry(const word &keyword, T &val, enum keyType::option matchOpt=keyType::REGEX, bool mandatory=true) const
Basic thermodynamics type based on the use of fitting functions for cp, h, s obtained from the templa...
A class for handling words, derived from Foam::string.
static const word null
An empty word.
#define FatalErrorInLookup(lookupTag, lookupName, lookupTable)
Report an error message using Foam::FatalError.
#define WarningInFunction
Report a warning using Foam::Warning.
messageStream Info
Information stream (stdout output on master, null elsewhere)
Ostream & endl(Ostream &os)
Add newline and flush stream.
Ostream & printTable(const UList< wordList > &tbl, List< std::string::size_type > &columnWidths, Ostream &os, bool headerSeparator=true)
Print a List of wordList as a table.
errorManipArg< error, int > exit(error &err, const int errNo=1)
constexpr char nl
The newline '\n' character (0x0a)
static const char *const typeName
The type name used in ensight case files.