62 const scalar liquidCore,
83 liquidCore_(liquidCore),
115 scalar cpMixture = 0.0;
116 for(label i=0; i<Ns; i++)
122 scalar Yicelli = Yi[
cell()];
131 scalar cellMass = rhog*cellV;
132 Tg += sDB.
shs()[
cell()]/(cpMixture*cellMass);
135 scalar tauMomentum = GREAT;
136 scalar tauHeatTransfer = GREAT;
140 bool keepParcel =
true;
172 1.0
e+10*
mag(
min(tauEvaporation)),
175 mag(tauHeatTransfer),
184 dtMax =
max(dtMax, 1.0
e-4*tEnd);
186 bool switchProcessor =
false;
191 planeNormal /=
mag(planeNormal);
195 while (keepParcel && tEnd > SMALL && !switchProcessor)
198 scalar dt =
min(dtMax, tEnd);
202 label celli =
cell();
203 scalar
p = sDB.
p()[celli];
223 if (keepParcel && sDB.
twoD())
239 scalar oRho = fuels.
rho(p,
T(),
X());
242 scalar oTotMass =
m();
247 oMass[i] =
m()*oYf[i];
253 scalar oHv = fuels.
hl(p,
T(),
X());
254 scalar oH = oHg - oHv;
255 scalar oPE = (p - fuels.
pv(p,
T(),
X()))/oRho;
258 updateParcelProperties
266 scalar nRho = fuels.
rho(p,
T(),
X());
273 nMass[i] =
m()*nYf[i];
279 scalar nHv = fuels.
hl(p,
T(),
X());
280 scalar nH = nHg - nHv;
281 scalar nPE = (p - fuels.
pv(p,
T(),
X()))/nRho;
286 sDB.
srhos()[i][celli] += oMass[i] - nMass[i];
288 sDB.
sms()[celli] += oMom - nMom;
295 ms() -=
ms()*(oTotMass-
m())/oTotMass;
305 sDB.
srhos()[i][celli] += nMass[i];
308 sDB.
sms()[celli] += nMom;
309 sDB.
shs()[celli] +=
m()*(nH + nPE);
316 if (isA<processorPolyPatch>(pbMesh[
patch(
face())]))
318 switchProcessor =
true;
328 void Foam::parcel::updateParcelProperties
343 for(label i=0; i<Ns; i++)
359 for(label i=0; i<Ns; i++)
364 scalar cellV = sDB.
mesh().
V()[celli];
365 scalar
rho = sDB.
rho()[celli];
366 scalar cellMass = rho*cellV;
367 scalar dh = sDB.
shs()[celli];
372 addedMass[i] += sDB.
srhos()[i][celli]*cellV;
375 scalar Tg = Tg0 + dh/(cpMix*cellMass);
383 scalar Yfg0 = Yj[celli];
384 Yfg[i] = (Yfg0*cellMass + addedMass[i])/(addedMass[i] + cellMass);
387 scalar tauMomentum = GREAT;
388 scalar tauHeatTransfer = GREAT;
409 scalar timeRatio = dt/tauMomentum;
418 scalar
v2 = Up & n();
423 scalar g2 = gcorr & n();
427 U() = (
U() + timeRatio*Ucorr + gcorr*dt)/(1.0 + timeRatio);
432 normal /=
mag(normal);
433 scalar dU =
U() & normal;
437 scalar TDroplet =
T();
438 scalar oldDensity = fuels.
rho(pg,
T(), X());
439 scalar oldMass = m();
445 for (label i=0; i<Nf; i++)
451 scalar oldhv = fuels.
hl(pg,
T(), X());
452 scalar Np = N(oldDensity);
454 scalar newDensity = oldDensity;
455 scalar newMass = oldMass;
456 scalar newhg = oldhg;
457 scalar newhv = oldhv;
474 newDensity = fuels.
rho(pg, Tnew, X());
478 for(label i=0; i<Nf; i++)
484 newhv = fuels.
hl(pg, Tnew, X());
486 scalar dm = oldMass - newMass;
487 scalar dhNew = oldMass*(oldhg-oldhv) - newMass*(newhg-newhv);
490 Tg = Tg0 + (dh+dhNew)/(cpMix*cellMass);
497 scalar Yfg0 = Yj[celli];
498 Yfg[i] = (Yfg0*cellMass + addedMass[i] + dm)
499 /(addedMass[i] + cellMass + dm);
521 scalar Taverage = TDroplet + (Tg - TDroplet)/3.0;
523 scalar liquidcL = sDB.
fuels().
cp(pg, TDroplet, X());
526 for(label i=0; i<Ns; i++)
540 scalar evaporationSource = 0.0;
542 scalar tauEvap = 0.0;
544 for(label i=0; i<Nf; i++)
546 tauEvap += X()[i]*fuels.
properties()[i].W()/tauEvaporation[i];
548 tauEvap = fuels.
W(X())/tauEvap;
553 scalar hv = fuels.
hl(pg, TDroplet, X());
557 z = cpMix*tauHeatTransfer/liquidcL/tauEvap;
566 (TDroplet + dt*(fCorrect * Tg - evaporationSource))
567 /(1.0 + dt*fCorrect);
570 Tnew =
min(Tnew, fuels.
Tc(X()));
574 Tnew =
max(200.0, Tnew);
577 scalar pAtSurface = fuels.
pv(pg, Td, X());
578 scalar pCompare = 0.999*pg;
579 scalar boiling = pAtSurface >= pCompare;
583 scalar Terr = 1.0e-3;
586 scalar pOld = pAtSurface;
590 pAtSurface = fuels.
pv(pg, Td, X());
591 if ((pAtSurface < pCompare) && (pOld < pCompare))
597 if ((pAtSurface > pCompare) && (pOld > pCompare))
604 if ((pAtSurface > pCompare) && (pOld < pCompare))
619 Info <<
"n = " << n <<
", T = " << Td <<
", pv = " << pAtSurface <<
endl;
631 for(label i=0; i<Nf; i++)
635 if (
mag(Tnew - fuels.
Tc(X())) < SMALL)
643 scalar pAtSurface = fuels.
properties()[i].pv(pg, Td);
644 scalar boiling = pAtSurface >= 0.999*pg;
648 scalar fr = dt/tauEvaporation[i];
649 mi[i] = mi0[i]/(1.0 + fr);
653 scalar fr = dt/tauBoiling[i];
654 mi[i] = mi0[i]/(1.0 + fr);
676 scalar rhod = fuels.
rho(pg,
T(), X());
677 d() =
cbrt(6.0*m()/(Np*rhod*M_PI));
681 scalar rhod = fuels.
rho(pg,
T(), X());
683 d() =
cbrt(6.0*m()/(Np*rhod*M_PI));