32 const Foam::scalar Foam::liquidMixtureProperties::TrMax = 0.999;
45 components_ = dict.
toc();
46 properties_.
setSize(components_.size());
64 components_(lm.components_),
65 properties_(lm.properties_.size())
69 properties_.set(i, lm.properties_(i)->clone());
98 scalar x1 = X[i]*properties_[i].Vc();
100 vTc += x1*properties_[i].Tc();
113 Tpt += X[i]*properties_[i].Tt();
131 if (p >=
pv(p, Thi, X))
135 else if (p <
pv(p, Tlo, X))
139 "Foam::scalar Foam::liquidMixtureProperties::pvInvert" 142 " const scalarField&" 144 ) <<
"Pressure below triple point pressure: " 145 <<
"p = " << p <<
" < Pt = " <<
pv(p, Tlo, X) <<
nl <<
endl;
150 scalar T = (Thi + Tlo)*0.5;
152 while ((Thi - Tlo) > 1.0e-4)
154 if ((
pv(p, T, X) - p) <= 0.0)
176 Tpc += X[i]*properties_[i].Tc();
190 Vc += X[i]*properties_[i].Vc();
191 Zc += X[i]*properties_[i].Zc();
194 return RR*Zc*
Tpc(X)/Vc;
204 omega += X[i]*properties_[i].omega();
225 scalar Ti =
min(TrMax*properties_[i].
Tc(), Tl);
226 Xs[i] = properties_[i].pv(p, Ti)*Xl[i]/
p;
239 W += X[i]*properties_[i].W();
253 Y[i] = X[i]*properties_[i].W();
270 X[i] = Y[i]/properties_[i].W();
294 scalar Ti =
min(TrMax*properties_[i].
Tc(), T);
295 scalar
rho = properties_[i].rho(p, Ti);
299 scalar Yi = X[i]*properties_[i].W();
324 scalar Yi = X[i]*properties_[i].W();
327 scalar Ti =
min(TrMax*properties_[i].
Tc(), T);
328 pv += Yi*properties_[i].pv(p, Ti);
350 scalar Yi = X[i]*properties_[i].W();
353 scalar Ti =
min(TrMax*properties_[i].
Tc(), T);
354 hl += Yi*properties_[i].hl(p, Ti);
376 scalar Yi = X[i]*properties_[i].W();
379 scalar Ti =
min(TrMax*properties_[i].
Tc(), T);
380 Cp += Yi*properties_[i].Cp(p, Ti);
403 scalar Ti =
min(TrMax*properties_[i].
Tc(), T);
404 scalar Pvs = properties_[i].pv(p, Ti);
416 scalar Ti =
min(TrMax*properties_[i].
Tc(), T);
417 sigma +=
Xs[i]*properties_[i].sigma(p, Ti);
438 scalar Ti =
min(TrMax*properties_[i].
Tc(), T);
439 mu += X[i]*
log(properties_[i].
mu(p, Ti));
460 scalar Ti =
min(TrMax*properties_[i].
Tc(), T);
462 scalar Vi = properties_[i].W()/properties_[i].rho(p, Ti);
473 scalar Ti =
min(TrMax*properties_[i].
Tc(), T);
477 scalar Tj =
min(TrMax*properties_[j].
Tc(), T);
482 1.0/properties_[i].K(p, Ti)
483 + 1.0/properties_[j].K(p, Tj)
485 K += phii[i]*phii[j]*Kij;
507 scalar Ti =
min(TrMax*properties_[i].
Tc(), T);
508 Dinv += X[i]/properties_[i].D(p, Ti);
scalar K(const scalar p, const scalar T, const scalarField &X) const
Estimate thermal conductivity [W/(m K)].
static autoPtr< liquidMixtureProperties > New(const dictionary &)
Select construct from dictionary.
scalarField Y(const scalarField &X) const
Returns the mass fractions corresponding to the given mole fractions.
CGAL::Exact_predicates_exact_constructions_kernel K
scalar hl(const scalar p, const scalar T, const scalarField &X) const
Calculate the mixture latent heat [J/kg].
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
scalar pv(const scalar p, const scalar T, const scalarField &X) const
Calculate the mixture vapour pressure [Pa].
scalar W(const scalarField &X) const
Calculate the mean molecular weight [kg/kmol].
void size(const label)
Override size to be inconsistent with allocated storage.
dimensionedScalar exp(const dimensionedScalar &ds)
A list of keyword definitions, which are a keyword followed by any number of values (e...
const dictionary & subDict(const word &) const
Find and return a sub-dictionary.
autoPtr< BasicCompressibleTurbulenceModel > New(const volScalarField &rho, const volVectorField &U, const surfaceScalarField &phi, const typename BasicCompressibleTurbulenceModel::transportModel &transport, const word &propertiesName)
dimensionedScalar log(const dimensionedScalar &ds)
void setSize(const label)
Reset size of List.
Ostream & endl(Ostream &os)
Add newline and flush stream.
#define WarningIn(functionName)
Report a warning using Foam::Warning.
wordList toc() const
Return the table of contents.
scalar Tc(const scalarField &X) const
Calculate the critical temperature of mixture.
scalar omega(const scalarField &X) const
Return mixture accentric factor.
scalar pvInvert(const scalar p, const scalarField &X) const
Invert the vapour pressure relationship to retrieve the boiling.
liquidMixtureProperties(const dictionary &dict)
Construct from dictionary.
scalar Ppc(const scalarField &X) const
Return pseudocritical pressure (modified Prausnitz and Gunn)
const scalar RR
Universal gas constant (default in [J/(kmol K)])
scalar D(const scalar p, const scalar T, const scalarField &X) const
Vapour diffussivity [m2/s].
scalar Tpt(const scalarField &X) const
Return pseudo triple point temperature (mole averaged formulation)
scalar rho(const scalar p, const scalar T, const scalarField &X) const
Calculate the mixture density [kg/m^3].
scalar mu(const scalar p, const scalar T, const scalarField &X) const
Calculate the mixture viscosity [Pa s].
scalar Tpc(const scalarField &X) const
Return pseudocritical temperature according to Kay's rule.
scalar Cp(const scalar p, const scalar T, const scalarField &X) const
Calculate the mixture heat capacity [J/(kg K)].
scalar sigma(const scalar p, const scalar T, const scalarField &X) const
Estimate mixture surface tension [N/m].
dimensioned< Type > min(const dimensioned< Type > &, const dimensioned< Type > &)
scalarField X(const scalarField &Y) const
Returns the mole fractions corresponding to the given mass fractions.
scalarField Xs(const scalar p, const scalar Tg, const scalar Tl, const scalarField &Xg, const scalarField &Xl) const
Return the surface molar fractions.