Go to the documentation of this file.
31 template<
class Specie>
53 template<
class Specie>
69 template<
class Specie>
80 template<
class Specie>
91 template<
class Specie>
107 template<
class Specie>
115 return p/(z*this->
R()*
T);
119 template<
class Specie>
132 template<
class Specie>
140 return 1.0/(z*this->
R()*
T);
144 template<
class Specie>
151 scalar a = 0.45724*
sqr(this->
R())*
sqr(Tc_)/Pc_;
152 scalar
b = 0.07780*this->
R()*Tc_/Pc_;
159 + (0.37464 + 1.54226*omega_- 0.26992*
sqr(omega_))
163 scalar B =
b*
p/(this->
R()*
T);
167 scalar a1 =
A - 2.0*B - 3.0*
sqr(B);
170 scalar
Q = (3.0*a1 - a2*a2)/9.0;
171 scalar Rl = (9.0*a2*a1 - 27.0*
a0 - 2.0*a2*a2*a2)/54;
174 scalar D = Q3 + Rl*Rl;
181 scalar qm = 2.0*
sqrt(-
Q);
182 scalar r1 = qm*
cos(th/3.0) - a2/3.0;
186 root =
max(r1,
max(r2, r3));
191 scalar D05 =
sqrt(D);
192 scalar S =
pow(Rl + D05, 1.0/3.0);
196 Tl = -
pow(
mag(Rl - D05), 1.0/3.0);
200 Tl =
pow(Rl - D05, 1.0/3.0);
203 root = S + Tl - a2/3.0;
210 template<
class Specie>
223 template<
class Specie>
229 scalar molr1 = this->nMoles();
230 Specie::operator+=(pg);
232 molr1 /= this->nMoles();
233 scalar molr2 = pg.nMoles()/this->nMoles();
235 Tc_ = molr1*Tc_ + molr2*pg.Tc_;
236 Vc_ = molr1*Vc_ + molr2*pg.Vc_;
237 Zc_ = molr1*Zc_ + molr2*pg.Zc_;
238 Pc_ =
RR*Zc_*Tc_/Vc_;
239 omega_ = molr1*omega_ + molr2*pg.omega_;
243 template<
class Specie>
249 scalar molr1 = this->nMoles();
251 Specie::operator-=(pg);
253 molr1 /= this->nMoles();
254 scalar molr2 = pg.nMoles()/this->nMoles();
256 Tc_ = molr1*Tc_ - molr2*pg.Tc_;
257 Vc_ = molr1*Vc_ - molr2*pg.Vc_;
258 Zc_ = molr1*Zc_ - molr2*pg.Zc_;
259 Pc_ =
RR*Zc_*Tc_/Vc_;
260 omega_ = molr1*omega_ - molr2*pg.omega_;
264 template<
class Specie>
267 Specie::operator*=(
s);
274 template<
class Specie>
281 scalar nMoles = pg1.nMoles() + pg2.nMoles();
282 scalar molr1 = pg1.nMoles()/nMoles;
283 scalar molr2 = pg2.nMoles()/nMoles;
285 const scalar Tc = molr1*pg1.
Tc_ + molr2*pg2.Tc_;
286 const scalar Vc = molr1*pg1.
Vc_ + molr2*pg2.Vc_;
287 const scalar Zc = molr1*pg1.
Zc_ + molr2*pg2.Zc_;
291 static_cast<const Specie&
>(pg1)
292 +
static_cast<const Specie&
>(pg2),
297 molr1*pg1.
omega_ + molr2*pg2.omega_
302 template<
class Specie>
305 const PengRobinsonGas<Specie>& pg1,
306 const PengRobinsonGas<Specie>& pg2
309 scalar nMoles = pg1.nMoles() + pg2.nMoles();
310 scalar molr1 = pg1.nMoles()/nMoles;
311 scalar molr2 = pg2.nMoles()/nMoles;
313 const scalar Tc = molr1*pg1.
Tc_ + molr2*pg2.Tc_;
314 const scalar Vc = molr1*pg1.
Vc_ + molr2*pg2.Vc_;
315 const scalar Zc = molr1*pg1.
Zc_ + molr2*pg2.Zc_;
317 return PengRobinsonGas<Specie>
319 static_cast<const Specie&
>(pg1)
320 -
static_cast<const Specie&
>(pg2),
325 molr1*pg1.
omega_ - molr2*pg2.omega_
330 template<
class Specie>
334 const PengRobinsonGas<Specie>& pg
337 return PengRobinsonGas<Specie>
339 s*
static_cast<const Specie&
>(pg),
349 template<
class Specie>
352 const PengRobinsonGas<Specie>& pg1,
353 const PengRobinsonGas<Specie>& pg2
const scalar RR
Universal gas constant (default in [J/(kmol K)])
scalar s(const scalar p, const scalar T) const
Return entropy [J/(kmol K)].
scalar psi(scalar p, scalar T) const
Return compressibility rho/p [s^2/m^2].
scalar Vc_
Critical volume [m^3/kmol].
A class for handling words, derived from string.
const dimensionedScalar Pstd
Standard pressure.
scalar cpMcv(scalar p, scalar T) const
Return (cp - cv) [J/(kmol K].
scalar Z(scalar p, scalar T) const
Return compression factor [-].
void operator*=(const scalar)
const dimensionedScalar alpha
Fine-structure constant: default SI units: [].
static autoPtr< PengRobinsonGas > New(Istream &is)
scalar rho(scalar p, scalar T) const
Return density [kg/m^3].
scalar Tc_
Critical Temperature [K].
dimensioned< scalar > mag(const dimensioned< Type > &)
autoPtr< PengRobinsonGas > clone() const
Construct and return a clone.
simpleMatrix< scalar > A(Nc)
This function object calculates and outputs the second invariant of the velocity gradient tensor [1/s...
scalar omega_
Acentric factor [-].
#define R(A, B, C, D, E, F, K, M)
const dimensionedScalar b
Wien displacement law constant: default SI units: [m.K].
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
dimensionedScalar pow3(const dimensionedScalar &ds)
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
PengRobinsonGas gas equation of state.
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
PengRobinsonGas(const Specie &sp, const scalar &Tc, const scalar &Vc, const scalar &Zc, const scalar &Pc, const scalar &omega)
Construct from components.
A list of keyword definitions, which are a keyword followed by any number of values (e....
dimensionedScalar log(const dimensionedScalar &ds)
scalar Zc_
Critical compression factor [-].
gmvFile<< "tracers "<< particles.size()<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().x()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().y()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().z()<< " ";}gmvFile<< nl;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
dimensioned< Type > max(const dimensioned< Type > &, const dimensioned< Type > &)
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
const dimensionedScalar a0
Bohr radius: default SI units: [m].
dimensionedSymmTensor sqr(const dimensionedVector &dv)
dimensionedScalar sqrt(const dimensionedScalar &ds)
dimensionedScalar acos(const dimensionedScalar &ds)
word name(const complex &)
Return a string representation of a complex.
dimensionedScalar cos(const dimensionedScalar &ds)