31 template<
class CloudType>
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.thermo().carrier().W(O2GlobalId_);
56 const scalar WCO2 = owner.thermo().carrier().W(CO2GlobalId_);
59 HcCO2_ = owner.thermo().carrier().Hc(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_];
136 const scalar YO2 = thermo.
carrier().
Y(O2GlobalId_)[celli];
145 const scalar convSI = 1000.0/10000.0;
148 const scalar RRcal = 1985.877534;
151 scalar Ydaf = YMixture[idGas] + YMixture[idSolid];
152 if (ashLocalId_ != -1)
154 Ydaf -= YMixture[idSolid]*YSolid[ashLocalId_];
158 const scalar charPrc =
max(0,
min(Ychar/(Ydaf + rootVSmall)*100.0, 100));
165 const scalar ppO2 =
max(0.0, rhoc*YO2/WO2_*
RR*Tc);
168 const scalar E = -5.94 + 0.355*charPrc;
171 const scalar lnK1750 = 2.8 - 0.0758*charPrc;
172 const scalar A =
exp(lnK1750 + E/RRcal/1750.0);
175 const scalar Rk = A*
exp(-E/(RRcal*T));
178 const scalar qCsLim = mass*Ychar/(WC_*Ap*dt);
179 const scalar qCs =
min(convSI*Rk*
Foam::sqrt(ppO2/101325.0), qCsLim);
182 const scalar dOmega = qCs*Ap*dt;
185 dMassSRCarrier[O2GlobalId_] += -dOmega*Sb_*WO2_;
186 dMassSRCarrier[CO2GlobalId_] += dOmega*(WC_ + Sb_*WO2_);
189 dMassSolid[CsLocalId_] += dOmega*WC_;
194 if (heatOfReaction_ < 0)
197 return dOmega*(WC_*HsC - (WC_ + Sb_*WO2_)*HcCO2_);
201 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.
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.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
dimensionedScalar sqrt(const dimensionedScalar &ds)
Ostream & endl(Ostream &os)
Add newline and flush stream.
rhoReactionThermo & thermo
const solidMixtureProperties & solids() const
Return reference to the global (additional) solids.
PtrList< volScalarField > & Y()
Return the mass-fraction fields.
stressControl lookup("compactNormalStress") >> compactNormalStress
dimensionedScalar exp(const dimensionedScalar &ds)
Thermo package for (S)olids (L)iquids and (G)ases Takes reference to thermo package, and provides:
virtual ~COxidationHurtMitchell()
Destructor.
dimensioned< Type > min(const dimensioned< Type > &, const dimensioned< Type > &)
const basicSpecieMixture & carrier() const
Return reference to the gaseous components.
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.
const scalar RR
Universal gas constant (default in [J/(kmol K)])
Char oxidation model given by Hurt and Mitchell:
Templated surface reaction model class.
Templated base class for dsmc cloud.