31 template<
class CloudType>
39 Sb_(this->coeffDict().template lookup<scalar>(
"Sb")),
42 O2GlobalId_(owner.composition().carrierId(
"O2")),
43 CO2GlobalId_(owner.composition().carrierId(
"CO2")),
50 label idSolid = owner.composition().idSolid();
51 CsLocalId_ = owner.composition().localId(idSolid,
"C");
52 ashLocalId_ = owner.composition().localId(idSolid,
"ash",
true);
55 WO2_ = owner.composition().carrier().Wi(O2GlobalId_);
56 const scalar WCO2 = owner.composition().carrier().Wi(CO2GlobalId_);
59 HcCO2_ = owner.composition().carrier().Hf(CO2GlobalId_);
61 const scalar YCloc = owner.composition().Y0(idSolid)[CsLocalId_];
62 const scalar YSolidTot = owner.composition().YMixture0()[idSolid];
63 Info<<
" C(s): particle mass fraction = " << YCloc*YSolidTot <<
endl;
65 if (this->coeffDict().readIfPresent(
"heatOfReaction", heatOfReaction_))
67 Info<<
" Using user specified heat of reaction: " 68 << heatOfReaction_ <<
" [J/kg]" <<
endl;
73 template<
class CloudType>
81 CsLocalId_(srm.CsLocalId_),
82 ashLocalId_(srm.ashLocalId_),
83 O2GlobalId_(srm.O2GlobalId_),
84 CO2GlobalId_(srm.CO2GlobalId_),
88 heatOfReaction_(srm.heatOfReaction_)
94 template<
class CloudType>
101 template<
class CloudType>
123 const label idGas = CloudType::parcelType::GAS;
124 const label idSolid = CloudType::parcelType::SLD;
125 const scalar Ychar = YMixture[idSolid]*YSolid[CsLocalId_];
137 const scalar YO2 = carrier.
Y(O2GlobalId_)[celli];
146 const scalar convSI = 1000.0/10000.0;
149 const scalar RRcal = 1985.877534;
152 scalar Ydaf = YMixture[idGas] + YMixture[idSolid];
153 if (ashLocalId_ != -1)
155 Ydaf -= YMixture[idSolid]*YSolid[ashLocalId_];
159 const scalar charPrc =
max(0,
min(Ychar/(Ydaf + rootVSmall)*100.0, 100));
166 const scalar ppO2 =
max(0.0, rhoc*YO2/WO2_*
RR*Tc);
169 const scalar E = -5.94 + 0.355*charPrc;
172 const scalar lnK1750 = 2.8 - 0.0758*charPrc;
173 const scalar A =
exp(lnK1750 + E/RRcal/1750.0);
176 const scalar Rk = A*
exp(-E/(RRcal*T));
179 const scalar qCsLim = mass*Ychar/(WC_*Ap*dt);
180 const scalar qCs =
min(convSI*Rk*
Foam::sqrt(ppO2/101325.0), qCsLim);
183 const scalar dOmega = qCs*Ap*dt;
186 dMassSRCarrier[O2GlobalId_] += -dOmega*Sb_*WO2_;
187 dMassSRCarrier[CO2GlobalId_] += dOmega*(WC_ + Sb_*WO2_);
190 dMassSolid[CsLocalId_] += dOmega*WC_;
195 if (heatOfReaction_ < 0)
198 return dOmega*(WC_*HsC - (WC_ + Sb_*WO2_)*HcCO2_);
202 return dOmega*WC_*heatOfReaction_;
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
fluidReactionThermo & thermo
A list of keyword definitions, which are a keyword followed by any number of values (e...
dimensioned< Type > max(const dimensioned< Type > &, const dimensioned< Type > &)
const PtrList< solidProperties > & properties() const
Return the solidProperties properties.
Thermo package for (S)olids (L)iquids and (G)ases Takes reference to thermo package, and provides:
dimensionedSymmTensor sqr(const dimensionedVector &dv)
dimensionedScalar sqrt(const dimensionedScalar &ds)
Ostream & endl(Ostream &os)
Add newline and flush stream.
Specialisation of basicMixture for a mixture consisting of a number for molecular species...
const dimensionedScalar RR
Universal gas constant: default SI units: [J/kmol/K].
dimensionedScalar exp(const dimensionedScalar &ds)
const solidMixtureProperties & solids() const
Return reference to the global (additional) solids.
virtual ~COxidationHurtMitchell()
Destructor.
dimensioned< Type > min(const dimensioned< Type > &, const dimensioned< Type > &)
COxidationHurtMitchell(const dictionary &dict, CloudType &owner)
Construct from dictionary.
virtual scalar calculate(const scalar dt, const label celli, const scalar d, const scalar T, const scalar Tc, const scalar pc, const scalar rhoc, const scalar mass, const scalarField &YGas, const scalarField &YLiquid, const scalarField &YSolid, const scalarField &YMixture, const scalar N, scalarField &dMassGas, scalarField &dMassLiquid, scalarField &dMassSolid, scalarField &dMassSRCarrier) const
Update surface reactions.
Char oxidation model given by Hurt and Mitchell:
PtrList< volScalarField > & Y()
Return the mass-fraction fields.
Templated surface reaction model class.
Templated base class for dsmc cloud.