32 template<
class CloudType>
38 scalarField Xc(this->owner().mcCarrierThermo().
Y().size());
43 this->owner().mcCarrierThermo().Y()[i][cellI]
44 /this->owner().mcCarrierThermo().speciesData()[i].W();
51 template <
class CloudType>
64 template <
class CloudType>
76 owner.mesh().objectRegistry::lookupObject<
dictionary>
78 owner.carrierThermo().name()
82 activeLiquids_(this->coeffDict().lookup(
"activeLiquids")),
83 liqToCarrierMap_(activeLiquids_.size(), -1),
84 liqToLiqMap_(activeLiquids_.size(), -1)
86 if (activeLiquids_.size() == 0)
90 "Foam::LiquidEvaporation<CloudType>::LiquidEvaporation"
92 "const dictionary& dict, "
95 ) <<
"Evaporation model selected, but no active liquids defined"
102 liqToCarrierMap_[i] =
103 owner.composition().globalCarrierId(activeLiquids_[i]);
107 label idLiquid = owner.composition().idLiquid();
111 owner.composition().localId(idLiquid, activeLiquids_[i]);
118 template <
class CloudType>
125 template<
class CloudType>
132 template<
class CloudType>
155 label gid = liqToCarrierMap_[i];
156 label lid = liqToLiqMap_[i];
159 scalar Dab = liquids_->properties()[lid].D(pc, Ts);
167 scalar
pSat = liquids_->properties()[lid].pv(pc, T);
170 scalar Sc = nu/(Dab + ROOTVSMALL);
173 scalar Sh = this->Sh(Re, Sc);
176 scalar kc = Sh*Dab/(d + ROOTVSMALL);
179 scalar Cs = pSat/(specie::RR*
Ts);
182 scalar Cinf = Xc[gid]*pc/(specie::RR*
Ts);
185 scalar Ni =
max(kc*(Cs - Cinf), 0.0);
188 dMassPC[lid] += Ni*A*liquids_->properties()[lid].W()*dt;