33 template<
class CloudType>
41 Sb_(this->coeffDict().template lookup<scalar>(
"Sb")),
42 C1_(this->coeffDict().template lookup<scalar>(
"C1")),
43 rMean_(this->coeffDict().template lookup<scalar>(
"rMean")),
44 theta_(this->coeffDict().template lookup<scalar>(
"theta")),
45 Ai_(this->coeffDict().template lookup<scalar>(
"Ai")),
46 Ei_(this->coeffDict().template lookup<scalar>(
"Ei")),
47 Ag_(this->coeffDict().template lookup<scalar>(
"Ag")),
48 tau_(this->coeffDict().lookupOrDefault(
"tau",
sqrt(2.0))),
58 CsLocalId_ =
owner.composition().localId(idSolid,
"C");
61 WO2_ =
owner.composition().carrier().Wi(O2GlobalId_);
62 const scalar WCO2 =
owner.composition().carrier().Wi(CO2GlobalId_);
65 HcCO2_ =
owner.composition().carrier().Hf(CO2GlobalId_);
70 <<
"Stoichiometry of reaction, Sb, must be greater than zero" <<
nl
74 const scalar YCloc =
owner.composition().Y0(idSolid)[CsLocalId_];
75 const scalar YSolidTot =
owner.composition().YMixture0()[idSolid];
76 Info<<
" C(s): particle mass fraction = " << YCloc*YSolidTot <<
endl;
80 template<
class CloudType>
95 CsLocalId_(srm.CsLocalId_),
96 O2GlobalId_(srm.O2GlobalId_),
97 CO2GlobalId_(srm.CO2GlobalId_),
106 template<
class CloudType>
114 template<
class CloudType>
137 const label idSolid = CloudType::parcelType::SLD;
138 const scalar Ychar = YMixture[idSolid]*YSolid[CsLocalId_];
150 const scalar YO2 = carrier.
Y(O2GlobalId_)[celli];
153 if (YO2 < rootVSmall)
159 const scalar D0 = C1_/d*
pow(0.5*(
T + Tc), 0.75);
165 const scalar Dkn = 97.0*rMean_*
sqrt(
T/WO2_);
168 const scalar De = theta_/
sqr(tau_)/(1.0/Dkn + 1/D0);
171 const scalar rhoO2 = rhoc*YO2;
174 const scalar ppO2 = rhoO2/WO2_*
RR*Tc;
177 const scalar ki = Ai_*
exp(-Ei_/
RR/
T);
181 max(0.5*d*
sqrt(Sb_*rhop*Ag_*ki*ppO2/(De*rhoO2)), rootVSmall);
184 const scalar eta =
max(3.0*
sqr(phi)*(phi/
tanh(phi) - 1.0), 0.0);
187 const scalar
R = eta*d/6.0*rhop*Ag_*ki;
193 scalar dmC = Ap*rhoc*
RR*Tc*YO2/WO2_*D0*
R/(D0 +
R)*dt;
196 dmC =
min(mass*Ychar, dmC);
199 const scalar dOmega = dmC/WC_;
202 const scalar dmO2 = dOmega*Sb_*WO2_;
205 const scalar dmCO2 = dOmega*(WC_ + Sb_*WO2_);
208 dMassSolid[CsLocalId_] += dOmega*WC_;
211 dMassSRCarrier[O2GlobalId_] -= dmO2;
212 dMassSRCarrier[CO2GlobalId_] += dmCO2;
219 return dmC*HsC - dmCO2*HcCO2_;
Intrinsic char surface reaction mndel.
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.
COxidationIntrinsicRate(const dictionary &dict, CloudType &owner)
Construct from dictionary.
virtual ~COxidationIntrinsicRate()
Destructor.
const CloudType & owner() const
Return const access to the owner cloud.
Templated base class for dsmc cloud.
Templated surface reaction model class.
Specialisation of basicMixture for a mixture consisting of a number for molecular species.
PtrList< volScalarField > & Y()
Return the mass-fraction fields.
virtual const IOdictionary & properties() const =0
Properties dictionary.
A list of keyword definitions, which are a keyword followed by any number of values (e....
Thermo package for (S)olids (L)iquids and (G)ases Takes reference to thermo package,...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
const dimensionedScalar RR
Universal gas constant: default SI units: [J/kmol/K].
errorManipArg< error, int > exit(error &err, const int errNo=1)
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.
dimensionedScalar pow3(const dimensionedScalar &ds)
dimensionedScalar tanh(const dimensionedScalar &ds)
layerAndWeight min(const layerAndWeight &a, const layerAndWeight &b)
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
dimensionedScalar sqrt(const dimensionedScalar &ds)
layerAndWeight max(const layerAndWeight &a, const layerAndWeight &b)
static scalar R(const scalar a, const scalar x)
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
basicSpecieMixture & composition
fluidMulticomponentThermo & thermo