36 template<
class ParcelType>
37 template<
class TrackCloudType>
40 TrackCloudType&
cloud,
47 return cloud.composition().Cp(idS, this->Y_,
p,
T);
51 template<
class ParcelType>
52 template<
class TrackCloudType>
55 TrackCloudType&
cloud,
62 return cloud.composition().Hs(idS, this->Y_,
p,
T);
66 template<
class ParcelType>
67 template<
class TrackCloudType>
70 TrackCloudType&
cloud,
77 return cloud.composition().L(idS, this->Y_,
p,
T);
83 template<
class ParcelType>
84 template<
class TrackCloudType>
87 TrackCloudType&
cloud,
92 typedef typename TrackCloudType::reactingCloudType reactingCloudType;
100 const scalar np0 = this->nParticle_;
101 const scalar d0 = this->d_;
102 const vector& U0 = this->U_;
103 const scalar
T0 = this->T_;
104 const scalar mass0 = this->mass();
106 const scalar pc = td.pc();
111 scalar Ts, rhos, mus, Prs, kappas;
112 this->calcSurfaceValues(
cloud, td,
T0, Ts, rhos, mus, Prs, kappas);
113 scalar Res = this->
Re(rhos, U0, td.Uc(), d0, mus);
134 scalar dhsTrans = 0.0;
154 calcHeterogeneousReactions
180 scalar mass1 = mass0 -
sum(dMassSolid);
183 if (np0*mass1 <
cloud.constProps().minParcelMass())
185 td.keepParticle =
false;
191 (void)this->updateMassFraction(mass0, dMassSolid, this->Y_);
195 if (
cloud.constProps().constantVolume())
197 this->rho_ = mass1/this->
volume();
201 this->d_ =
cbrt(mass1/this->rho_*6.0/
pi);
205 this->correctSurfaceValues(
cloud, td, Ts,
Cs, rhos, mus, Prs, kappas);
206 Res = this->
Re(rhos, U0, td.Uc(), this->d_, mus);
217 this->calcHeatTransfer
233 this->Cp_ = CpEff(
cloud, td, pc, this->T_, idS);
240 this->calcVelocity(
cloud, td, dt, Res, mus, mass1,
Su, dUTrans, Spu);
246 if (
cloud.solution().coupled())
263 scalar dm = np0*dMassSRCarrier[i];
271 cloud.UTrans()[this->
cell()] += np0*dUTrans;
275 cloud.hsTrans()[this->
cell()] += np0*dhsTrans;
276 cloud.hsCoeff()[this->
cell()] += np0*Sph;
279 if (
cloud.radiation())
281 const scalar ap = this->areaP();
282 const scalar T4 =
pow4(
T0);
283 cloud.radAreaP()[this->
cell()] += dt*np0*ap;
284 cloud.radT4()[this->
cell()] += dt*np0*T4;
285 cloud.radAreaPT4()[this->
cell()] += dt*np0*ap*T4;
293 template<
class ParcelType>
294 template<
class TrackCloudType>
297 TrackCloudType&
cloud,
305 const label canCombust,
317 if (!
cloud.heterogeneousReaction().active())
323 (void)
cloud.constProps().hRetentionCoeff();
324 (void)
cloud.constProps().TMax();
333 const scalar hReaction =
cloud.heterogeneousReaction().calculate
353 cloud.heterogeneousReaction().addToSurfaceReactionMass
355 this->nParticle_*
sum(dMassSRSolid)
358 const scalar xsi =
min(
T/
cloud.constProps().TMax(), 1.0);
360 (1.0 - xsi*xsi)*
cloud.constProps().hRetentionCoeff();
362 Sh += coeff*hReaction/dt;
364 dhsTrans += (1.0 - coeff)*hReaction;
370 template<
class ParcelType>
378 canCombust_(
p.canCombust_)
382 template<
class ParcelType>
385 const ReactingHeterogeneousParcel<ParcelType>&
p,
391 canCombust_(
p.canCombust_)