mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Thermodynamics: template the equations of state on Specie
This will allow alternative methods of storing mixture information for e.g. complex transport modelling
This commit is contained in:
@ -48,7 +48,7 @@ typedef Cthermo \
|
||||
< \
|
||||
Thermo \
|
||||
< \
|
||||
EqnOfState \
|
||||
EqnOfState<specie> \
|
||||
>, \
|
||||
Type \
|
||||
> \
|
||||
@ -97,7 +97,7 @@ typedef polynomialTransport \
|
||||
< \
|
||||
hPolynomialThermo \
|
||||
< \
|
||||
icoPolynomial<Order>, \
|
||||
icoPolynomial<specie, Order>, \
|
||||
Order \
|
||||
>, \
|
||||
Type \
|
||||
|
||||
@ -31,6 +31,7 @@ Description
|
||||
#include "basicMixture.H"
|
||||
#include "makeBasicMixture.H"
|
||||
|
||||
#include "specie.H"
|
||||
#include "perfectGas.H"
|
||||
#include "rhoConst.H"
|
||||
#include "incompressiblePerfectGas.H"
|
||||
|
||||
@ -39,7 +39,7 @@ Description
|
||||
#define makeBasicMixture(Mixture,Transport,Type,Thermo,EqnOfState) \
|
||||
\
|
||||
typedef \
|
||||
Mixture<Transport<species::thermo<Thermo<EqnOfState>, Type> > > \
|
||||
Mixture<Transport<species::thermo<Thermo<EqnOfState<specie> >, Type> > > \
|
||||
Mixture##Transport##Type##Thermo##EqnOfState; \
|
||||
\
|
||||
defineTemplateTypeNameAndDebugWithName \
|
||||
@ -55,7 +55,7 @@ typedef polynomialTransport \
|
||||
< \
|
||||
hPolynomialThermo \
|
||||
< \
|
||||
icoPolynomial<Order>, \
|
||||
icoPolynomial<specie, Order>, \
|
||||
Order \
|
||||
>, \
|
||||
Type \
|
||||
|
||||
@ -26,8 +26,8 @@ License
|
||||
#include "psiThermo.H"
|
||||
#include "makeThermo.H"
|
||||
|
||||
#include "specie.H"
|
||||
#include "perfectGas.H"
|
||||
|
||||
#include "hConstThermo.H"
|
||||
#include "eConstThermo.H"
|
||||
#include "janafThermo.H"
|
||||
|
||||
@ -619,7 +619,7 @@ bool finishReaction = false;
|
||||
currentSpecieName,
|
||||
new gasThermoPhysics
|
||||
(
|
||||
janafThermo<perfectGas>
|
||||
janafThermo<perfectGas<specie> >
|
||||
(
|
||||
specie
|
||||
(
|
||||
|
||||
@ -45,7 +45,7 @@ typedef MixtureThermo \
|
||||
< \
|
||||
Thermo \
|
||||
< \
|
||||
EqnOfState \
|
||||
EqnOfState<specie> \
|
||||
>, \
|
||||
Type \
|
||||
> \
|
||||
|
||||
@ -32,17 +32,14 @@ Description
|
||||
#ifndef solidThermoPhysicsTypes_H
|
||||
#define solidThermoPhysicsTypes_H
|
||||
|
||||
#include "specie.H"
|
||||
#include "rhoConst.H"
|
||||
|
||||
#include "hConstThermo.H"
|
||||
#include "hExponentialThermo.H"
|
||||
|
||||
#include "constIsoSolidTransport.H"
|
||||
#include "constAnIsoSolidTransport.H"
|
||||
#include "exponentialSolidTransport.H"
|
||||
|
||||
#include "constSolidRad.H"
|
||||
|
||||
#include "sensibleEnthalpy.H"
|
||||
#include "thermo.H"
|
||||
|
||||
@ -59,7 +56,7 @@ namespace Foam
|
||||
<
|
||||
hConstThermo
|
||||
<
|
||||
rhoConst
|
||||
rhoConst<specie>
|
||||
>,
|
||||
sensibleEnthalpy
|
||||
>
|
||||
@ -76,7 +73,7 @@ namespace Foam
|
||||
<
|
||||
hExponentialThermo
|
||||
<
|
||||
rhoConst
|
||||
rhoConst<specie>
|
||||
>,
|
||||
sensibleEnthalpy
|
||||
>
|
||||
|
||||
@ -39,7 +39,7 @@ Description
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
#define makeSolidThermo(BaseThermo,Cthermo,Mixture,Transport,Radiation,Type,Thermo,Rho)\
|
||||
#define makeSolidThermo(BaseThermo,Cthermo,Mixture,Transport,Radiation,Type,Thermo,EqnOfState)\
|
||||
\
|
||||
typedef Cthermo \
|
||||
< \
|
||||
@ -53,7 +53,7 @@ typedef Cthermo \
|
||||
< \
|
||||
Thermo \
|
||||
< \
|
||||
Rho \
|
||||
EqnOfState<specie> \
|
||||
>, \
|
||||
Type \
|
||||
> \
|
||||
@ -61,11 +61,11 @@ typedef Cthermo \
|
||||
> \
|
||||
>, \
|
||||
BaseThermo \
|
||||
> Cthermo##Mixture##Transport##Radiation##Type##Thermo##Rho##BaseThermo; \
|
||||
>Cthermo##Mixture##Transport##Radiation##Type##Thermo##EqnOfState##BaseThermo;\
|
||||
\
|
||||
defineTemplateTypeNameAndDebugWithName \
|
||||
( \
|
||||
Cthermo##Mixture##Transport##Radiation##Type##Thermo##Rho##BaseThermo, \
|
||||
Cthermo##Mixture##Transport##Radiation##Type##Thermo##EqnOfState##BaseThermo, \
|
||||
#Cthermo \
|
||||
"<" \
|
||||
#Mixture \
|
||||
@ -76,7 +76,7 @@ defineTemplateTypeNameAndDebugWithName \
|
||||
"<" \
|
||||
#Thermo \
|
||||
"<" \
|
||||
#Rho \
|
||||
#EqnOfState \
|
||||
">," \
|
||||
#Type \
|
||||
">>>>", \
|
||||
@ -94,19 +94,19 @@ typedef Mixture \
|
||||
< \
|
||||
Thermo \
|
||||
< \
|
||||
Rho \
|
||||
EqnOfState<specie> \
|
||||
>, \
|
||||
Type \
|
||||
> \
|
||||
> \
|
||||
> \
|
||||
> Mixture##Transport##Radiation##Type##Thermo##Rho; \
|
||||
> Mixture##Transport##Radiation##Type##Thermo##EqnOfState; \
|
||||
\
|
||||
\
|
||||
\
|
||||
defineTemplateTypeNameAndDebugWithName \
|
||||
( \
|
||||
Mixture##Transport##Radiation##Type##Thermo##Rho, \
|
||||
Mixture##Transport##Radiation##Type##Thermo##EqnOfState, \
|
||||
#Mixture \
|
||||
"<" \
|
||||
#Transport \
|
||||
@ -115,7 +115,7 @@ defineTemplateTypeNameAndDebugWithName \
|
||||
"<" \
|
||||
#Thermo \
|
||||
"<" \
|
||||
#Rho \
|
||||
#EqnOfState \
|
||||
">," \
|
||||
#Type \
|
||||
">>>", \
|
||||
@ -125,20 +125,20 @@ defineTemplateTypeNameAndDebugWithName \
|
||||
addToRunTimeSelectionTable \
|
||||
( \
|
||||
BaseThermo, \
|
||||
Cthermo##Mixture##Transport##Radiation##Type##Thermo##Rho##BaseThermo, \
|
||||
Cthermo##Mixture##Transport##Radiation##Type##Thermo##EqnOfState##BaseThermo, \
|
||||
mesh \
|
||||
); \
|
||||
addToRunTimeSelectionTable \
|
||||
( \
|
||||
basicThermo, \
|
||||
Cthermo##Mixture##Transport##Radiation##Type##Thermo##Rho##BaseThermo, \
|
||||
Cthermo##Mixture##Transport##Radiation##Type##Thermo##EqnOfState##BaseThermo, \
|
||||
fvMesh \
|
||||
); \
|
||||
\
|
||||
addToRunTimeSelectionTable \
|
||||
( \
|
||||
BaseThermo, \
|
||||
Cthermo##Mixture##Transport##Radiation##Type##Thermo##Rho##BaseThermo, \
|
||||
Cthermo##Mixture##Transport##Radiation##Type##Thermo##EqnOfState##BaseThermo, \
|
||||
dictionary \
|
||||
);
|
||||
|
||||
|
||||
@ -5,9 +5,6 @@ reactions = reaction/reactions
|
||||
|
||||
$(atomicWeights)/atomicWeights.C
|
||||
$(specie)/specie.C
|
||||
$(equationOfState)/perfectGas/perfectGas.C
|
||||
$(equationOfState)/rhoConst/rhoConst.C
|
||||
$(equationOfState)/incompressiblePerfectGas/incompressiblePerfectGas.C
|
||||
$(reactions)/makeReactionThermoReactions.C
|
||||
$(reactions)/makeLangmuirHinshelwoodReactions.C
|
||||
|
||||
|
||||
@ -33,20 +33,20 @@ namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
template<int PolySize>
|
||||
icoPolynomial<PolySize>::icoPolynomial(Istream& is)
|
||||
template<class Specie, int PolySize>
|
||||
icoPolynomial<Specie, PolySize>::icoPolynomial(Istream& is)
|
||||
:
|
||||
specie(is),
|
||||
Specie(is),
|
||||
rhoCoeffs_("rhoCoeffs<" + Foam::name(PolySize) + '>', is)
|
||||
{
|
||||
rhoCoeffs_ *= this->W();
|
||||
}
|
||||
|
||||
|
||||
template<int PolySize>
|
||||
icoPolynomial<PolySize>::icoPolynomial(const dictionary& dict)
|
||||
template<class Specie, int PolySize>
|
||||
icoPolynomial<Specie, PolySize>::icoPolynomial(const dictionary& dict)
|
||||
:
|
||||
specie(dict),
|
||||
Specie(dict),
|
||||
rhoCoeffs_
|
||||
(
|
||||
dict.subDict("equationOfState").lookup
|
||||
@ -61,10 +61,10 @@ icoPolynomial<PolySize>::icoPolynomial(const dictionary& dict)
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
template<int PolySize>
|
||||
void icoPolynomial<PolySize>::write(Ostream& os) const
|
||||
template<class Specie, int PolySize>
|
||||
void icoPolynomial<Specie, PolySize>::write(Ostream& os) const
|
||||
{
|
||||
specie::write(os);
|
||||
Specie::write(os);
|
||||
|
||||
dictionary dict("equationOfState");
|
||||
dict.add
|
||||
@ -79,16 +79,17 @@ void icoPolynomial<PolySize>::write(Ostream& os) const
|
||||
|
||||
// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * //
|
||||
|
||||
template<int PolySize>
|
||||
Ostream& operator<<(Ostream& os, const icoPolynomial<PolySize>& ip)
|
||||
template<class Specie, int PolySize>
|
||||
Ostream& operator<<(Ostream& os, const icoPolynomial<Specie, PolySize>& ip)
|
||||
{
|
||||
os << static_cast<const specie&>(ip) << tab
|
||||
os << static_cast<const Specie&>(ip) << tab
|
||||
<< "rhoCoeffs<" << Foam::name(PolySize) << '>' << tab
|
||||
<< ip.rhoCoeffs_/ip.W();
|
||||
|
||||
os.check
|
||||
(
|
||||
"Ostream& operator<<(Ostream& os, const icoPolynomial<PolySize>& ip)"
|
||||
"Ostream& operator<<"
|
||||
"(Ostream& os, const icoPolynomial<Specie, PolySize>& ip)"
|
||||
);
|
||||
|
||||
return os;
|
||||
|
||||
@ -37,7 +37,6 @@ SourceFiles
|
||||
#ifndef icoPolynomial_H
|
||||
#define icoPolynomial_H
|
||||
|
||||
#include "specie.H"
|
||||
#include "autoPtr.H"
|
||||
#include "Polynomial.H"
|
||||
|
||||
@ -48,42 +47,42 @@ namespace Foam
|
||||
|
||||
// Forward declaration of friend functions and operators
|
||||
|
||||
template<int PolySize>
|
||||
template<class Specie, int PolySize>
|
||||
class icoPolynomial;
|
||||
|
||||
template<int PolySize>
|
||||
icoPolynomial<PolySize> operator+
|
||||
template<class Specie, int PolySize>
|
||||
icoPolynomial<Specie, PolySize> operator+
|
||||
(
|
||||
const icoPolynomial<PolySize>&,
|
||||
const icoPolynomial<PolySize>&
|
||||
const icoPolynomial<Specie, PolySize>&,
|
||||
const icoPolynomial<Specie, PolySize>&
|
||||
);
|
||||
|
||||
template<int PolySize>
|
||||
icoPolynomial<PolySize> operator-
|
||||
template<class Specie, int PolySize>
|
||||
icoPolynomial<Specie, PolySize> operator-
|
||||
(
|
||||
const icoPolynomial<PolySize>&,
|
||||
const icoPolynomial<PolySize>&
|
||||
const icoPolynomial<Specie, PolySize>&,
|
||||
const icoPolynomial<Specie, PolySize>&
|
||||
);
|
||||
|
||||
template<int PolySize>
|
||||
icoPolynomial<PolySize> operator*
|
||||
template<class Specie, int PolySize>
|
||||
icoPolynomial<Specie, PolySize> operator*
|
||||
(
|
||||
const scalar,
|
||||
const icoPolynomial<PolySize>&
|
||||
const icoPolynomial<Specie, PolySize>&
|
||||
);
|
||||
|
||||
template<int PolySize>
|
||||
icoPolynomial<PolySize> operator==
|
||||
template<class Specie, int PolySize>
|
||||
icoPolynomial<Specie, PolySize> operator==
|
||||
(
|
||||
const icoPolynomial<PolySize>&,
|
||||
const icoPolynomial<PolySize>&
|
||||
const icoPolynomial<Specie, PolySize>&,
|
||||
const icoPolynomial<Specie, PolySize>&
|
||||
);
|
||||
|
||||
template<int PolySize>
|
||||
template<class Specie, int PolySize>
|
||||
Ostream& operator<<
|
||||
(
|
||||
Ostream&,
|
||||
const icoPolynomial<PolySize>&
|
||||
const icoPolynomial<Specie, PolySize>&
|
||||
);
|
||||
|
||||
|
||||
@ -91,10 +90,10 @@ Ostream& operator<<
|
||||
Class icoPolynomial Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
template<int PolySize>
|
||||
template<class Specie, int PolySize>
|
||||
class icoPolynomial
|
||||
:
|
||||
public specie
|
||||
public Specie
|
||||
{
|
||||
// Private data
|
||||
|
||||
@ -110,7 +109,7 @@ public:
|
||||
//- Construct from components
|
||||
inline icoPolynomial
|
||||
(
|
||||
const specie& sp,
|
||||
const Specie& sp,
|
||||
const Polynomial<PolySize>& rhoPoly
|
||||
);
|
||||
|
||||
@ -176,25 +175,25 @@ public:
|
||||
|
||||
// Friend operators
|
||||
|
||||
friend icoPolynomial operator+ <PolySize>
|
||||
friend icoPolynomial operator+ <Specie, PolySize>
|
||||
(
|
||||
const icoPolynomial&,
|
||||
const icoPolynomial&
|
||||
);
|
||||
|
||||
friend icoPolynomial operator- <PolySize>
|
||||
friend icoPolynomial operator- <Specie, PolySize>
|
||||
(
|
||||
const icoPolynomial&,
|
||||
const icoPolynomial&
|
||||
);
|
||||
|
||||
friend icoPolynomial operator* <PolySize>
|
||||
friend icoPolynomial operator* <Specie, PolySize>
|
||||
(
|
||||
const scalar s,
|
||||
const icoPolynomial&
|
||||
);
|
||||
|
||||
friend icoPolynomial operator== <PolySize>
|
||||
friend icoPolynomial operator== <Specie, PolySize>
|
||||
(
|
||||
const icoPolynomial&,
|
||||
const icoPolynomial&
|
||||
@ -203,7 +202,11 @@ public:
|
||||
|
||||
// Ostream Operator
|
||||
|
||||
friend Ostream& operator<< <PolySize>(Ostream&, const icoPolynomial&);
|
||||
friend Ostream& operator<< <Specie, PolySize>
|
||||
(
|
||||
Ostream&,
|
||||
const icoPolynomial&
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@ -217,7 +220,7 @@ public:
|
||||
\
|
||||
defineTemplateTypeNameAndDebugWithName \
|
||||
( \
|
||||
icoPolynomial<PolySize>, \
|
||||
icoPolynomial<Specie, PolySize>, \
|
||||
"icoPolynomial<"#PolySize">", \
|
||||
0 \
|
||||
);
|
||||
|
||||
@ -27,98 +27,113 @@ License
|
||||
|
||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||
|
||||
template<int PolySize>
|
||||
inline Foam::icoPolynomial<PolySize>::icoPolynomial
|
||||
template<class Specie, int PolySize>
|
||||
inline Foam::icoPolynomial<Specie, PolySize>::icoPolynomial
|
||||
(
|
||||
const specie& sp,
|
||||
const Specie& sp,
|
||||
const Polynomial<PolySize>& rhoCoeffs
|
||||
)
|
||||
:
|
||||
specie(sp),
|
||||
Specie(sp),
|
||||
rhoCoeffs_(rhoCoeffs)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
template<int PolySize>
|
||||
inline Foam::icoPolynomial<PolySize>::icoPolynomial
|
||||
template<class Specie, int PolySize>
|
||||
inline Foam::icoPolynomial<Specie, PolySize>::icoPolynomial
|
||||
(
|
||||
const icoPolynomial<PolySize>& ip
|
||||
const icoPolynomial<Specie, PolySize>& ip
|
||||
)
|
||||
:
|
||||
specie(ip),
|
||||
Specie(ip),
|
||||
rhoCoeffs_(ip.rhoCoeffs_)
|
||||
{}
|
||||
|
||||
|
||||
template<int PolySize>
|
||||
inline Foam::icoPolynomial<PolySize>::icoPolynomial
|
||||
template<class Specie, int PolySize>
|
||||
inline Foam::icoPolynomial<Specie, PolySize>::icoPolynomial
|
||||
(
|
||||
const word& name,
|
||||
const icoPolynomial<PolySize>& ip
|
||||
const icoPolynomial<Specie, PolySize>& ip
|
||||
)
|
||||
:
|
||||
specie(name, ip),
|
||||
Specie(name, ip),
|
||||
rhoCoeffs_(ip.rhoCoeffs_)
|
||||
{}
|
||||
|
||||
|
||||
template<int PolySize>
|
||||
inline Foam::autoPtr<Foam::icoPolynomial<PolySize> >
|
||||
Foam::icoPolynomial<PolySize>::clone() const
|
||||
template<class Specie, int PolySize>
|
||||
inline Foam::autoPtr<Foam::icoPolynomial<Specie, PolySize> >
|
||||
Foam::icoPolynomial<Specie, PolySize>::clone() const
|
||||
{
|
||||
return autoPtr<icoPolynomial<PolySize> >
|
||||
return autoPtr<icoPolynomial<Specie, PolySize> >
|
||||
(
|
||||
new icoPolynomial<PolySize>(*this)
|
||||
new icoPolynomial<Specie, PolySize>(*this)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
template<int PolySize>
|
||||
inline Foam::autoPtr<Foam::icoPolynomial<PolySize> >
|
||||
Foam::icoPolynomial<PolySize>::New(Istream& is)
|
||||
template<class Specie, int PolySize>
|
||||
inline Foam::autoPtr<Foam::icoPolynomial<Specie, PolySize> >
|
||||
Foam::icoPolynomial<Specie, PolySize>::New(Istream& is)
|
||||
{
|
||||
return autoPtr<icoPolynomial<PolySize> >(new icoPolynomial<PolySize>(is));
|
||||
return autoPtr<icoPolynomial<Specie, PolySize> >
|
||||
(
|
||||
new icoPolynomial<Specie, PolySize>(is)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
template<int PolySize>
|
||||
inline Foam::autoPtr<Foam::icoPolynomial<PolySize> >
|
||||
Foam::icoPolynomial<PolySize>::New(const dictionary& dict)
|
||||
template<class Specie, int PolySize>
|
||||
inline Foam::autoPtr<Foam::icoPolynomial<Specie, PolySize> >
|
||||
Foam::icoPolynomial<Specie, PolySize>::New(const dictionary& dict)
|
||||
{
|
||||
return autoPtr<icoPolynomial<PolySize> >
|
||||
return autoPtr<icoPolynomial<Specie, PolySize> >
|
||||
(
|
||||
new icoPolynomial<PolySize>(dict)
|
||||
new icoPolynomial<Specie, PolySize>(dict)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
template<int PolySize>
|
||||
inline Foam::scalar Foam::icoPolynomial<PolySize>::rho(scalar, scalar T) const
|
||||
template<class Specie, int PolySize>
|
||||
inline Foam::scalar Foam::icoPolynomial<Specie, PolySize>::rho
|
||||
(
|
||||
scalar,
|
||||
scalar T
|
||||
) const
|
||||
{
|
||||
return rhoCoeffs_.value(T)/this->W();
|
||||
}
|
||||
|
||||
|
||||
template<int PolySize>
|
||||
inline Foam::scalar Foam::icoPolynomial<PolySize>::psi(scalar, scalar) const
|
||||
template<class Specie, int PolySize>
|
||||
inline Foam::scalar Foam::icoPolynomial<Specie, PolySize>::psi
|
||||
(
|
||||
scalar,
|
||||
scalar
|
||||
) const
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
|
||||
template<int PolySize>
|
||||
inline Foam::scalar Foam::icoPolynomial<PolySize>::Z(scalar, scalar) const
|
||||
template<class Specie, int PolySize>
|
||||
inline Foam::scalar Foam::icoPolynomial<Specie, PolySize>::Z
|
||||
(
|
||||
scalar,
|
||||
scalar
|
||||
) const
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
|
||||
template<int PolySize>
|
||||
inline Foam::scalar Foam::icoPolynomial<PolySize>::cpMcv
|
||||
template<class Specie, int PolySize>
|
||||
inline Foam::scalar Foam::icoPolynomial<Specie, PolySize>::cpMcv
|
||||
(
|
||||
scalar p,
|
||||
scalar T
|
||||
@ -130,13 +145,14 @@ inline Foam::scalar Foam::icoPolynomial<PolySize>::cpMcv
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
|
||||
|
||||
template<int PolySize>
|
||||
inline Foam::icoPolynomial<PolySize>& Foam::icoPolynomial<PolySize>::operator=
|
||||
template<class Specie, int PolySize>
|
||||
inline Foam::icoPolynomial<Specie, PolySize>&
|
||||
Foam::icoPolynomial<Specie, PolySize>::operator=
|
||||
(
|
||||
const icoPolynomial<PolySize>& ip
|
||||
const icoPolynomial<Specie, PolySize>& ip
|
||||
)
|
||||
{
|
||||
specie::operator=(ip);
|
||||
Specie::operator=(ip);
|
||||
|
||||
rhoCoeffs_ = ip.rhoCoeffs_;
|
||||
|
||||
@ -144,15 +160,15 @@ inline Foam::icoPolynomial<PolySize>& Foam::icoPolynomial<PolySize>::operator=
|
||||
}
|
||||
|
||||
|
||||
template<int PolySize>
|
||||
inline void Foam::icoPolynomial<PolySize>::operator+=
|
||||
template<class Specie, int PolySize>
|
||||
inline void Foam::icoPolynomial<Specie, PolySize>::operator+=
|
||||
(
|
||||
const icoPolynomial<PolySize>& ip
|
||||
const icoPolynomial<Specie, PolySize>& ip
|
||||
)
|
||||
{
|
||||
scalar molr1 = this->nMoles();
|
||||
|
||||
specie::operator+=(ip);
|
||||
Specie::operator+=(ip);
|
||||
|
||||
molr1 /= this->nMoles();
|
||||
scalar molr2 = ip.nMoles()/this->nMoles();
|
||||
@ -161,15 +177,15 @@ inline void Foam::icoPolynomial<PolySize>::operator+=
|
||||
}
|
||||
|
||||
|
||||
template<int PolySize>
|
||||
inline void Foam::icoPolynomial<PolySize>::operator-=
|
||||
template<class Specie, int PolySize>
|
||||
inline void Foam::icoPolynomial<Specie, PolySize>::operator-=
|
||||
(
|
||||
const icoPolynomial<PolySize>& ip
|
||||
const icoPolynomial<Specie, PolySize>& ip
|
||||
)
|
||||
{
|
||||
scalar molr1 = this->nMoles();
|
||||
|
||||
specie::operator-=(ip);
|
||||
Specie::operator-=(ip);
|
||||
|
||||
molr1 /= this->nMoles();
|
||||
scalar molr2 = ip.nMoles()/this->nMoles();
|
||||
@ -178,75 +194,75 @@ inline void Foam::icoPolynomial<PolySize>::operator-=
|
||||
}
|
||||
|
||||
|
||||
template<int PolySize>
|
||||
inline void Foam::icoPolynomial<PolySize>::operator*=(const scalar s)
|
||||
template<class Specie, int PolySize>
|
||||
inline void Foam::icoPolynomial<Specie, PolySize>::operator*=(const scalar s)
|
||||
{
|
||||
specie::operator*=(s);
|
||||
Specie::operator*=(s);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * //
|
||||
|
||||
template<int PolySize>
|
||||
Foam::icoPolynomial<PolySize> Foam::operator+
|
||||
template<class Specie, int PolySize>
|
||||
Foam::icoPolynomial<Specie, PolySize> Foam::operator+
|
||||
(
|
||||
const icoPolynomial<PolySize>& ip1,
|
||||
const icoPolynomial<PolySize>& ip2
|
||||
const icoPolynomial<Specie, PolySize>& ip1,
|
||||
const icoPolynomial<Specie, PolySize>& ip2
|
||||
)
|
||||
{
|
||||
scalar nMoles = ip1.nMoles() + ip2.nMoles();
|
||||
scalar molr1 = ip1.nMoles()/nMoles;
|
||||
scalar molr2 = ip2.nMoles()/nMoles;
|
||||
|
||||
return icoPolynomial<PolySize>
|
||||
return icoPolynomial<Specie, PolySize>
|
||||
(
|
||||
static_cast<const specie&>(ip1)
|
||||
+ static_cast<const specie&>(ip2),
|
||||
static_cast<const Specie&>(ip1)
|
||||
+ static_cast<const Specie&>(ip2),
|
||||
molr1*ip1.rhoCoeffs_ + molr2*ip2.rhoCoeffs_
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
template<int PolySize>
|
||||
Foam::icoPolynomial<PolySize> Foam::operator-
|
||||
template<class Specie, int PolySize>
|
||||
Foam::icoPolynomial<Specie, PolySize> Foam::operator-
|
||||
(
|
||||
const icoPolynomial<PolySize>& ip1,
|
||||
const icoPolynomial<PolySize>& ip2
|
||||
const icoPolynomial<Specie, PolySize>& ip1,
|
||||
const icoPolynomial<Specie, PolySize>& ip2
|
||||
)
|
||||
{
|
||||
scalar nMoles = ip1.nMoles() + ip2.nMoles();
|
||||
scalar molr1 = ip1.nMoles()/nMoles;
|
||||
scalar molr2 = ip2.nMoles()/nMoles;
|
||||
|
||||
return icoPolynomial<PolySize>
|
||||
return icoPolynomial<Specie, PolySize>
|
||||
(
|
||||
static_cast<const specie&>(ip1)
|
||||
- static_cast<const specie&>(ip2),
|
||||
static_cast<const Specie&>(ip1)
|
||||
- static_cast<const Specie&>(ip2),
|
||||
molr1*ip1.rhoCoeffs_ - molr2*ip2.rhoCoeffs_
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
template<int PolySize>
|
||||
Foam::icoPolynomial<PolySize> Foam::operator*
|
||||
template<class Specie, int PolySize>
|
||||
Foam::icoPolynomial<Specie, PolySize> Foam::operator*
|
||||
(
|
||||
const scalar s,
|
||||
const icoPolynomial<PolySize>& ip
|
||||
const icoPolynomial<Specie, PolySize>& ip
|
||||
)
|
||||
{
|
||||
return icoPolynomial<PolySize>
|
||||
return icoPolynomial<Specie, PolySize>
|
||||
(
|
||||
s*static_cast<const specie&>(ip),
|
||||
s*static_cast<const Specie&>(ip),
|
||||
ip.rhoCoeffs_
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
template<int PolySize>
|
||||
Foam::icoPolynomial<PolySize> Foam::operator==
|
||||
template<class Specie, int PolySize>
|
||||
Foam::icoPolynomial<Specie, PolySize> Foam::operator==
|
||||
(
|
||||
const icoPolynomial<PolySize>& ip1,
|
||||
const icoPolynomial<PolySize>& ip2
|
||||
const icoPolynomial<Specie, PolySize>& ip1,
|
||||
const icoPolynomial<Specie, PolySize>& ip2
|
||||
)
|
||||
{
|
||||
return ip2 - ip1;
|
||||
|
||||
@ -28,27 +28,37 @@ License
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::incompressiblePerfectGas::incompressiblePerfectGas(Istream& is)
|
||||
template<class Specie>
|
||||
Foam::incompressiblePerfectGas<Specie>::incompressiblePerfectGas(Istream& is)
|
||||
:
|
||||
specie(is),
|
||||
Specie(is),
|
||||
pRef_(readScalar(is))
|
||||
{
|
||||
is.check("incompressiblePerfectGas::incompressiblePerfectGas(Istream& is)");
|
||||
is.check
|
||||
(
|
||||
"incompressiblePerfectGas<Specie>::"
|
||||
"incompressiblePerfectGas(Istream& is)"
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Foam::incompressiblePerfectGas::incompressiblePerfectGas(const dictionary& dict)
|
||||
template<class Specie>
|
||||
Foam::incompressiblePerfectGas<Specie>::incompressiblePerfectGas
|
||||
(
|
||||
const dictionary& dict
|
||||
)
|
||||
:
|
||||
specie(dict),
|
||||
Specie(dict),
|
||||
pRef_(readScalar(dict.subDict("equationOfState").lookup("pRef")))
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
void Foam::incompressiblePerfectGas::write(Ostream& os) const
|
||||
template<class Specie>
|
||||
void Foam::incompressiblePerfectGas<Specie>::write(Ostream& os) const
|
||||
{
|
||||
specie::write(os);
|
||||
Specie::write(os);
|
||||
dictionary dict("equationOfState");
|
||||
dict.add("pRef", pRef_);
|
||||
|
||||
@ -58,14 +68,20 @@ void Foam::incompressiblePerfectGas::write(Ostream& os) const
|
||||
|
||||
// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * //
|
||||
|
||||
Foam::Ostream& Foam::operator<<(Ostream& os, const incompressiblePerfectGas& pg)
|
||||
template<class Specie>
|
||||
Foam::Ostream& Foam::operator<<
|
||||
(
|
||||
Ostream& os,
|
||||
const incompressiblePerfectGas<Specie>& pg
|
||||
)
|
||||
{
|
||||
os << static_cast<const specie&>(pg)
|
||||
os << static_cast<const Specie&>(pg)
|
||||
<< token::SPACE << pg.pRef_;
|
||||
|
||||
os.check
|
||||
(
|
||||
"Ostream& operator<<(Ostream& os, const incompressiblePerfectGas& st)"
|
||||
"Ostream& operator<<"
|
||||
"(Ostream& os, const incompressiblePerfectGas<Specie>& st)"
|
||||
);
|
||||
return os;
|
||||
}
|
||||
|
||||
@ -38,7 +38,6 @@ SourceFiles
|
||||
#ifndef incompressiblePerfectGas_H
|
||||
#define incompressiblePerfectGas_H
|
||||
|
||||
#include "specie.H"
|
||||
#include "autoPtr.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
@ -46,13 +45,54 @@ SourceFiles
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// Forward declaration of friend functions and operators
|
||||
|
||||
template<class Specie> class incompressiblePerfectGas;
|
||||
|
||||
template<class Specie>
|
||||
inline incompressiblePerfectGas<Specie> operator+
|
||||
(
|
||||
const incompressiblePerfectGas<Specie>&,
|
||||
const incompressiblePerfectGas<Specie>&
|
||||
);
|
||||
|
||||
template<class Specie>
|
||||
inline incompressiblePerfectGas<Specie> operator-
|
||||
(
|
||||
const incompressiblePerfectGas<Specie>&,
|
||||
const incompressiblePerfectGas<Specie>&
|
||||
);
|
||||
|
||||
template<class Specie>
|
||||
inline incompressiblePerfectGas<Specie> operator*
|
||||
(
|
||||
const scalar,
|
||||
const incompressiblePerfectGas<Specie>&
|
||||
);
|
||||
|
||||
template<class Specie>
|
||||
inline incompressiblePerfectGas<Specie> operator==
|
||||
(
|
||||
const incompressiblePerfectGas<Specie>&,
|
||||
const incompressiblePerfectGas<Specie>&
|
||||
);
|
||||
|
||||
template<class Specie>
|
||||
Ostream& operator<<
|
||||
(
|
||||
Ostream&,
|
||||
const incompressiblePerfectGas<Specie>&
|
||||
);
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class incompressiblePerfectGas Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
template<class Specie>
|
||||
class incompressiblePerfectGas
|
||||
:
|
||||
public specie
|
||||
public Specie
|
||||
{
|
||||
// Private data
|
||||
|
||||
@ -65,7 +105,7 @@ public:
|
||||
// Constructors
|
||||
|
||||
//- Construct from components
|
||||
inline incompressiblePerfectGas(const specie& sp);
|
||||
inline incompressiblePerfectGas(const Specie& sp);
|
||||
|
||||
//- Construct from Istream
|
||||
incompressiblePerfectGas(Istream&);
|
||||
@ -132,25 +172,25 @@ public:
|
||||
|
||||
// Friend operators
|
||||
|
||||
inline friend incompressiblePerfectGas operator+
|
||||
inline friend incompressiblePerfectGas operator+ <Specie>
|
||||
(
|
||||
const incompressiblePerfectGas&,
|
||||
const incompressiblePerfectGas&
|
||||
);
|
||||
|
||||
inline friend incompressiblePerfectGas operator-
|
||||
inline friend incompressiblePerfectGas operator- <Specie>
|
||||
(
|
||||
const incompressiblePerfectGas&,
|
||||
const incompressiblePerfectGas&
|
||||
);
|
||||
|
||||
inline friend incompressiblePerfectGas operator*
|
||||
inline friend incompressiblePerfectGas operator* <Specie>
|
||||
(
|
||||
const scalar s,
|
||||
const incompressiblePerfectGas&
|
||||
);
|
||||
|
||||
inline friend incompressiblePerfectGas operator==
|
||||
inline friend incompressiblePerfectGas operator== <Specie>
|
||||
(
|
||||
const incompressiblePerfectGas&,
|
||||
const incompressiblePerfectGas&
|
||||
@ -159,7 +199,11 @@ public:
|
||||
|
||||
// Ostream Operator
|
||||
|
||||
friend Ostream& operator<<(Ostream&, const incompressiblePerfectGas&);
|
||||
friend Ostream& operator<< <Specie>
|
||||
(
|
||||
Ostream&,
|
||||
const incompressiblePerfectGas&
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@ -171,6 +215,10 @@ public:
|
||||
|
||||
#include "incompressiblePerfectGasI.H"
|
||||
|
||||
#ifdef NoRepository
|
||||
# include "incompressiblePerfectGas.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
@ -27,85 +27,109 @@ License
|
||||
|
||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||
|
||||
inline Foam::incompressiblePerfectGas::incompressiblePerfectGas
|
||||
template<class Specie>
|
||||
inline Foam::incompressiblePerfectGas<Specie>::incompressiblePerfectGas
|
||||
(
|
||||
const specie& sp
|
||||
const Specie& sp
|
||||
)
|
||||
:
|
||||
specie(sp)
|
||||
Specie(sp)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
inline Foam::incompressiblePerfectGas::incompressiblePerfectGas
|
||||
template<class Specie>
|
||||
inline Foam::incompressiblePerfectGas<Specie>::incompressiblePerfectGas
|
||||
(
|
||||
const word& name,
|
||||
const incompressiblePerfectGas& pg
|
||||
const incompressiblePerfectGas<Specie>& pg
|
||||
)
|
||||
:
|
||||
specie(name, pg)
|
||||
Specie(name, pg)
|
||||
{}
|
||||
|
||||
|
||||
inline Foam::autoPtr<Foam::incompressiblePerfectGas>
|
||||
Foam::incompressiblePerfectGas::clone() const
|
||||
template<class Specie>
|
||||
inline Foam::autoPtr<Foam::incompressiblePerfectGas<Specie> >
|
||||
Foam::incompressiblePerfectGas<Specie>::clone() const
|
||||
{
|
||||
return autoPtr<incompressiblePerfectGas>
|
||||
return autoPtr<incompressiblePerfectGas<Specie> >
|
||||
(
|
||||
new incompressiblePerfectGas(*this)
|
||||
new incompressiblePerfectGas<Specie>(*this)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
inline Foam::autoPtr<Foam::incompressiblePerfectGas>
|
||||
Foam::incompressiblePerfectGas::New
|
||||
template<class Specie>
|
||||
inline Foam::autoPtr<Foam::incompressiblePerfectGas<Specie> >
|
||||
Foam::incompressiblePerfectGas<Specie>::New
|
||||
(
|
||||
Istream& is
|
||||
)
|
||||
{
|
||||
return autoPtr<incompressiblePerfectGas>(new incompressiblePerfectGas(is));
|
||||
return autoPtr<incompressiblePerfectGas<Specie> >
|
||||
(
|
||||
new incompressiblePerfectGas<Specie>(is)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
inline Foam::autoPtr<Foam::incompressiblePerfectGas>
|
||||
Foam::incompressiblePerfectGas::New
|
||||
template<class Specie>
|
||||
inline Foam::autoPtr<Foam::incompressiblePerfectGas<Specie> >
|
||||
Foam::incompressiblePerfectGas<Specie>::New
|
||||
(
|
||||
const dictionary& dict
|
||||
)
|
||||
{
|
||||
return autoPtr<incompressiblePerfectGas>
|
||||
return autoPtr<incompressiblePerfectGas<Specie> >
|
||||
(
|
||||
new incompressiblePerfectGas(dict)
|
||||
new incompressiblePerfectGas<Specie>(dict)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
inline Foam::scalar Foam::incompressiblePerfectGas::rho
|
||||
template<class Specie>
|
||||
inline Foam::scalar Foam::incompressiblePerfectGas<Specie>::rho
|
||||
(
|
||||
scalar p,
|
||||
scalar T
|
||||
) const
|
||||
{
|
||||
return pRef_/(R()*T);
|
||||
return pRef_/(this->R()*T);
|
||||
}
|
||||
|
||||
|
||||
inline Foam::scalar Foam::incompressiblePerfectGas::psi(scalar, scalar T) const
|
||||
template<class Specie>
|
||||
inline Foam::scalar Foam::incompressiblePerfectGas<Specie>::psi
|
||||
(
|
||||
scalar,
|
||||
scalar T
|
||||
) const
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
|
||||
inline Foam::scalar Foam::incompressiblePerfectGas::Z(scalar, scalar) const
|
||||
template<class Specie>
|
||||
inline Foam::scalar Foam::incompressiblePerfectGas<Specie>::Z
|
||||
(
|
||||
scalar,
|
||||
scalar
|
||||
) const
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
|
||||
inline Foam::scalar Foam::incompressiblePerfectGas::cpMcv(scalar, scalar) const
|
||||
template<class Specie>
|
||||
inline Foam::scalar Foam::incompressiblePerfectGas<Specie>::cpMcv
|
||||
(
|
||||
scalar,
|
||||
scalar
|
||||
) const
|
||||
{
|
||||
return this->RR;
|
||||
}
|
||||
@ -114,74 +138,81 @@ inline Foam::scalar Foam::incompressiblePerfectGas::cpMcv(scalar, scalar) const
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
|
||||
|
||||
inline void Foam::incompressiblePerfectGas::operator+=
|
||||
template<class Specie>
|
||||
inline void Foam::incompressiblePerfectGas<Specie>::operator+=
|
||||
(
|
||||
const incompressiblePerfectGas& pg
|
||||
const incompressiblePerfectGas<Specie>& pg
|
||||
)
|
||||
{
|
||||
specie::operator+=(pg);
|
||||
Specie::operator+=(pg);
|
||||
}
|
||||
|
||||
|
||||
inline void Foam::incompressiblePerfectGas::operator-=
|
||||
template<class Specie>
|
||||
inline void Foam::incompressiblePerfectGas<Specie>::operator-=
|
||||
(
|
||||
const incompressiblePerfectGas& pg
|
||||
const incompressiblePerfectGas<Specie>& pg
|
||||
)
|
||||
{
|
||||
specie::operator-=(pg);
|
||||
Specie::operator-=(pg);
|
||||
}
|
||||
|
||||
|
||||
inline void Foam::incompressiblePerfectGas::operator*=(const scalar s)
|
||||
template<class Specie>
|
||||
inline void Foam::incompressiblePerfectGas<Specie>::operator*=(const scalar s)
|
||||
{
|
||||
specie::operator*=(s);
|
||||
Specie::operator*=(s);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * //
|
||||
|
||||
inline Foam::incompressiblePerfectGas Foam::operator+
|
||||
template<class Specie>
|
||||
inline Foam::incompressiblePerfectGas<Specie> Foam::operator+
|
||||
(
|
||||
const incompressiblePerfectGas& pg1,
|
||||
const incompressiblePerfectGas& pg2
|
||||
const incompressiblePerfectGas<Specie>& pg1,
|
||||
const incompressiblePerfectGas<Specie>& pg2
|
||||
)
|
||||
{
|
||||
return incompressiblePerfectGas
|
||||
return incompressiblePerfectGas<Specie>
|
||||
(
|
||||
static_cast<const specie&>(pg1)
|
||||
+ static_cast<const specie&>(pg2)
|
||||
static_cast<const Specie&>(pg1)
|
||||
+ static_cast<const Specie&>(pg2)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
inline Foam::incompressiblePerfectGas Foam::operator-
|
||||
template<class Specie>
|
||||
inline Foam::incompressiblePerfectGas<Specie> Foam::operator-
|
||||
(
|
||||
const incompressiblePerfectGas& pg1,
|
||||
const incompressiblePerfectGas& pg2
|
||||
const incompressiblePerfectGas<Specie>& pg1,
|
||||
const incompressiblePerfectGas<Specie>& pg2
|
||||
)
|
||||
{
|
||||
return incompressiblePerfectGas
|
||||
return incompressiblePerfectGas<Specie>
|
||||
(
|
||||
static_cast<const specie&>(pg1)
|
||||
- static_cast<const specie&>(pg2)
|
||||
static_cast<const Specie&>(pg1)
|
||||
- static_cast<const Specie&>(pg2)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
inline Foam::incompressiblePerfectGas Foam::operator*
|
||||
template<class Specie>
|
||||
inline Foam::incompressiblePerfectGas<Specie> Foam::operator*
|
||||
(
|
||||
const scalar s,
|
||||
const incompressiblePerfectGas& pg
|
||||
const incompressiblePerfectGas<Specie>& pg
|
||||
)
|
||||
{
|
||||
return incompressiblePerfectGas(s*static_cast<const specie&>(pg));
|
||||
return incompressiblePerfectGas<Specie>(s*static_cast<const Specie&>(pg));
|
||||
}
|
||||
|
||||
|
||||
inline Foam::incompressiblePerfectGas Foam::operator==
|
||||
template<class Specie>
|
||||
inline Foam::incompressiblePerfectGas<Specie> Foam::operator==
|
||||
(
|
||||
const incompressiblePerfectGas& pg1,
|
||||
const incompressiblePerfectGas& pg2
|
||||
const incompressiblePerfectGas<Specie>& pg1,
|
||||
const incompressiblePerfectGas<Specie>& pg2
|
||||
)
|
||||
{
|
||||
return pg2 - pg1;
|
||||
|
||||
@ -28,35 +28,39 @@ License
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::perfectGas::perfectGas(Istream& is)
|
||||
template<class Specie>
|
||||
Foam::perfectGas<Specie>::perfectGas(Istream& is)
|
||||
:
|
||||
specie(is)
|
||||
Specie(is)
|
||||
{
|
||||
is.check("perfectGas::perfectGas(Istream& is)");
|
||||
is.check("perfectGas<Specie>::perfectGas(Istream& is)");
|
||||
}
|
||||
|
||||
|
||||
Foam::perfectGas::perfectGas(const dictionary& dict)
|
||||
template<class Specie>
|
||||
Foam::perfectGas<Specie>::perfectGas(const dictionary& dict)
|
||||
:
|
||||
specie(dict)
|
||||
Specie(dict)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
void Foam::perfectGas::write(Ostream& os) const
|
||||
template<class Specie>
|
||||
void Foam::perfectGas<Specie>::write(Ostream& os) const
|
||||
{
|
||||
specie::write(os);
|
||||
Specie::write(os);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * //
|
||||
|
||||
Foam::Ostream& Foam::operator<<(Ostream& os, const perfectGas& pg)
|
||||
template<class Specie>
|
||||
Foam::Ostream& Foam::operator<<(Ostream& os, const perfectGas<Specie>& pg)
|
||||
{
|
||||
os << static_cast<const specie&>(pg);
|
||||
os << static_cast<const Specie&>(pg);
|
||||
|
||||
os.check("Ostream& operator<<(Ostream& os, const perfectGas& st)");
|
||||
os.check("Ostream& operator<<(Ostream& os, const perfectGas<Specie>& st)");
|
||||
return os;
|
||||
}
|
||||
|
||||
|
||||
@ -36,7 +36,6 @@ SourceFiles
|
||||
#ifndef perfectGas_H
|
||||
#define perfectGas_H
|
||||
|
||||
#include "specie.H"
|
||||
#include "autoPtr.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
@ -44,13 +43,54 @@ SourceFiles
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// Forward declaration of friend functions and operators
|
||||
|
||||
template<class Specie> class perfectGas;
|
||||
|
||||
template<class Specie>
|
||||
inline perfectGas<Specie> operator+
|
||||
(
|
||||
const perfectGas<Specie>&,
|
||||
const perfectGas<Specie>&
|
||||
);
|
||||
|
||||
template<class Specie>
|
||||
inline perfectGas<Specie> operator-
|
||||
(
|
||||
const perfectGas<Specie>&,
|
||||
const perfectGas<Specie>&
|
||||
);
|
||||
|
||||
template<class Specie>
|
||||
inline perfectGas<Specie> operator*
|
||||
(
|
||||
const scalar,
|
||||
const perfectGas<Specie>&
|
||||
);
|
||||
|
||||
template<class Specie>
|
||||
inline perfectGas<Specie> operator==
|
||||
(
|
||||
const perfectGas<Specie>&,
|
||||
const perfectGas<Specie>&
|
||||
);
|
||||
|
||||
template<class Specie>
|
||||
Ostream& operator<<
|
||||
(
|
||||
Ostream&,
|
||||
const perfectGas<Specie>&
|
||||
);
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class perfectGas Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
template<class Specie>
|
||||
class perfectGas
|
||||
:
|
||||
public specie
|
||||
public Specie
|
||||
{
|
||||
|
||||
public:
|
||||
@ -58,7 +98,7 @@ public:
|
||||
// Constructors
|
||||
|
||||
//- Construct from components
|
||||
inline perfectGas(const specie& sp);
|
||||
inline perfectGas(const Specie& sp);
|
||||
|
||||
//- Construct from Istream
|
||||
perfectGas(Istream&);
|
||||
@ -118,25 +158,25 @@ public:
|
||||
|
||||
// Friend operators
|
||||
|
||||
inline friend perfectGas operator+
|
||||
inline friend perfectGas operator+ <Specie>
|
||||
(
|
||||
const perfectGas&,
|
||||
const perfectGas&
|
||||
);
|
||||
|
||||
inline friend perfectGas operator-
|
||||
inline friend perfectGas operator- <Specie>
|
||||
(
|
||||
const perfectGas&,
|
||||
const perfectGas&
|
||||
);
|
||||
|
||||
inline friend perfectGas operator*
|
||||
inline friend perfectGas operator* <Specie>
|
||||
(
|
||||
const scalar s,
|
||||
const perfectGas&
|
||||
);
|
||||
|
||||
inline friend perfectGas operator==
|
||||
inline friend perfectGas operator== <Specie>
|
||||
(
|
||||
const perfectGas&,
|
||||
const perfectGas&
|
||||
@ -145,7 +185,11 @@ public:
|
||||
|
||||
// Ostream Operator
|
||||
|
||||
friend Ostream& operator<<(Ostream&, const perfectGas&);
|
||||
friend Ostream& operator<< <Specie>
|
||||
(
|
||||
Ostream&,
|
||||
const perfectGas&
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@ -157,6 +201,10 @@ public:
|
||||
|
||||
#include "perfectGasI.H"
|
||||
|
||||
#ifdef NoRepository
|
||||
# include "perfectGas.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
@ -27,62 +27,77 @@ License
|
||||
|
||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||
|
||||
inline Foam::perfectGas::perfectGas(const specie& sp)
|
||||
template<class Specie>
|
||||
inline Foam::perfectGas<Specie>::perfectGas(const Specie& sp)
|
||||
:
|
||||
specie(sp)
|
||||
Specie(sp)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
inline Foam::perfectGas::perfectGas(const word& name, const perfectGas& pg)
|
||||
template<class Specie>
|
||||
inline Foam::perfectGas<Specie>::perfectGas
|
||||
(
|
||||
const word& name,
|
||||
const perfectGas<Specie>& pg
|
||||
)
|
||||
:
|
||||
specie(name, pg)
|
||||
Specie(name, pg)
|
||||
{}
|
||||
|
||||
|
||||
inline Foam::autoPtr<Foam::perfectGas> Foam::perfectGas::clone() const
|
||||
template<class Specie>
|
||||
inline Foam::autoPtr<Foam::perfectGas<Specie> >
|
||||
Foam::perfectGas<Specie>::clone() const
|
||||
{
|
||||
return autoPtr<perfectGas>(new perfectGas(*this));
|
||||
return autoPtr<perfectGas<Specie> >(new perfectGas<Specie>(*this));
|
||||
}
|
||||
|
||||
|
||||
inline Foam::autoPtr<Foam::perfectGas> Foam::perfectGas::New(Istream& is)
|
||||
template<class Specie>
|
||||
inline Foam::autoPtr<Foam::perfectGas<Specie> >
|
||||
Foam::perfectGas<Specie>::New(Istream& is)
|
||||
{
|
||||
return autoPtr<perfectGas>(new perfectGas(is));
|
||||
return autoPtr<perfectGas<Specie> >(new perfectGas<Specie>(is));
|
||||
}
|
||||
|
||||
|
||||
inline Foam::autoPtr<Foam::perfectGas> Foam::perfectGas::New
|
||||
template<class Specie>
|
||||
inline Foam::autoPtr<Foam::perfectGas<Specie> > Foam::perfectGas<Specie>::New
|
||||
(
|
||||
const dictionary& dict
|
||||
)
|
||||
{
|
||||
return autoPtr<perfectGas>(new perfectGas(dict));
|
||||
return autoPtr<perfectGas<Specie> >(new perfectGas<Specie>(dict));
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
inline Foam::scalar Foam::perfectGas::rho(scalar p, scalar T) const
|
||||
template<class Specie>
|
||||
inline Foam::scalar Foam::perfectGas<Specie>::rho(scalar p, scalar T) const
|
||||
{
|
||||
return p/(R()*T);
|
||||
return p/(this->R()*T);
|
||||
}
|
||||
|
||||
|
||||
inline Foam::scalar Foam::perfectGas::psi(scalar, scalar T) const
|
||||
template<class Specie>
|
||||
inline Foam::scalar Foam::perfectGas<Specie>::psi(scalar, scalar T) const
|
||||
{
|
||||
return 1.0/(R()*T);
|
||||
return 1.0/(this->R()*T);
|
||||
}
|
||||
|
||||
|
||||
inline Foam::scalar Foam::perfectGas::Z(scalar, scalar) const
|
||||
template<class Specie>
|
||||
inline Foam::scalar Foam::perfectGas<Specie>::Z(scalar, scalar) const
|
||||
{
|
||||
return 1.0;
|
||||
}
|
||||
|
||||
|
||||
inline Foam::scalar Foam::perfectGas::cpMcv(scalar, scalar) const
|
||||
template<class Specie>
|
||||
inline Foam::scalar Foam::perfectGas<Specie>::cpMcv(scalar, scalar) const
|
||||
{
|
||||
return this->RR;
|
||||
}
|
||||
@ -90,68 +105,75 @@ inline Foam::scalar Foam::perfectGas::cpMcv(scalar, scalar) const
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
|
||||
|
||||
inline void Foam::perfectGas::operator+=(const perfectGas& pg)
|
||||
template<class Specie>
|
||||
inline void Foam::perfectGas<Specie>::operator+=(const perfectGas<Specie>& pg)
|
||||
{
|
||||
specie::operator+=(pg);
|
||||
Specie::operator+=(pg);
|
||||
}
|
||||
|
||||
|
||||
inline void Foam::perfectGas::operator-=(const perfectGas& pg)
|
||||
template<class Specie>
|
||||
inline void Foam::perfectGas<Specie>::operator-=(const perfectGas<Specie>& pg)
|
||||
{
|
||||
specie::operator-=(pg);
|
||||
Specie::operator-=(pg);
|
||||
}
|
||||
|
||||
|
||||
inline void Foam::perfectGas::operator*=(const scalar s)
|
||||
template<class Specie>
|
||||
inline void Foam::perfectGas<Specie>::operator*=(const scalar s)
|
||||
{
|
||||
specie::operator*=(s);
|
||||
Specie::operator*=(s);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * //
|
||||
|
||||
inline Foam::perfectGas Foam::operator+
|
||||
template<class Specie>
|
||||
inline Foam::perfectGas<Specie> Foam::operator+
|
||||
(
|
||||
const perfectGas& pg1,
|
||||
const perfectGas& pg2
|
||||
const perfectGas<Specie>& pg1,
|
||||
const perfectGas<Specie>& pg2
|
||||
)
|
||||
{
|
||||
return perfectGas
|
||||
return perfectGas<Specie>
|
||||
(
|
||||
static_cast<const specie&>(pg1)
|
||||
+ static_cast<const specie&>(pg2)
|
||||
static_cast<const Specie&>(pg1)
|
||||
+ static_cast<const Specie&>(pg2)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
inline Foam::perfectGas Foam::operator-
|
||||
template<class Specie>
|
||||
inline Foam::perfectGas<Specie> Foam::operator-
|
||||
(
|
||||
const perfectGas& pg1,
|
||||
const perfectGas& pg2
|
||||
const perfectGas<Specie>& pg1,
|
||||
const perfectGas<Specie>& pg2
|
||||
)
|
||||
{
|
||||
return perfectGas
|
||||
return perfectGas<Specie>
|
||||
(
|
||||
static_cast<const specie&>(pg1)
|
||||
- static_cast<const specie&>(pg2)
|
||||
static_cast<const Specie&>(pg1)
|
||||
- static_cast<const Specie&>(pg2)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
inline Foam::perfectGas Foam::operator*
|
||||
template<class Specie>
|
||||
inline Foam::perfectGas<Specie> Foam::operator*
|
||||
(
|
||||
const scalar s,
|
||||
const perfectGas& pg
|
||||
const perfectGas<Specie>& pg
|
||||
)
|
||||
{
|
||||
return perfectGas(s*static_cast<const specie&>(pg));
|
||||
return perfectGas<Specie>(s*static_cast<const Specie&>(pg));
|
||||
}
|
||||
|
||||
|
||||
inline Foam::perfectGas Foam::operator==
|
||||
template<class Specie>
|
||||
inline Foam::perfectGas<Specie> Foam::operator==
|
||||
(
|
||||
const perfectGas& pg1,
|
||||
const perfectGas& pg2
|
||||
const perfectGas<Specie>& pg1,
|
||||
const perfectGas<Specie>& pg2
|
||||
)
|
||||
{
|
||||
return pg2 - pg1;
|
||||
|
||||
@ -28,27 +28,30 @@ License
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::rhoConst::rhoConst(Istream& is)
|
||||
template<class Specie>
|
||||
Foam::rhoConst<Specie>::rhoConst(Istream& is)
|
||||
:
|
||||
specie(is),
|
||||
Specie(is),
|
||||
rho_(readScalar(is))
|
||||
{
|
||||
is.check("rhoConst::rhoConst(Istream& is)");
|
||||
is.check("rhoConst<Specie>::rhoConst(Istream& is)");
|
||||
}
|
||||
|
||||
|
||||
Foam::rhoConst::rhoConst(const dictionary& dict)
|
||||
template<class Specie>
|
||||
Foam::rhoConst<Specie>::rhoConst(const dictionary& dict)
|
||||
:
|
||||
specie(dict),
|
||||
Specie(dict),
|
||||
rho_(readScalar(dict.subDict("equationOfState").lookup("rho")))
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
void Foam::rhoConst::write(Ostream& os) const
|
||||
template<class Specie>
|
||||
void Foam::rhoConst<Specie>::write(Ostream& os) const
|
||||
{
|
||||
specie::write(os);
|
||||
Specie::write(os);
|
||||
|
||||
dictionary dict("equationOfState");
|
||||
dict.add("rho", rho_);
|
||||
@ -59,12 +62,13 @@ void Foam::rhoConst::write(Ostream& os) const
|
||||
|
||||
// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * //
|
||||
|
||||
Foam::Ostream& Foam::operator<<(Ostream& os, const rhoConst& ico)
|
||||
template<class Specie>
|
||||
Foam::Ostream& Foam::operator<<(Ostream& os, const rhoConst<Specie>& ico)
|
||||
{
|
||||
os << static_cast<const specie&>(ico)
|
||||
os << static_cast<const Specie&>(ico)
|
||||
<< token::SPACE << ico.rho_;
|
||||
|
||||
os.check("Ostream& operator<<(Ostream& os, const rhoConst& ico)");
|
||||
os.check("Ostream& operator<<(Ostream& os, const rhoConst<Specie>& ico)");
|
||||
return os;
|
||||
}
|
||||
|
||||
|
||||
@ -36,7 +36,6 @@ SourceFiles
|
||||
#ifndef rhoConst_H
|
||||
#define rhoConst_H
|
||||
|
||||
#include "specie.H"
|
||||
#include "autoPtr.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
@ -44,13 +43,54 @@ SourceFiles
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// Forward declaration of friend functions and operators
|
||||
|
||||
template<class Specie> class rhoConst;
|
||||
|
||||
template<class Specie>
|
||||
inline rhoConst<Specie> operator+
|
||||
(
|
||||
const rhoConst<Specie>&,
|
||||
const rhoConst<Specie>&
|
||||
);
|
||||
|
||||
template<class Specie>
|
||||
inline rhoConst<Specie> operator-
|
||||
(
|
||||
const rhoConst<Specie>&,
|
||||
const rhoConst<Specie>&
|
||||
);
|
||||
|
||||
template<class Specie>
|
||||
inline rhoConst<Specie> operator*
|
||||
(
|
||||
const scalar,
|
||||
const rhoConst<Specie>&
|
||||
);
|
||||
|
||||
template<class Specie>
|
||||
inline rhoConst<Specie> operator==
|
||||
(
|
||||
const rhoConst<Specie>&,
|
||||
const rhoConst<Specie>&
|
||||
);
|
||||
|
||||
template<class Specie>
|
||||
Ostream& operator<<
|
||||
(
|
||||
Ostream&,
|
||||
const rhoConst<Specie>&
|
||||
);
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class rhoConst Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
template<class Specie>
|
||||
class rhoConst
|
||||
:
|
||||
public specie
|
||||
public Specie
|
||||
{
|
||||
// Private data
|
||||
|
||||
@ -63,7 +103,7 @@ public:
|
||||
// Constructors
|
||||
|
||||
//- Construct from components
|
||||
inline rhoConst(const specie& sp, const scalar rho);
|
||||
inline rhoConst(const Specie& sp, const scalar rho);
|
||||
|
||||
//- Construct from Istream
|
||||
rhoConst(Istream&);
|
||||
@ -120,25 +160,25 @@ public:
|
||||
|
||||
// Friend operators
|
||||
|
||||
inline friend rhoConst operator+
|
||||
inline friend rhoConst operator+ <Specie>
|
||||
(
|
||||
const rhoConst&,
|
||||
const rhoConst&
|
||||
);
|
||||
|
||||
inline friend rhoConst operator-
|
||||
inline friend rhoConst operator- <Specie>
|
||||
(
|
||||
const rhoConst&,
|
||||
const rhoConst&
|
||||
);
|
||||
|
||||
inline friend rhoConst operator*
|
||||
inline friend rhoConst operator* <Specie>
|
||||
(
|
||||
const scalar s,
|
||||
const rhoConst&
|
||||
);
|
||||
|
||||
inline friend rhoConst operator==
|
||||
inline friend rhoConst operator== <Specie>
|
||||
(
|
||||
const rhoConst&,
|
||||
const rhoConst&
|
||||
@ -147,7 +187,11 @@ public:
|
||||
|
||||
// Ostream Operator
|
||||
|
||||
friend Ostream& operator<<(Ostream&, const rhoConst&);
|
||||
friend Ostream& operator<< <Specie>
|
||||
(
|
||||
Ostream&,
|
||||
const rhoConst&
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@ -159,6 +203,10 @@ public:
|
||||
|
||||
#include "rhoConstI.H"
|
||||
|
||||
#ifdef NoRepository
|
||||
# include "rhoConst.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
@ -27,65 +27,73 @@ License
|
||||
|
||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||
|
||||
inline Foam::rhoConst::rhoConst
|
||||
template<class Specie>
|
||||
inline Foam::rhoConst<Specie>::rhoConst
|
||||
(
|
||||
const specie& sp,
|
||||
const Specie& sp,
|
||||
const scalar rho
|
||||
)
|
||||
:
|
||||
specie(sp),
|
||||
Specie(sp),
|
||||
rho_(rho)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
inline Foam::rhoConst::rhoConst
|
||||
template<class Specie>
|
||||
inline Foam::rhoConst<Specie>::rhoConst
|
||||
(
|
||||
const word& name,
|
||||
const rhoConst& ico
|
||||
const rhoConst<Specie>& ico
|
||||
)
|
||||
:
|
||||
specie(name, ico),
|
||||
Specie(name, ico),
|
||||
rho_(ico.rho_)
|
||||
{}
|
||||
|
||||
|
||||
inline Foam::autoPtr<Foam::rhoConst>
|
||||
Foam::rhoConst::clone() const
|
||||
template<class Specie>
|
||||
inline Foam::autoPtr<Foam::rhoConst<Specie> >
|
||||
Foam::rhoConst<Specie>::clone() const
|
||||
{
|
||||
return autoPtr<rhoConst>(new rhoConst(*this));
|
||||
return autoPtr<rhoConst<Specie> >(new rhoConst<Specie>(*this));
|
||||
}
|
||||
|
||||
|
||||
inline Foam::autoPtr<Foam::rhoConst>
|
||||
Foam::rhoConst::New(Istream& is)
|
||||
template<class Specie>
|
||||
inline Foam::autoPtr<Foam::rhoConst<Specie> >
|
||||
Foam::rhoConst<Specie>::New(Istream& is)
|
||||
{
|
||||
return autoPtr<rhoConst>(new rhoConst(is));
|
||||
return autoPtr<rhoConst<Specie> >(new rhoConst<Specie>(is));
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
inline Foam::scalar Foam::rhoConst::rho(scalar p, scalar T) const
|
||||
template<class Specie>
|
||||
inline Foam::scalar Foam::rhoConst<Specie>::rho(scalar p, scalar T) const
|
||||
{
|
||||
return rho_;
|
||||
}
|
||||
|
||||
|
||||
inline Foam::scalar Foam::rhoConst::psi(scalar, scalar T) const
|
||||
template<class Specie>
|
||||
inline Foam::scalar Foam::rhoConst<Specie>::psi(scalar, scalar T) const
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
|
||||
inline Foam::scalar Foam::rhoConst::Z(scalar, scalar) const
|
||||
template<class Specie>
|
||||
inline Foam::scalar Foam::rhoConst<Specie>::Z(scalar, scalar) const
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
|
||||
inline Foam::scalar Foam::rhoConst::cpMcv(scalar, scalar) const
|
||||
template<class Specie>
|
||||
inline Foam::scalar Foam::rhoConst<Specie>::cpMcv(scalar, scalar) const
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
@ -93,11 +101,12 @@ inline Foam::scalar Foam::rhoConst::cpMcv(scalar, scalar) const
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
|
||||
|
||||
inline void Foam::rhoConst::operator+=(const rhoConst& ico)
|
||||
template<class Specie>
|
||||
inline void Foam::rhoConst<Specie>::operator+=(const rhoConst<Specie>& ico)
|
||||
{
|
||||
scalar molr1 = this->nMoles();
|
||||
|
||||
specie::operator+=(ico);
|
||||
Specie::operator+=(ico);
|
||||
|
||||
molr1 /= this->nMoles();
|
||||
scalar molr2 = ico.nMoles()/this->nMoles();
|
||||
@ -106,11 +115,12 @@ inline void Foam::rhoConst::operator+=(const rhoConst& ico)
|
||||
}
|
||||
|
||||
|
||||
inline void Foam::rhoConst::operator-=(const rhoConst& ico)
|
||||
template<class Specie>
|
||||
inline void Foam::rhoConst<Specie>::operator-=(const rhoConst<Specie>& ico)
|
||||
{
|
||||
scalar molr1 = this->nMoles();
|
||||
|
||||
specie::operator-=(ico);
|
||||
Specie::operator-=(ico);
|
||||
|
||||
molr1 /= this->nMoles();
|
||||
scalar molr2 = ico.nMoles()/this->nMoles();
|
||||
@ -119,66 +129,71 @@ inline void Foam::rhoConst::operator-=(const rhoConst& ico)
|
||||
}
|
||||
|
||||
|
||||
inline void Foam::rhoConst::operator*=(const scalar s)
|
||||
template<class Specie>
|
||||
inline void Foam::rhoConst<Specie>::operator*=(const scalar s)
|
||||
{
|
||||
specie::operator*=(s);
|
||||
Specie::operator*=(s);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * //
|
||||
|
||||
inline Foam::rhoConst Foam::operator+
|
||||
template<class Specie>
|
||||
inline Foam::rhoConst<Specie> Foam::operator+
|
||||
(
|
||||
const rhoConst& ico1,
|
||||
const rhoConst& ico2
|
||||
const rhoConst<Specie>& ico1,
|
||||
const rhoConst<Specie>& ico2
|
||||
)
|
||||
{
|
||||
scalar nMoles = ico1.nMoles() + ico2.nMoles();
|
||||
scalar molr1 = ico1.nMoles()/nMoles;
|
||||
scalar molr2 = ico2.nMoles()/nMoles;
|
||||
|
||||
return rhoConst
|
||||
return rhoConst<Specie>
|
||||
(
|
||||
static_cast<const specie&>(ico1)
|
||||
+ static_cast<const specie&>(ico2),
|
||||
static_cast<const Specie&>(ico1)
|
||||
+ static_cast<const Specie&>(ico2),
|
||||
molr1*ico1.rho_ + molr2*ico2.rho_
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
inline Foam::rhoConst Foam::operator-
|
||||
template<class Specie>
|
||||
inline Foam::rhoConst<Specie> Foam::operator-
|
||||
(
|
||||
const rhoConst& ico1,
|
||||
const rhoConst& ico2
|
||||
const rhoConst<Specie>& ico1,
|
||||
const rhoConst<Specie>& ico2
|
||||
)
|
||||
{
|
||||
scalar nMoles = ico1.nMoles() + ico2.nMoles();
|
||||
scalar molr1 = ico1.nMoles()/nMoles;
|
||||
scalar molr2 = ico2.nMoles()/nMoles;
|
||||
|
||||
return rhoConst
|
||||
return rhoConst<Specie>
|
||||
(
|
||||
static_cast<const specie&>(ico1)
|
||||
- static_cast<const specie&>(ico2),
|
||||
static_cast<const Specie&>(ico1)
|
||||
- static_cast<const Specie&>(ico2),
|
||||
molr1*ico1.rho_ - molr2*ico2.rho_
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
inline Foam::rhoConst Foam::operator*
|
||||
template<class Specie>
|
||||
inline Foam::rhoConst<Specie> Foam::operator*
|
||||
(
|
||||
const scalar s,
|
||||
const rhoConst& ico
|
||||
const rhoConst<Specie>& ico
|
||||
)
|
||||
{
|
||||
return rhoConst(s*static_cast<const specie&>(ico), ico.rho_);
|
||||
return rhoConst<Specie>(s*static_cast<const Specie&>(ico), ico.rho_);
|
||||
}
|
||||
|
||||
|
||||
inline Foam::rhoConst Foam::operator==
|
||||
template<class Specie>
|
||||
inline Foam::rhoConst<Specie> Foam::operator==
|
||||
(
|
||||
const rhoConst& ico1,
|
||||
const rhoConst& ico2
|
||||
const rhoConst<Specie>& ico1,
|
||||
const rhoConst<Specie>& ico2
|
||||
)
|
||||
{
|
||||
return ico2 - ico1;
|
||||
|
||||
@ -32,6 +32,7 @@ Description
|
||||
#ifndef thermoPhysicsTypes_H
|
||||
#define thermoPhysicsTypes_H
|
||||
|
||||
#include "specie.H"
|
||||
#include "perfectGas.H"
|
||||
#include "incompressiblePerfectGas.H"
|
||||
#include "hConstThermo.H"
|
||||
@ -56,7 +57,7 @@ namespace Foam
|
||||
<
|
||||
hConstThermo
|
||||
<
|
||||
perfectGas
|
||||
perfectGas<specie>
|
||||
>,
|
||||
sensibleEnthalpy
|
||||
>
|
||||
@ -69,7 +70,7 @@ namespace Foam
|
||||
<
|
||||
janafThermo
|
||||
<
|
||||
perfectGas
|
||||
perfectGas<specie>
|
||||
>,
|
||||
sensibleEnthalpy
|
||||
>
|
||||
@ -82,7 +83,7 @@ namespace Foam
|
||||
<
|
||||
hConstThermo
|
||||
<
|
||||
incompressiblePerfectGas
|
||||
incompressiblePerfectGas<specie>
|
||||
>,
|
||||
sensibleEnthalpy
|
||||
>
|
||||
@ -95,7 +96,7 @@ namespace Foam
|
||||
<
|
||||
janafThermo
|
||||
<
|
||||
incompressiblePerfectGas
|
||||
incompressiblePerfectGas<specie>
|
||||
>,
|
||||
sensibleEnthalpy
|
||||
>
|
||||
@ -108,7 +109,7 @@ namespace Foam
|
||||
<
|
||||
hPolynomialThermo
|
||||
<
|
||||
icoPolynomial<8>,
|
||||
icoPolynomial<specie, 8>,
|
||||
8
|
||||
>,
|
||||
sensibleEnthalpy
|
||||
|
||||
Reference in New Issue
Block a user