34 template<
class CloudType>
43 Sb_(this->coeffDict().getScalar(
"Sb")),
44 C1_(this->coeffDict().getScalar(
"C1")),
45 C2_(this->coeffDict().getScalar(
"C2")),
46 E_(this->coeffDict().getScalar(
"E")),
48 O2GlobalId_(owner.composition().carrierId(
"O2")),
49 CO2GlobalId_(owner.composition().carrierId(
"CO2")),
55 label idSolid = owner.composition().idSolid();
56 CsLocalId_ = owner.composition().localId(idSolid,
"C");
59 WO2_ = owner.thermo().carrier().W(O2GlobalId_);
60 const scalar WCO2 = owner.thermo().carrier().W(CO2GlobalId_);
63 HcCO2_ = owner.thermo().carrier().Hc(CO2GlobalId_);
65 const scalar YCloc = owner.composition().Y0(idSolid)[CsLocalId_];
66 const scalar YSolidTot = owner.composition().YMixture0()[idSolid];
67 Info<<
" C(s): particle mass fraction = " << YCloc*YSolidTot <<
endl;
71 template<
class CloudType>
83 CsLocalId_(srm.CsLocalId_),
84 O2GlobalId_(srm.O2GlobalId_),
85 CO2GlobalId_(srm.CO2GlobalId_),
94 template<
class CloudType>
119 const label idSolid = CloudType::parcelType::SLD;
120 const scalar fComb = YMixture[idSolid]*YSolid[CsLocalId_];
131 const scalar YO2 =
thermo.carrier().Y(O2GlobalId_)[celli];
134 const scalar D0 = C1_/d*
pow(0.5*(
T + Tc), 0.75);
137 const scalar Rk = C2_*
exp(-E_/(
RR*Tc));
143 scalar dmC = Ap*rhoc*
RR*Tc*YO2/WO2_*D0*Rk/(D0 + Rk)*dt;
146 dmC =
min(mass*fComb, dmC);
149 const scalar dOmega = dmC/WC_;
152 const scalar dmO2 = dOmega*Sb_*WO2_;
155 const scalar dmCO2 = dOmega*(WC_ + Sb_*WO2_);
158 dMassSolid[CsLocalId_] += dOmega*WC_;
161 dMassSRCarrier[O2GlobalId_] -= dmO2;
162 dMassSRCarrier[CO2GlobalId_] += dmCO2;
164 const scalar HsC =
thermo.solids().properties()[CsLocalId_].Hs(
T);
169 return dmC*HsC - dmCO2*HcCO2_;