30 template<
class Specie>
46 template<
class Specie>
59 template<
class Specie>
67 template<
class Specie>
80 template<
class Specie>
87 template<
class Specie>
90 return rho0_ + p/(this->
R()*
T);
94 template<
class Specie>
101 template<
class Specie>
110 template<
class Specie>
117 template<
class Specie>
124 template<
class Specie>
131 template<
class Specie>
134 return 1.0/(this->
R()*
T);
138 template<
class Specie>
145 template<
class Specie>
148 const scalar R = this->
R();
149 const scalar
rho = this->
rho(p, T);
151 return R*
sqr(p/(rho*R*T));
157 template<
class Specie>
158 inline void Foam::perfectFluid<Specie>::operator+=
163 scalar Y1 = this->
Y();
164 Specie::operator+=(pf);
166 if (
mag(this->
Y()) > small)
169 const scalar Y2 = pf.Y()/this->
Y();
171 R_ = 1.0/(Y1/R_ + Y2/pf.R_);
172 rho0_ = Y1*rho0_ + Y2*pf.rho0_;
177 template<
class Specie>
180 Specie::operator*=(s);
186 template<
class Specie>
195 static_cast<const Specie&>(pf1)
196 + static_cast<const Specie&>(pf2)
199 if (
mag(sp.Y()) < small)
210 const scalar Y1 = pf1.Y()/sp.Y();
211 const scalar Y2 = pf2.Y()/sp.Y();
216 1.0/(Y1/pf1.R_ + Y2/pf2.R_),
217 Y1*pf1.rho0_ + Y2*pf2.rho0_
223 template<
class Specie>
232 s*
static_cast<const Specie&
>(pf),
239 template<
class Specie>
248 static_cast<const Specie&>(pf1)
249 == static_cast<const Specie&>(pf2)
252 if (
mag(sp.Y()) < small)
263 const scalar Y1 = pf1.Y()/sp.Y();
264 const scalar Y2 = pf2.Y()/sp.Y();
265 const scalar oneByR = Y2/pf2.R_ - Y1/pf1.R_;
270 mag(oneByR) < small ? great : 1/oneByR,
271 Y2*pf2.rho0_ - Y1*pf1.rho0_
autoPtr< perfectFluid > clone() const
Construct and return a clone.
dimensionedScalar log(const dimensionedScalar &ds)
A list of keyword definitions, which are a keyword followed by any number of values (e...
dimensionedSymmTensor sqr(const dimensionedVector &dv)
perfectFluid(const Specie &sp, const scalar R, const scalar rho0)
Construct from components.
scalar rho(scalar p, scalar T) const
Return density [kg/m^3].
static autoPtr< perfectFluid > New(const dictionary &dict)
scalar CpMCv(scalar p, scalar T) const
Return (Cp - Cv) [J/(kg K].
scalar R() const
Return fluid constant [J/kg/K].
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))
A class for handling words, derived from string.
scalar E(const scalar p, const scalar T) const
Return internal energy departure [J/kg].
void operator*=(const scalar)
const dimensionedScalar Pstd
Standard pressure.
scalar Z(scalar p, scalar T) const
Return compression factor [].
scalar H(const scalar p, const scalar T) const
Return enthalpy departure [J/kg].
scalar S(const scalar p, const scalar T) const
Return entropy [J/kg/K].
Perfect gas equation of state.
scalar psi(scalar p, scalar T) const
Return compressibility rho/p [s^2/m^2].
#define R(A, B, C, D, E, F, K, M)
PtrList< volScalarField > & Y
dimensioned< scalar > mag(const dimensioned< Type > &)
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
scalar Cp(scalar p, scalar T) const
Return Cp departure [J/(kg K].
scalar Cv(scalar p, scalar T) const
Return Cv departure [J/(kg K].