31 template<
class CloudType>
40 Sb_(this->coeffDict().template lookup<scalar>(
"Sb")),
41 C1_(this->coeffDict().template lookup<scalar>(
"C1")),
42 C2_(this->coeffDict().template lookup<scalar>(
"C2")),
43 E_(this->coeffDict().template lookup<scalar>(
"E")),
45 O2GlobalId_(owner.composition().carrierId(
"O2")),
46 CO2GlobalId_(owner.composition().carrierId(
"CO2")),
53 CsLocalId_ =
owner.composition().localId(idSolid,
"C");
56 WO2_ =
owner.composition().carrier().WiValue(O2GlobalId_);
57 const scalar WCO2 =
owner.composition().carrier().WiValue(CO2GlobalId_);
60 HcCO2_ =
owner.composition().carrier().hfiValue(CO2GlobalId_);
62 const scalar YCloc =
owner.composition().Y0(idSolid)[CsLocalId_];
63 const scalar YSolidTot =
owner.composition().YMixture0()[idSolid];
64 Info<<
" C(s): particle mass fraction = " << YCloc*YSolidTot <<
endl;
68 template<
class CloudType>
80 CsLocalId_(srm.CsLocalId_),
81 O2GlobalId_(srm.O2GlobalId_),
82 CO2GlobalId_(srm.CO2GlobalId_),
91 template<
class CloudType>
99 template<
class CloudType>
122 const label idSolid = CloudType::parcelType::SLD;
123 const scalar fComb = YMixture[idSolid]*YSolid[CsLocalId_];
133 this->owner().composition().carrier();
136 const scalar YO2 = carrierThermo.
Y(O2GlobalId_)[celli];
139 const scalar D0 = C1_/d*
pow(0.5*(
T + Tc), 0.75);
142 const scalar Rk = C2_*
exp(-E_/(
RR*Tc));
148 scalar dmC = Ap*rhoc*
RR*Tc*YO2/WO2_*D0*Rk/(D0 + Rk)*dt;
151 dmC =
min(mass*fComb, dmC);
154 const scalar dOmega = dmC/WC_;
157 const scalar dmO2 = dOmega*Sb_*WO2_;
160 const scalar dmCO2 = dOmega*(WC_ + Sb_*WO2_);
163 dMassSolid[CsLocalId_] += dOmega*WC_;
166 dMassSRCarrier[O2GlobalId_] -= dmO2;
167 dMassSRCarrier[CO2GlobalId_] += dmCO2;
174 return dmC*hsC - dmCO2*HcCO2_;
Kinetic/diffusion limited rate surface reaction model for coal parcels. Limited to:
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.
COxidationKineticDiffusionLimitedRate(const dictionary &dict, CloudType &owner)
Construct from dictionary.
virtual ~COxidationKineticDiffusionLimitedRate()
Destructor.
const CloudType & owner() const
Return const access to the owner cloud.
Templated base class for dsmc cloud.
Templated surface reaction model class.
virtual const IOdictionary & properties() const =0
Properties dictionary.
A list of keyword definitions, which are a keyword followed by any number of values (e....
Base-class for multi-component fluid thermodynamic properties.
virtual PtrList< volScalarField > & Y()=0
Access the mass-fraction fields.
Thermo package for (S)olids (L)iquids and (G)ases Takes reference to thermo package,...
const dimensionedScalar RR
Universal gas constant: default SI units: [J/kmol/K].
dimensionedScalar exp(const dimensionedScalar &ds)
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
Ostream & endl(Ostream &os)
Add newline and flush stream.
layerAndWeight min(const layerAndWeight &a, const layerAndWeight &b)
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
fluidMulticomponentThermo & thermo