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 > &)
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.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
dimensionedScalar sqrt(const dimensionedScalar &ds)
Ostream & endl(Ostream &os)
Add newline and flush stream.
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:
const solidMixtureProperties & solids() const
Return reference to the global (additional) solids.
Basic thermodynamics type based on the use of fitting functions for cp, h, s obtained from the templa...
const PtrList< solidProperties > & properties() const
Return the solidProperties properties.
virtual ~COxidationHurtMitchell()
Destructor.
dimensioned< Type > min(const dimensioned< Type > &, const dimensioned< Type > &)
COxidationHurtMitchell(const dictionary &dict, CloudType &owner)
Construct from dictionary.
const basicSpecieMixture & carrier() const
Return reference to the gaseous components.
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.