Go to the documentation of this file.
36 template<
class CloudType>
47 this->owner().thermo().carrier().Y()[i][celli]
48 /this->owner().thermo().carrier().W(i);
55 template<
class CloudType>
68 template<
class CloudType>
76 liquids_(owner.thermo().liquids()),
77 activeLiquids_(this->coeffDict().lookup(
"activeLiquids")),
78 liqToCarrierMap_(activeLiquids_.size(), -1),
79 liqToLiqMap_(activeLiquids_.size(), -1)
81 if (activeLiquids_.size() == 0)
84 <<
"Evaporation model selected, but no active liquids defined"
89 Info<<
"Participating liquid species:" <<
endl;
94 Info<<
" " << activeLiquids_[i] <<
endl;
96 owner.composition().carrierId(activeLiquids_[i]);
100 const label idLiquid = owner.composition().idLiquid();
104 owner.composition().localId(idLiquid, activeLiquids_[i]);
110 template<
class CloudType>
117 liquids_(pcm.owner().thermo().liquids()),
126 template<
class CloudType>
133 template<
class CloudType>
151 if ((liquids_.Tc(X) -
T) < SMALL)
156 <<
"Parcel reached critical conditions: "
157 <<
"evaporating all available mass" <<
endl;
162 const label lid = liqToLiqMap_[i];
163 dMassPC[lid] = GREAT;
175 const label gid = liqToCarrierMap_[i];
176 const label lid = liqToLiqMap_[i];
179 const scalar Dab = liquids_.properties()[lid].D(pc, Ts);
187 const scalar pSat = liquids_.properties()[lid].pv(pc,
T);
190 const scalar Sc =
nu/(Dab + ROOTVSMALL);
193 const scalar Sh = this->Sh(
Re, Sc);
196 const scalar kc = Sh*Dab/(d + ROOTVSMALL);
199 const scalar
Cs = pSat/(
RR*Ts);
202 const scalar Cinf = Xc[gid]*pc/(
RR*Ts);
205 const scalar Ni =
max(kc*(
Cs - Cinf), 0.0);
208 dMassPC[lid] += Ni*
pi*
sqr(d)*liquids_.properties()[lid].W()*dt;
213 template<
class CloudType>
225 switch (parent::enthalpyTransfer_)
227 case (parent::etLatentHeat):
229 dh = liquids_.properties()[idl].hl(
p,
T);
232 case (parent::etEnthalpyDifference):
234 scalar hc = this->owner().composition().carrier().Ha(idc,
p,
T);
235 scalar hp = liquids_.properties()[idl].h(
p,
T);
251 template<
class CloudType>
257 return liquids_.Tpt(X);
261 template<
class CloudType>
268 return liquids_.pvInvert(
p, X);
int debug
Static debugging option.
const scalar RR
Universal gas constant: default in [J/(kmol K)].
Templated phase change model class.
A class for managing temporary objects.
virtual scalar TMax(const scalar p, const scalarField &X) const
Return maximum/limiting temperature.
psiReactionThermo & thermo
Ostream & endl(Ostream &os)
Add newline and flush stream.
List< label > liqToLiqMap_
Mapping between local and global liquid species.
#define forAll(list, i)
Loop across all elements in list.
List< label > liqToCarrierMap_
Mapping between liquid and carrier species.
messageStream Info
Information stream (uses stdout - output is on the master only)
dimensionedScalar Pr("Pr", dimless, laminarTransport)
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
List< word > activeLiquids_
List of active liquid names.
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
Templated base class for dsmc cloud.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
errorManip< error > abort(error &err)
PtrList< volScalarField > & Y
scalar Sh() const
Sherwood number.
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.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
constexpr scalar pi(M_PI)
virtual scalar dh(const label idc, const label idl, const scalar p, const scalar T) const
Return the enthalpy per unit mass.
Liquid evaporation model.
LiquidEvaporation(const dictionary &dict, CloudType &cloud)
Construct from dictionary.
dimensionedScalar sqrt(const dimensionedScalar &ds)
scalarField Re(const UList< complex > &cf)
Extract real component.
dimensioned< Type > sum(const DimensionedField< Type, GeoMesh > &df)
virtual scalar Tvap(const scalarField &X) const
Return vapourisation temperature.
dimensionedScalar cbrt(const dimensionedScalar &ds)
#define WarningInFunction
Report a warning using Foam::Warning.
virtual ~LiquidEvaporation()
Destructor.
tmp< scalarField > calcXc(const label celli) const
Calculate the carrier phase component volume fractions at celli.