95 return rho0_*
pow((
p + B_)/(p0_ + B_), 1.0/gamma_);
110template<
class Specie>
121template<
class Specie>
132template<
class Specie>
143template<
class Specie>
150 scalar
n = 1 - 1.0/gamma_;
152 -
pow(p0_ + B_, 1.0/gamma_)*(
pow((
p + B_),
n) -
pow((Pstd + B_),
n))
157template<
class Specie>
165 (rho0_/(gamma_*(p0_ + B_)))
166 *
pow((
p + B_)/(p0_ + B_), 1.0/gamma_ - 1.0);
170template<
class Specie>
177template<
class Specie>
190template<
class Specie>
196 scalar Y1 = this->
Y();
197 Specie::operator+=(pf);
199 if (
mag(this->
Y()) > SMALL)
202 const scalar Y2 = pf.Y()/this->
Y();
204 p0_ = Y1*p0_ + Y2*pf.p0_;
205 rho0_ = Y1*rho0_ + Y2*pf.rho0_;
206 gamma_ = Y1*gamma_ + Y2*pf.gamma_;
207 B_ = Y1*B_ + Y2*pf.B_;
212template<
class Specie>
215 Specie::operator*=(
s);
221template<
class Specie>
230 static_cast<const Specie&
>(pf1)
231 +
static_cast<const Specie&
>(pf2)
234 if (
mag(sp.Y()) < SMALL)
247 const scalar Y1 = pf1.Y()/sp.Y();
248 const scalar Y2 = pf2.Y()/sp.Y();
250 return adiabaticPerfectFluid<Specie>
253 Y1*pf1.p0_ + Y2*pf2.p0_,
254 Y1*pf1.rho0_ + Y2*pf2.rho0_,
255 Y1*pf1.gamma_ + Y2*pf2.gamma_,
256 Y1*pf1.B_ + Y2*pf2.B_
262template<
class Specie>
266 const adiabaticPerfectFluid<Specie>& pf
269 return adiabaticPerfectFluid<Specie>
271 s*
static_cast<const Specie&
>(pf),
280template<
class Specie>
283 const adiabaticPerfectFluid<Specie>& pf1,
284 const adiabaticPerfectFluid<Specie>& pf2
289 static_cast<const Specie&
>(pf1)
290 ==
static_cast<const Specie&
>(pf2)
293 const scalar Y1 = pf1.Y()/sp.Y();
294 const scalar Y2 = pf2.Y()/sp.Y();
296 return adiabaticPerfectFluid<Specie>
299 Y2*pf2.p0_ - Y1*pf1.p0_,
300 Y2*pf2.rho0_ - Y1*pf1.rho0_,
301 Y2*pf2.gamma_ - Y1*pf1.gamma_,
302 Y2*pf2.B_ - Y1*pf1.B_
static const Foam::dimensionedScalar B("", Foam::dimless, 18.678)
compactSpatialTensor S
The joint motion sub-space (3-DoF)
static autoPtr< Time > New()
Construct (dummy) Time - no functionObjects or libraries.
Adiabatic perfect fluid equation of state.
scalar CpMCv(scalar p, scalar T) const
Return (Cp - Cv) [J/(kg K].
autoPtr< adiabaticPerfectFluid > clone() const
Construct and return a clone.
void operator*=(const scalar)
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
tmp< GeometricField< Type, faPatchField, areaMesh > > H() const
Return the H operation source.
A class for handling words, derived from Foam::string.
PtrList< volScalarField > & Y
const volScalarField & psi
const volScalarField & Cv
const volScalarField & Cp
const volScalarField & p0
gmvFile<< "tracers "<< particles.size()<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().x()<< " ";}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().y()<< " ";}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.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))
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh > > &tdf1, const word &name, const dimensionSet &dimensions)
Global function forwards to reuseTmpDimensionedField::New.
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.