Commit 5a4e09c7 authored by henry's avatar henry
Browse files

Added += and -= operators.

parent 898742e6
......@@ -128,7 +128,7 @@ public:
// Member Functions
// fundamaental properties
// Fundamaental properties
//- Heat capacity at constant pressure [J/(kmol K)]
inline scalar cp(const scalar T) const;
......@@ -152,10 +152,8 @@ public:
// Member operators
inline eConstThermo& operator=
(
const eConstThermo&
);
inline void operator+=(const hConstThermo&);
inline void operator-=(const hConstThermo&);
// Friend operators
......
......@@ -24,15 +24,9 @@ License
\*---------------------------------------------------------------------------*/
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
// Construct from components
inline eConstThermo::eConstThermo
inline Foam::eConstThermo::eConstThermo
(
const specieThermo& st,
const scalar cv,
......@@ -47,8 +41,11 @@ inline eConstThermo::eConstThermo
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
//- Construct as named copy
inline eConstThermo::eConstThermo(const word& name, const eConstThermo& ct)
inline Foam::eConstThermo::eConstThermo
(
const word& name,
const eConstThermo& ct
)
:
specieThermo(name, ct),
CV(ct.CV),
......@@ -56,10 +53,9 @@ inline eConstThermo::eConstThermo(const word& name, const eConstThermo& ct)
{}
// Construct and return a clone
template<class equationOfState>
inline autoPtr<eConstThermo<equationOfState> > eConstThermo<equationOfState>::
clone() const
inline Foam::autoPtr<eConstThermo<equationOfState> >
Foam::eConstThermo<equationOfState>::clone() const
{
return autoPtr<eConstThermo<equationOfState> >
(
......@@ -68,10 +64,9 @@ clone() const
}
// Selector from Istream
template<class equationOfState>
inline autoPtr<eConstThermo<equationOfState> > eConstThermo<equationOfState>::
New(Istream& is)
inline autoPtr<eConstThermo<equationOfState> >
Foam::eConstThermo<equationOfState>::New(Istream& is)
{
return autoPtr<eConstThermo<equationOfState> >
(
......@@ -82,37 +77,40 @@ New(Istream& is)
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
//- Heat capacity at constant pressure [J/(kmol K)]
inline scalar eConstThermo::cp(const scalar) const
inline Foam::scalar Foam::eConstThermo::cp(const scalar) const
{
return CV*W() + RR;
}
//- Enthalpy [J/kmol]
inline scalar eConstThermo::h(const scalar T) const
inline Foam::scalar Foam::eConstThermo::h(const scalar T) const
{
return cp(T)*T + Hf*W();
}
//- Entropy [J/(kmol K)]
inline scalar eConstThermo::s(const scalar T) const
inline Foam::scalar Foam::eConstThermo::s(const scalar T) const
{
notImplemented("scalar eConstThermo::s(const scalar T) const");
return T;
}
//- Temperature from Enthalpy given an initial temperature T0
inline scalar eConstThermo::TH(const scalar h, const scalar T0) const
inline Foam::scalar Foam::eConstThermo::TH
(
const scalar h,
const scalar T0
) const
{
return (h - Hf)/Cp(T0);
}
//- Temperature from internal energy given an initial temperature T0
inline scalar eConstThermo::TE(const scalar e, const scalar) const
inline Foam::scalar Foam::eConstThermo::TE
(
const scalar e,
const scalar
) const
{
return (e - Hf)/CV;
}
......@@ -120,7 +118,7 @@ inline scalar eConstThermo::TE(const scalar e, const scalar) const
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
inline eConstThermo& eConstThermo::operator=
inline Foam::eConstThermo& Foam::eConstThermo::operator=
(
const eConstThermo& ct
)
......@@ -136,7 +134,7 @@ inline eConstThermo& eConstThermo::operator=
// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * //
inline eConstThermo operator+
inline Foam::eConstThermo Foam::operator+
(
const eConstThermo& ct1,
const eConstThermo& ct2
......@@ -153,7 +151,7 @@ inline eConstThermo operator+
}
inline eConstThermo operator-
inline Foam::eConstThermo Foam::operator-
(
const eConstThermo& ct1,
const eConstThermo& ct2
......@@ -170,7 +168,7 @@ inline eConstThermo operator-
}
inline eConstThermo operator*
inline Foam::eConstThermo Foam::operator*
(
const scalar s,
const eConstThermo& ct
......@@ -185,7 +183,7 @@ inline eConstThermo operator*
}
inline eConstThermo operator==
inline Foam::eConstThermo Foam::operator==
(
const eConstThermo& ct1,
const eConstThermo& ct2
......@@ -195,8 +193,4 @@ inline eConstThermo operator==
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// ************************************************************************* //
......@@ -108,6 +108,7 @@ class hConstThermo
const scalar hf
);
public:
// Constructors
......@@ -127,7 +128,7 @@ public:
// Member Functions
// fundamaental properties
// Fundamaental properties
//- Heat capacity at constant pressure [J/(kmol K)]
inline scalar cp(const scalar T) const;
......@@ -141,10 +142,8 @@ public:
// Member operators
inline hConstThermo& operator=
(
const hConstThermo&
);
inline void operator+=(const hConstThermo&);
inline void operator-=(const hConstThermo&);
// Friend operators
......
......@@ -24,16 +24,10 @@ License
\*---------------------------------------------------------------------------*/
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
// Construct from components
template<class equationOfState>
inline hConstThermo<equationOfState>::hConstThermo
inline Foam::hConstThermo<equationOfState>::hConstThermo
(
const equationOfState& st,
const scalar cp,
......@@ -48,9 +42,8 @@ inline hConstThermo<equationOfState>::hConstThermo
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
// Construct as named copy
template<class equationOfState>
inline hConstThermo<equationOfState>::hConstThermo
inline Foam::hConstThermo<equationOfState>::hConstThermo
(
const word& name,
const hConstThermo& ct
......@@ -62,10 +55,9 @@ inline hConstThermo<equationOfState>::hConstThermo
{}
// Construct and return a clone
template<class equationOfState>
inline autoPtr<hConstThermo<equationOfState> > hConstThermo<equationOfState>::
clone() const
inline Foam::autoPtr<Foam::hConstThermo<equationOfState> >
Foam::hConstThermo<equationOfState>::clone() const
{
return autoPtr<hConstThermo<equationOfState> >
(
......@@ -74,10 +66,9 @@ clone() const
}
// Selector from Istream
template<class equationOfState>
inline autoPtr<hConstThermo<equationOfState> > hConstThermo<equationOfState>::
New(Istream& is)
inline Foam::autoPtr<Foam::hConstThermo<equationOfState> >
Foam::hConstThermo<equationOfState>::New(Istream& is)
{
return autoPtr<hConstThermo<equationOfState> >
(
......@@ -88,68 +79,73 @@ New(Istream& is)
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
//- Heat capacity at constant pressure [J/(kmol K)]
template<class equationOfState>
inline scalar hConstThermo<equationOfState>::cp(const scalar) const
inline Foam::scalar Foam::hConstThermo<equationOfState>::cp(const scalar) const
{
return CP*this->W();
}
//- Enthalpy [J/kmol]
template<class equationOfState>
inline scalar hConstThermo<equationOfState>::h(const scalar T) const
inline Foam::scalar Foam::hConstThermo<equationOfState>::h(const scalar T) const
{
return (CP*T + Hf)*this->W();
}
//- Entropy [J/(kmol K)]
template<class equationOfState>
inline scalar hConstThermo<equationOfState>::s(const scalar T) const
inline Foam::scalar Foam::hConstThermo<equationOfState>::s(const scalar T) const
{
notImplemented("scalar hConstThermo<equationOfState>::s(const scalar T) const");
notImplemented
(
"scalar hConstThermo<equationOfState>::s(const scalar T) const"
);
return T;
}
/*
//- Temperature from Enthalpy given an initial temperature T0
template<class equationOfState>
inline scalar hConstThermo<equationOfState>::TH(const scalar h, const scalar T0) const
{
return (h - Hf)/Cp(T0);
}
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
//- Temperature from internal energy given an initial temperature T0
template<class equationOfState>
inline scalar hConstThermo<equationOfState>::TE(const scalar e, const scalar T0) const
inline void Foam::hConstThermo<equationOfState>::operator+=
(
const hConstThermo<equationOfState>& ct
)
{
return (e - Hf)/Cv(T0);
scalar molr1 = this->nMoles();
equationOfState::operator+=(ct);
molr1 /= this->nMoles();
scalar molr2 = ct.nMoles()/this->nMoles();
CP = molr1*CP + molr2*ct.CP;
Hf = molr1*Hf + molr2*ct.Hf;
}
*/
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
template<class equationOfState>
inline hConstThermo<equationOfState>& hConstThermo<equationOfState>::operator=
inline void Foam::hConstThermo<equationOfState>::operator-=
(
const hConstThermo& ct
const hConstThermo<equationOfState>& ct
)
{
equationOfState::operator=(ct);
scalar molr1 = this->nMoles();
equationOfState::operator-=(ct);
CP = ct.CP;
Hf = ct.Hf;
molr1 /= this->nMoles();
scalar molr2 = ct.nMoles()/this->nMoles();
return *this;
CP = molr1*CP - molr2*ct.CP;
Hf = molr1*Hf - molr2*ct.Hf;
}
// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * //
template<class equationOfState>
inline hConstThermo<equationOfState> operator+
inline Foam::hConstThermo<equationOfState> Foam::operator+
(
const hConstThermo<equationOfState>& ct1,
const hConstThermo<equationOfState>& ct2
......@@ -158,7 +154,7 @@ inline hConstThermo<equationOfState> operator+
equationOfState eofs
(
static_cast<const equationOfState&>(ct1)
+ static_cast<const equationOfState&>(ct2)
+ static_cast<const equationOfState&>(ct2)
);
return hConstThermo<equationOfState>
......@@ -171,7 +167,7 @@ inline hConstThermo<equationOfState> operator+
template<class equationOfState>
inline hConstThermo<equationOfState> operator-
inline Foam::hConstThermo<equationOfState> Foam::operator-
(
const hConstThermo<equationOfState>& ct1,
const hConstThermo<equationOfState>& ct2
......@@ -193,7 +189,7 @@ inline hConstThermo<equationOfState> operator-
template<class equationOfState>
inline hConstThermo<equationOfState> operator*
inline Foam::hConstThermo<equationOfState> Foam::operator*
(
const scalar s,
const hConstThermo<equationOfState>& ct
......@@ -209,7 +205,7 @@ inline hConstThermo<equationOfState> operator*
template<class equationOfState>
inline hConstThermo<equationOfState> operator==
inline Foam::hConstThermo<equationOfState> Foam::operator==
(
const hConstThermo<equationOfState>& ct1,
const hConstThermo<equationOfState>& ct2
......@@ -219,8 +215,4 @@ inline hConstThermo<equationOfState> operator==
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// ************************************************************************* //
......@@ -35,8 +35,8 @@ SourceFiles
\*---------------------------------------------------------------------------*/
#ifndef janafThermo2_H
#define janafThermo2_H
#ifndef janafThermo_H
#define janafThermo_H
#include "scalar.H"
......@@ -85,11 +85,6 @@ Ostream& operator<<
);
#ifdef __GNUC__
typedef scalar coeffArray2[7];
#endif
/*---------------------------------------------------------------------------*\
Class janafThermo Declaration
\*---------------------------------------------------------------------------*/
......@@ -122,13 +117,7 @@ private:
inline void checkT(const scalar T) const;
//- Return the coefficients corresponding to the given temperature
inline const
# ifdef __GNUC__
coeffArray2&
# else
coeffArray&
# endif
coeffs(const scalar T) const;
inline const coeffArray& coeffs(const scalar T) const;
public:
......@@ -170,8 +159,6 @@ public:
inline void operator+=(const janafThermo&);
inline void operator-=(const janafThermo&);
inline void operator*=(const scalar);
// Friend operators
......
......@@ -26,16 +26,10 @@ License
#include "janafThermo.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
// Construct from components
template<class equationOfState>
inline janafThermo<equationOfState>::janafThermo
inline Foam::janafThermo<equationOfState>::janafThermo
(
const equationOfState& st,
const scalar Tlow,
......@@ -58,9 +52,8 @@ inline janafThermo<equationOfState>::janafThermo
}
// Check given temperature is within the range of the fitted coeffs.
template<class equationOfState>
inline void janafThermo<equationOfState>::checkT(const scalar T) const
inline void Foam::janafThermo<equationOfState>::checkT(const scalar T) const
{
if (T < Tlow_ || T > Thigh_)
{
......@@ -75,15 +68,9 @@ inline void janafThermo<equationOfState>::checkT(const scalar T) const
}
// Return the coefficients corresponding to the given temperature
template<class equationOfState>
inline const
#ifdef __GNUC__
coeffArray2&
#else
typename janafThermo<equationOfState>::coeffArray&
#endif
janafThermo<equationOfState>::coeffs
inline const typename Foam::janafThermo<equationOfState>::coeffArray&
Foam::janafThermo<equationOfState>::coeffs
(
const scalar T
) const
......@@ -103,9 +90,8 @@ janafThermo<equationOfState>::coeffs
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
// Construct as a named copy
template<class equationOfState>
inline janafThermo<equationOfState>::janafThermo
inline Foam::janafThermo<equationOfState>::janafThermo
(
const word& name,
const janafThermo& jt
......@@ -126,9 +112,8 @@ inline janafThermo<equationOfState>::janafThermo
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
// Heat capacity at constant pressure [J/(kmol K)]
template<class equationOfState>
inline scalar janafThermo<equationOfState>::cp
inline Foam::scalar Foam::janafThermo<equationOfState>::cp
(
const scalar T
) const
......@@ -138,9 +123,8 @@ inline scalar janafThermo<equationOfState>::cp
}
// Enthalpy [J/kmol]
template<class equationOfState>
inline scalar janafThermo<equationOfState>::h
inline Foam::scalar Foam::janafThermo<equationOfState>::h
(
const scalar T
) const
......@@ -155,9 +139,8 @@ inline scalar janafThermo<equationOfState>::h
}
// Entropy [J/(kmol K)]
template<class equationOfState>
inline scalar janafThermo<equationOfState>::s
inline Foam::scalar Foam::janafThermo<equationOfState>::s
(
const scalar T
) const
......@@ -175,7 +158,7 @@ inline scalar janafThermo<equationOfState>::s
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
template<class equationOfState>
inline void janafThermo<equationOfState>::operator+=
inline void Foam::janafThermo<equationOfState>::operator+=
(
const janafThermo<equationOfState>& jt
)
......@@ -210,7 +193,7 @@ inline void janafThermo<equationOfState>::operator+=
template<class equationOfState>
inline void janafThermo<equationOfState>::operator-=
inline void Foam::janafThermo<equationOfState>::operator-=
(
const janafThermo<equationOfState>& jt
)
......@@ -244,20 +227,10 @@ inline void janafThermo<equationOfState>::operator-=
}
template<class equationOfState>
inline void janafThermo<equationOfState>::operator*=
(
const scalar s
)
{
equationOfState::operator*=(s);
}
// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * //
template<class equationOfState>
inline janafThermo<equationOfState> operator+
inline Foam::janafThermo<equationOfState> Foam::operator+
(
const janafThermo<equationOfState>& jt1,
const janafThermo<equationOfState>& jt2
......@@ -301,7 +274,7 @@ inline janafThermo<equationOfState> operator+
template<class equationOfState>
inline janafThermo<equationOfState> operator-
inline Foam::janafThermo<equationOfState> Foam::operator-
(
const janafThermo<equationOfState>& jt1,
const janafThermo<equationOfState>& jt2
......@@ -345,7 +318,7 @@ inline janafThermo<equationOfState> operator-
template<class equationOfState>
inline janafThermo<equationOfState> operator*
inline Foam::janafThermo<equationOfState> Foam::operator*
(
const scalar s,
const janafThermo<equationOfState>& jt
......@@ -364,7 +337,7 @@ inline janafThermo<equationOfState> operator*
template<class equationOfState>
inline janafThermo<equationOfState> operator==
inline Foam::janafThermo<equationOfState> Foam::operator==
(
const janafThermo<equationOfState>& jt1,
const janafThermo<equationOfState>& jt2
......@@ -374,8 +347,4 @@ inline janafThermo<equationOfState> operator==
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// ************************************************************************* //