Go to the documentation of this file.
34 template<
class CloudType>
45 this->owner().thermo().carrier().Y()[i][cellI]
46 /this->owner().thermo().carrier().W(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 avaliable 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 =
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):
227 dh = liquids_.properties()[idl].hl(
p,
T);
230 case (parent::etEnthalpyDifference):
232 scalar hc = this->owner().composition().carrier().Ha(idc,
p,
T);
233 scalar hp = liquids_.properties()[idl].h(
p,
T);
249 template<
class CloudType>
255 return liquids_.Tpt(X);
259 template<
class CloudType>
266 return liquids_.pvInvert(
p, X);
const scalar RR
Universal gas constant (default in [J/(kmol K)])
#define forAll(list, i)
Loop across all elements in list.
A class for managing temporary objects.
virtual scalar TMax(const scalar p, const scalarField &X) const
Return maximum/limiting temperature.
scalarField Re(const UList< complex > &cf)
Ostream & endl(Ostream &os)
Add newline and flush stream.
List< label > liqToLiqMap_
Mapping between local and global liquid species.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Pre-declare SubField and related Field type.
List< label > liqToCarrierMap_
Mapping between liquid and carrier species.
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
List< word > activeLiquids_
List of active liquid names.
dimensionedScalar Pr("Pr", dimless, laminarTransport)
Templated base class for dsmc cloud.
const dimensionedScalar & pSat
A list of keyword definitions, which are a keyword followed by any number of values (e....
errorManip< error > abort(error &err)
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.
dimensioned< Type > max(const dimensioned< Type > &, const dimensioned< Type > &)
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
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)
dimensioned< Type > sum(const DimensionedField< Type, GeoMesh > &df)
tmp< scalarField > calcXc(const label cellI) const
Calculate the carrier phase component volume fractions at cellI.
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.
PtrList< volScalarField > & Y
stressControl lookup("compactNormalStress") >> compactNormalStress