37template<
class CloudType>
48 this->owner().thermo().carrier().Y()[i][celli]
49 /this->owner().thermo().carrier().W(i);
56template<
class CloudType>
69template<
class CloudType>
77 liquids_(owner.
thermo().liquids()),
78 activeLiquids_(this->coeffDict().
lookup(
"activeLiquids")),
79 liqToCarrierMap_(activeLiquids_.size(), -1),
80 liqToLiqMap_(activeLiquids_.size(), -1)
85 <<
"Evaporation model selected, but no active liquids defined"
90 Info<<
"Participating liquid species:" <<
endl;
101 const label idLiquid =
owner.composition().idLiquid();
111template<
class CloudType>
118 liquids_(pcm.owner().
thermo().liquids()),
119 activeLiquids_(pcm.activeLiquids_),
120 liqToCarrierMap_(pcm.liqToCarrierMap_),
121 liqToLiqMap_(pcm.liqToLiqMap_)
127template<
class CloudType>
134template<
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;
217template<
class CloudType>
229 switch (parent::enthalpyTransfer_)
231 case (parent::etLatentHeat):
236 case (parent::etEnthalpyDifference):
238 scalar hc = this->owner().composition().carrier().Ha(idc,
p,
T);
239 scalar hp = liquids_.properties()[idl].h(
p,
T);
255template<
class CloudType>
261 return liquids_.Tpt(X);
265template<
class CloudType>
272 return liquids_.pvInvert(
p, X);
const CloudType & owner() const
Return const access to the owner cloud.
Templated base class for dsmc cloud.
Liquid evaporation model.
List< word > activeLiquids_
List of active liquid names.
virtual scalar dh(const label idc, const label idl, const scalar p, const scalar T) const
Return the enthalpy per unit mass.
virtual ~LiquidEvaporation()
Destructor.
List< label > liqToLiqMap_
Mapping between local and global liquid species.
List< label > liqToCarrierMap_
Mapping between liquid and carrier species.
virtual scalar Tvap(const scalarField &X) const
Return vapourisation temperature.
tmp< scalarField > calcXc(const label celli) const
Calculate the carrier phase component volume fractions at celli.
Templated phase change model class.
scalar Sh() const
Sherwood number.
scalar TMax() const
Return const access to maximum temperature [K].
void size(const label n)
Older name for setAddressableSize.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Lookup type of boundary radiation properties.
const dictionary & properties() const
Return const access to the properties dictionary.
Basic thermodynamics type based on the use of fitting functions for cp, h, s obtained from the templa...
A class for managing temporary objects.
PtrList< volScalarField > & Y
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
#define WarningInFunction
Report a warning using Foam::Warning.
constexpr scalar pi(M_PI)
const scalar RR
Universal gas constant: default in [J/(kmol K)].
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
scalarField Re(const UList< complex > &cf)
Extract real component.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
dimensioned< Type > sum(const DimensionedField< Type, GeoMesh > &df)
messageStream Info
Information stream (stdout output on master, null elsewhere)
Ostream & endl(Ostream &os)
Add newline and flush stream.
dimensionedScalar sqrt(const dimensionedScalar &ds)
errorManip< error > abort(error &err)
dimensionedScalar cbrt(const dimensionedScalar &ds)
constexpr char nl
The newline '\n' character (0x0a)
dimensionedScalar Pr("Pr", dimless, laminarTransport)
#define forAll(list, i)
Loop across all elements in list.