32 template<
class ThermoType>
38 const auto& czs = mesh_.cellZones();
40 const auto* dictPtr =
thermoDict.findDict(
"none");
42 speciesData_.setSize(dictPtr ? czs.size()+1 : czs.size());
48 new ThermoType(
thermoDict.subDict(czs[i].name()))
54 speciesData_.set(czs.size(),
new ThermoType(*dictPtr));
57 return speciesData_[0];
64 template<
class ThermoType>
74 mixture_(
"mixture", constructSpeciesData(
thermoDict.subDict(
"mixture")))
81 for (
const auto& cz : czs)
87 if (speciesData_.
size() == czs.size())
89 const label noneCelli = zoneID_.
find(czs.size());
94 <<
" but no \"none\" entry in \"mixture\"" 103 template<
class ThermoType>
109 mixture_ = speciesData_[zoneID_[celli]];
114 template<
class ThermoType>
121 const label celli = mesh_.boundary()[patchi].faceCells()[facei];
122 mixture_ = speciesData_[zoneID_[celli]];
127 template<
class ThermoType>
136 return this->cellMixture(celli);
140 template<
class ThermoType>
150 return this->patchFaceMixture(patchi, facei);
154 template<
class ThermoType>
void read(const dictionary &)
Read dictionary.
errorManipArg< error, int > exit(error &err, const int errNo=1)
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
A list of keyword definitions, which are a keyword followed by a number of values (eg...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
label find(const T &val, label pos=0) const
Find index of the first occurrence of the value.
#define forAll(list, i)
Loop across all elements in list.
Version of pureMixture that uses different mixtures for different cellZones. Every cellZone has to pr...
const ThermoType & cellVolMixture(const scalar p, const scalar T, const label celli) const
void setSize(const label n)
Alias for resize()
A class for handling words, derived from Foam::string.
label size() const noexcept
The number of entries in the list.
const dictionary & thermoDict
const vectorField & cellCentres() const
const ThermoType & cellMixture(const label celli) const
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
const ThermoType & patchFaceVolMixture(const scalar p, const scalar T, const label patchi, const label facei) const
label nCells() const noexcept
Number of mesh cells.
Mesh data needed to do the Finite Volume discretisation.
A List with indirect addressing. Like IndirectList but does not store addressing. ...
const cellZoneMesh & cellZones() const noexcept
Return cell zone mesh.
const ThermoType & patchFaceMixture(const label patchi, const label facei) const