54 Info<<
"Creating component thermo properties:" <<
endl;
56 if (isA<basicSpecieMixture>(thermo))
63 <<
" species" <<
endl;
67 Info<<
" single component carrier" <<
endl;
70 if (thermo.
found(
"liquids"))
73 Info<<
" liquids - " << liquids_->components().size()
74 <<
" components" <<
endl;
78 Info<<
" no liquid components" <<
endl;
81 if (thermo.
found(
"solids"))
84 Info<<
" solids - " << solids_->components().size()
85 <<
" components" <<
endl;
89 Info<<
" no solid components" <<
endl;
110 if (carrier_ ==
nullptr)
113 <<
"carrier requested, but object is not allocated" 123 if (!liquids_.valid())
126 <<
"liquids requested, but object is not allocated" 136 if (!solids_.valid())
139 <<
"solids requested, but object is not allocated" 149 const word& cmptName,
155 if (cmptName == carrier_->
species()[i])
164 <<
"Unknown carrier component " << cmptName
165 <<
". Valid carrier components are:" <<
nl 175 const word& cmptName,
181 if (cmptName == liquids_->components()[i])
190 <<
"Unknown liquid component " << cmptName <<
". Valid liquids are:" 200 const word& cmptName,
206 if (cmptName == solids_->components()[i])
215 <<
"Unknown solid component " << cmptName <<
". Valid solids are:" 225 return (carrier_ !=
nullptr);
231 return liquids_.valid();
237 return solids_.valid();
bool hasSolids() const
Thermo database has solid components flag.
bool found(const word &, bool recursive=false, bool patternMatch=true) const
Search dictionary for given keyword.
#define forAll(list, i)
Loop across all elements in list.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
errorManipArg< error, int > exit(error &err, const int errNo=1)
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
virtual ~SLGThermo()
Destructor.
void size(const label)
Override size to be inconsistent with allocated storage.
Ostream & endl(Ostream &os)
Add newline and flush stream.
bool hasMultiComponentCarrier() const
Thermo database has multi-component carrier flag.
rhoReactionThermo & thermo
Specialization of basicMixture for a mixture consisting of a number for molecular species...
const solidMixtureProperties & solids() const
Return reference to the global (additional) solids.
const dictionary & subDict(const word &) const
Find and return a sub-dictionary.
static autoPtr< liquidMixtureProperties > New(const dictionary &)
Select construct from dictionary.
A class for handling words, derived from string.
Fundamental fluid thermodynamic properties.
const liquidMixtureProperties & liquids() const
Return reference to the global (additional) liquids.
Thermo package for (S)olids (L)iquids and (G)ases Takes reference to thermo package, and provides:
errorManip< error > abort(error &err)
defineTypeNameAndDebug(combustionModel, 0)
const basicSpecieMixture & carrier() const
Return reference to the gaseous components.
label liquidId(const word &cmptName, bool allowNotFound=false) const
Index of liquid component.
label carrierId(const word &cmptName, bool allowNotFound=false) const
Index of carrier component.
Mesh data needed to do the Finite Volume discretisation.
regIOobject is an abstract class derived from IOobject to handle automatic object registration with t...
Mesh consisting of general polyhedral cells.
bool hasLiquids() const
Thermo database has liquid components flag.
static autoPtr< solidMixtureProperties > New(const dictionary &)
Select construct from dictionary.
SLGThermo(const fvMesh &mesh, fluidThermo &thermo)
Construct from mesh.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
label solidId(const word &cmptName, bool allowNotFound=false) const
Index of solid component.
const fluidThermo & thermo() const
Return reference to the thermo database.
const speciesTable & species() const
Return the table of species.