34 template<
class CloudType>
45 this->owner().composition().carrier().Y()[i][celli]
46 /this->owner().composition().carrier().Wi(i);
53 template<
class CloudType>
66 template<
class CloudType>
74 liquids_(owner.thermo().liquids()),
75 activeLiquids_(this->coeffDict().lookup(
"activeLiquids")),
76 liqToCarrierMap_(activeLiquids_.size(), -1),
77 liqToLiqMap_(activeLiquids_.size(), -1)
79 if (activeLiquids_.size() == 0)
82 <<
"Evaporation model selected, but no active liquids defined" 87 Info<<
"Participating liquid species:" <<
endl;
92 Info<<
" " << activeLiquids_[i] <<
endl;
94 owner.composition().carrierId(activeLiquids_[i]);
98 const label idLiquid = owner.composition().idLiquid();
102 owner.composition().localId(idLiquid, activeLiquids_[i]);
108 template<
class CloudType>
115 liquids_(pcm.
owner().thermo().liquids()),
124 template<
class CloudType>
131 template<
class CloudType>
149 if ((liquids_.Tc(X) -
T) < small)
154 <<
"Parcel reached critical conditions: " 155 <<
"evaporating all available mass" <<
endl;
160 const label lid = liqToLiqMap_[i];
161 dMassPC[lid] = great;
173 const label gid = liqToCarrierMap_[i];
174 const label lid = liqToLiqMap_[i];
177 const scalar Dab = liquids_.properties()[lid].D(pc, Ts);
185 const scalar pSat = liquids_.properties()[lid].pv(pc, T);
188 const scalar Sc = nu/(Dab + rootVSmall);
191 const scalar Sh = this->Sh(Re, Sc);
194 const scalar kc = Sh*Dab/(d + rootVSmall);
197 const scalar Cs = X[lid]*pSat/(
RR*Ts);
200 const scalar Cinf = Xc[gid]*pc/(
RR*Ts);
203 const scalar Ni =
max(kc*(Cs - Cinf), 0.0);
206 dMassPC[lid] += Ni*
pi*
sqr(d)*liquids_.properties()[lid].W()*dt;
211 template<
class CloudType>
223 switch (parent::enthalpyTransfer_)
225 case (parent::etLatentHeat):
230 case (parent::etEnthalpyDifference):
232 scalar hc = this->owner().composition().carrier().Ha(idc, p, T);
233 scalar hp = liquids_.
properties()[idl].Ha(p, T);
249 template<
class CloudType>
255 return liquids_.Tpt(X);
259 template<
class CloudType>
266 return liquids_.pvInvert(p, X);
const dictionary & properties() const
Return const access to the properties dictionary.
Liquid evaporation model.
#define forAll(list, i)
Loop across all elements in list.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Templated phase change model class.
List< word > activeLiquids_
List of active liquid names.
virtual void calculate(const scalar dt, const label celli, const scalar Re, const scalar Pr, const scalar d, const scalar nu, const scalar T, const scalar Ts, const scalar pc, const scalar Tc, const scalarField &X, scalarField &dMassPC) const
Update model.
A list of keyword definitions, which are a keyword followed by any number of values (e...
dimensioned< Type > max(const dimensioned< Type > &, const dimensioned< Type > &)
virtual scalar TMax(const scalar p, const scalarField &X) const
Return maximum/limiting temperature.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
basicSpecieMixture & composition
dimensionedSymmTensor sqr(const dimensionedVector &dv)
virtual scalar Tvap(const scalarField &X) const
Return vapourisation temperature.
dimensionedScalar sqrt(const dimensionedScalar &ds)
List< label > liqToCarrierMap_
Mapping between liquid and carrier species.
Ostream & endl(Ostream &os)
Add newline and flush stream.
List< label > liqToLiqMap_
Mapping between local and global liquid species.
dimensioned< Type > sum(const DimensionedField< Type, GeoMesh > &df)
const CloudType & owner() const
Return const access to the owner cloud.
const dimensionedScalar RR
Universal gas constant: default SI units: [J/kmol/K].
dimensionedScalar cbrt(const dimensionedScalar &ds)
virtual scalar dh(const label idc, const label idl, const scalar p, const scalar T) const
Return the enthalpy per unit mass.
errorManip< error > abort(error &err)
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
virtual ~LiquidEvaporation()
Destructor.
LiquidEvaporation(const dictionary &dict, CloudType &cloud)
Construct from dictionary.
#define WarningInFunction
Report a warning using Foam::Warning.
PtrList< volScalarField > & Y
A class for managing temporary objects.
Templated base class for dsmc cloud.
scalar Sh() const
Sherwood number.
tmp< scalarField > calcXc(const label celli) const
Calculate the carrier phase component volume fractions at celli.