31 template<
class CombustionModel>
36 const word& combustionProperties
41 thermo.phasePropertyName(combustionProperties),
42 thermo.db().time().constant(),
49 word combModelName(
"none");
52 IOdictionary(combIO).readEntry(
"combustionModel", combModelName);
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 " 71 << combustionModel::typeName <<
". This information is now " 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);
95 ctorIter = cnstrTable.cfind(compCombModelName);
118 combustionModel::typeName,
130 combustionModel::typeName,
144 if (cmpts.
size() == 2)
146 validCmpts2.append(std::move(cmpts));
148 else if (cmpts.
size() == 7)
154 validCmpts7.
append(std::move(cmpts));
160 combustionModel::typeName,
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)
void size(const label n)
Older name for setAddressableSize.
List< word > names(const UPtrList< T > &list, const UnaryMatchPredicate &matcher)
List of names generated by calling name() for each list item and filtered for matches.
errorManipArg< error, int > exit(error &err, const int errNo=1)
IOdictionary(const IOobject &io, const dictionary *fallback=nullptr)
Construct given an IOobject and optional fallback dictionary content.
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
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.
constexpr char nl
The newline '\n' character (0x0a)
compressible::turbulenceModel & turb
Ostream & endl(Ostream &os)
Add newline and flush stream.
Ignore writing from objectRegistry::writeObject()
#define FatalErrorInLookup(lookupTag, lookupName, lookupTable)
Report an error message using Foam::FatalError.
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
psiReactionThermo & thermo
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects...
static wordList splitThermoName(const std::string &thermoName, const int nExpectedCmpts)
Split thermo package name into a list of components names.
ReactionThermo reactionThermo
Thermo type.
A class for handling words, derived from Foam::string.
static const word null
An empty word.
void append(const T &val)
Copy append an element to the end of this list.
Basic thermodynamics type based on the use of fitting functions for cp, h, s obtained from the templa...
Abstract base class for turbulence models (RAS, LES and laminar).
#define WarningInFunction
Report a warning using Foam::Warning.
static autoPtr< CombustionModel > New(typename CombustionModel::reactionThermo &thermo, const compressibleTurbulenceModel &turb, const word &combustionProperties)
Generic New for each of the related chemistry model.
messageStream Info
Information stream (stdout output on master, null elsewhere)
Pointer management similar to std::unique_ptr, with some additional methods and type checking...
Defines the attributes of an object for which implicit objectRegistry management is supported...
Do not request registration (bool: false)