Go to the documentation of this file.
37 template<
class CloudType>
48 this->owner().thermo().carrier().Y()[i][celli]
49 /this->owner().thermo().carrier().W(i);
56 template<
class CloudType>
69 template<
class CloudType>
77 liquids_(owner.thermo().liquids()),
78 activeLiquids_(this->coeffDict().lookup(
"activeLiquids")),
79 liqToCarrierMap_(activeLiquids_.size(), -1),
80 liqToLiqMap_(activeLiquids_.size(), -1)
82 if (activeLiquids_.size() == 0)
85 <<
"Evaporation model selected, but no active liquids defined"
90 Info<<
"Participating liquid species:" <<
endl;
95 Info<<
" " << activeLiquids_[i] <<
endl;
97 owner.composition().carrierId(activeLiquids_[i]);
101 const label idLiquid = owner.composition().idLiquid();
105 owner.composition().localId(idLiquid, activeLiquids_[i]);
111 template<
class CloudType>
118 liquids_(pcm.owner().thermo().liquids()),
127 template<
class CloudType>
134 template<
class CloudType>
155 if ((liquids_.Tc(X) -
T) < SMALL)
160 <<
"Parcel reached critical conditions: "
161 <<
"evaporating all available mass" <<
endl;
166 const label lid = liqToLiqMap_[i];
167 dMassPC[lid] = GREAT;
179 const label gid = liqToCarrierMap_[i];
180 const label lid = liqToLiqMap_[i];
183 const scalar Dab = liquids_.properties()[lid].D(pc, Ts);
191 const scalar pSat = liquids_.properties()[lid].pv(pc,
T);
194 const scalar Sc =
nu/(Dab + ROOTVSMALL);
197 const scalar Sh = this->Sh(
Re, Sc);
200 const scalar kc = Sh*Dab/(d + ROOTVSMALL);
203 const scalar
Cs = pSat/(
RR*Ts);
206 const scalar Cinf = Xc[gid]*pc/(
RR*Ts);
209 const scalar Ni =
max(kc*(
Cs - Cinf), 0.0);
212 dMassPC[lid] += Ni*
pi*
sqr(d)*liquids_.properties()[lid].W()*dt;
217 template<
class CloudType>
229 switch (parent::enthalpyTransfer_)
231 case (parent::etLatentHeat):
233 dh = liquids_.properties()[idl].hl(
p,
T);
236 case (parent::etEnthalpyDifference):
238 scalar hc = this->owner().composition().carrier().Ha(idc,
p,
T);
239 scalar hp = liquids_.properties()[idl].h(
p,
T);
255 template<
class CloudType>
261 return liquids_.Tpt(X);
265 template<
class CloudType>
272 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 (stdout output on master, null elsewhere)
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.
#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.
virtual void calculate(const scalar dt, const label celli, const scalar Re, const scalar Pr, const scalar d, const scalar nu, const scalar rho, const scalar T, const scalar Ts, const scalar pc, const scalar Tc, const scalarField &X, const scalarField &solMass, const scalarField &liqMass, scalarField &dMassPC) const
Update model.