31 template<
class ParcelType>
32 template<
class TrackData>
42 cpc_ = td.cpInterp().interpolate(this->position(), cellI);
44 Tc_ = td.TInterp().interpolate(this->position(), cellI);
46 if (Tc_ < td.constProps().TMin())
50 "void Foam::ThermoParcel<ParcelType>::setCellValues"
56 ) <<
"Limiting observed temperature in cell " << cellI <<
" to "
57 << td.constProps().TMin() <<
nl <<
endl;
59 Tc_ = td.constProps().TMin();
64 template<
class ParcelType>
65 template<
class TrackData>
73 this->Uc_ += td.cloud().UTrans()[cellI]/this->massCell(cellI);
75 scalar cpMean = td.cpInterp().psi()[cellI];
76 Tc_ += td.cloud().hsTrans()[cellI]/(cpMean*this->massCell(cellI));
80 template<
class ParcelType>
81 template<
class TrackData>
95 Ts = (2.0*T + Tc_)/3.0;
98 scalar factor = td.TInterp().interpolate(this->position(), cellI)/
Ts;
99 rhos = this->rhoc_*factor;
100 mus = td.muInterp().interpolate(this->position(), cellI)/factor;
102 Pr = td.constProps().Pr();
107 template<
class ParcelType>
108 template<
class TrackData>
118 const scalar np0 = this->nParticle_;
119 const scalar d0 = this->d_;
120 const vector U0 = this->U_;
121 const scalar rho0 = this->rho_;
122 const scalar T0 = this->T_;
123 const scalar cp0 = this->cp_;
124 const scalar mass0 = this->mass();
130 calcSurfaceValues(td, cellI, T0, Ts, rhos, mus, Pr, kappa);
133 scalar
Re = this->
Re(U0, d0, rhos, mus);
143 vector dUTrans = vector::zero;
149 scalar dhsTrans = 0.0;
183 calcVelocity(td, dt, cellI, Re, mus, d0, U0, rho0, mass0, Su, dUTrans);
188 if (td.cloud().coupled())
191 td.cloud().UTrans()[cellI] += np0*dUTrans;
194 td.cloud().hsTrans()[cellI] += np0*dhsTrans;
204 template<
class ParcelType>
205 template <
class TrackData>
223 if (!td.cloud().heatTransfer().active())
229 scalar htc = td.cloud().heatTransfer().htc(d, Re, Pr, kappa, NCpW);
231 if (
mag(htc) < ROOTVSMALL && !td.cloud().radiation())
233 return max(T + dt*Sh/(this->volume(d)*rho*cp), td.constProps().TMin());
236 const scalar As = this->areaS(d);
237 scalar ap = Tc_ + Sh/As/htc;
238 scalar bp = 6.0*(Sh/As + htc*(Tc_ -
T));
239 if (td.cloud().radiation())
242 td.cloud().mesh().objectRegistry::lookupObject<
volScalarField>(
"G");
243 const scalar Gc = G[cellI];
245 const scalar epsilon = td.constProps().epsilon0();
247 ap = (ap + epsilon*Gc/(4.0*htc))/(1.0 + epsilon*sigma*
pow3(T)/htc);
248 bp += 6.0*(epsilon*(Gc/4.0 - sigma*
pow4(T)));
250 bp /= rho*d*cp*(ap -
T);
254 td.cloud().TIntegrator().integrate(T, dt, ap, bp);
256 scalar Tnew =
max(Tres.value(), td.constProps().TMin());
258 dhsTrans += dt*htc*As*(0.5*(T + Tnew) - Tc_);
266 template <
class ParcelType>