From 14153d57db8a3b3ee5368321ff2a40541a6b2813 Mon Sep 17 00:00:00 2001 From: Henry Date: Mon, 24 Sep 2012 17:57:12 +0100 Subject: [PATCH] Thermodynamics: template the equations of state on Specie This will allow alternative methods of storing mixture information for e.g. complex transport modelling --- .../adiabaticFlameT/adiabaticFlameT.C | 11 +- .../equilibriumCO/equilibriumCO.C | 11 +- .../equilibriumFlameT/equilibriumFlameT.C | 10 +- .../mixtureAdiabaticFlameT.C | 11 +- .../basic/fluidThermo/makeThermo.H | 4 +- .../mixtures/basicMixture/basicMixtures.C | 1 + .../mixtures/basicMixture/makeBasicMixture.H | 4 +- .../psiThermo/hePsiThermo/hePsiThermos.C | 2 +- .../chemkinReader/chemkinLexer.L | 2 +- .../reactionThermo/makeReactionThermo.H | 2 +- .../include/solidThermoPhysicsTypes.H | 9 +- .../solidThermo/solidThermo/makeSolidThermo.H | 24 +-- src/thermophysicalModels/specie/Make/files | 3 - .../icoPolynomial/icoPolynomial.C | 27 +-- .../icoPolynomial/icoPolynomial.H | 59 ++++--- .../icoPolynomial/icoPolynomialI.H | 160 ++++++++++-------- .../incompressiblePerfectGas.C | 36 ++-- .../incompressiblePerfectGas.H | 64 ++++++- .../incompressiblePerfectGasI.H | 127 ++++++++------ .../equationOfState/perfectGas/perfectGas.C | 24 +-- .../equationOfState/perfectGas/perfectGas.H | 64 ++++++- .../equationOfState/perfectGas/perfectGasI.H | 102 ++++++----- .../equationOfState/rhoConst/rhoConst.C | 24 +-- .../equationOfState/rhoConst/rhoConst.H | 64 ++++++- .../equationOfState/rhoConst/rhoConstI.H | 95 ++++++----- .../specie/include/thermoPhysicsTypes.H | 11 +- 26 files changed, 605 insertions(+), 346 deletions(-) diff --git a/applications/utilities/thermophysical/adiabaticFlameT/adiabaticFlameT.C b/applications/utilities/thermophysical/adiabaticFlameT/adiabaticFlameT.C index e6c26f52cb..cfdb984b6d 100644 --- a/applications/utilities/thermophysical/adiabaticFlameT/adiabaticFlameT.C +++ b/applications/utilities/thermophysical/adiabaticFlameT/adiabaticFlameT.C @@ -36,15 +36,16 @@ Description #include "IFstream.H" #include "OSspecific.H" -#include "thermo.H" -#include "absoluteEnthalpy.H" -#include "janafThermo.H" +#include "specie.H" #include "perfectGas.H" +#include "thermo.H" +#include "janafThermo.H" +#include "absoluteEnthalpy.H" using namespace Foam; -typedef species::thermo, absoluteEnthalpy> thermo; - +typedef species::thermo >, absoluteEnthalpy> + thermo; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/utilities/thermophysical/equilibriumCO/equilibriumCO.C b/applications/utilities/thermophysical/equilibriumCO/equilibriumCO.C index 57f7aad308..8bf51d72c2 100644 --- a/applications/utilities/thermophysical/equilibriumCO/equilibriumCO.C +++ b/applications/utilities/thermophysical/equilibriumCO/equilibriumCO.C @@ -35,15 +35,18 @@ Description #include "OSspecific.H" #include "IOmanip.H" -#include "thermo.H" -#include "absoluteEnthalpy.H" -#include "janafThermo.H" +#include "specie.H" #include "perfectGas.H" +#include "thermo.H" +#include "janafThermo.H" +#include "absoluteEnthalpy.H" + #include "SLPtrList.H" using namespace Foam; -typedef species::thermo, absoluteEnthalpy> thermo; +typedef species::thermo >, absoluteEnthalpy> + thermo; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Main program: diff --git a/applications/utilities/thermophysical/equilibriumFlameT/equilibriumFlameT.C b/applications/utilities/thermophysical/equilibriumFlameT/equilibriumFlameT.C index 3a11369da7..40452749a4 100644 --- a/applications/utilities/thermophysical/equilibriumFlameT/equilibriumFlameT.C +++ b/applications/utilities/thermophysical/equilibriumFlameT/equilibriumFlameT.C @@ -38,14 +38,16 @@ Description #include "OSspecific.H" #include "IOmanip.H" -#include "thermo.H" -#include "absoluteEnthalpy.H" -#include "janafThermo.H" +#include "specie.H" #include "perfectGas.H" +#include "thermo.H" +#include "janafThermo.H" +#include "absoluteEnthalpy.H" using namespace Foam; -typedef species::thermo, absoluteEnthalpy> thermo; +typedef species::thermo >, absoluteEnthalpy> + thermo; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/utilities/thermophysical/mixtureAdiabaticFlameT/mixtureAdiabaticFlameT.C b/applications/utilities/thermophysical/mixtureAdiabaticFlameT/mixtureAdiabaticFlameT.C index 0b00e865ca..7f1def4476 100644 --- a/applications/utilities/thermophysical/mixtureAdiabaticFlameT/mixtureAdiabaticFlameT.C +++ b/applications/utilities/thermophysical/mixtureAdiabaticFlameT/mixtureAdiabaticFlameT.C @@ -35,16 +35,17 @@ Description #include "IFstream.H" #include "OSspecific.H" -#include "thermo.H" -#include "absoluteEnthalpy.H" -#include "janafThermo.H" +#include "specie.H" #include "perfectGas.H" +#include "thermo.H" +#include "janafThermo.H" +#include "absoluteEnthalpy.H" #include "mixture.H" using namespace Foam; -typedef species::thermo, absoluteEnthalpy> thermo; - +typedef species::thermo >, absoluteEnthalpy> + thermo; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/basic/fluidThermo/makeThermo.H b/src/thermophysicalModels/basic/fluidThermo/makeThermo.H index abdd0a81bc..fde9d2e1a1 100644 --- a/src/thermophysicalModels/basic/fluidThermo/makeThermo.H +++ b/src/thermophysicalModels/basic/fluidThermo/makeThermo.H @@ -48,7 +48,7 @@ typedef Cthermo \ < \ Thermo \ < \ - EqnOfState \ + EqnOfState \ >, \ Type \ > \ @@ -97,7 +97,7 @@ typedef polynomialTransport \ < \ hPolynomialThermo \ < \ - icoPolynomial, \ + icoPolynomial, \ Order \ >, \ Type \ diff --git a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C index a35994147f..2ce94472d0 100644 --- a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C +++ b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C @@ -31,6 +31,7 @@ Description #include "basicMixture.H" #include "makeBasicMixture.H" +#include "specie.H" #include "perfectGas.H" #include "rhoConst.H" #include "incompressiblePerfectGas.H" diff --git a/src/thermophysicalModels/basic/mixtures/basicMixture/makeBasicMixture.H b/src/thermophysicalModels/basic/mixtures/basicMixture/makeBasicMixture.H index 91fa87ea8d..1997397646 100644 --- a/src/thermophysicalModels/basic/mixtures/basicMixture/makeBasicMixture.H +++ b/src/thermophysicalModels/basic/mixtures/basicMixture/makeBasicMixture.H @@ -39,7 +39,7 @@ Description #define makeBasicMixture(Mixture,Transport,Type,Thermo,EqnOfState) \ \ typedef \ - Mixture, Type> > > \ + Mixture >, Type> > > \ Mixture##Transport##Type##Thermo##EqnOfState; \ \ defineTemplateTypeNameAndDebugWithName \ @@ -55,7 +55,7 @@ typedef polynomialTransport \ < \ hPolynomialThermo \ < \ - icoPolynomial, \ + icoPolynomial, \ Order \ >, \ Type \ diff --git a/src/thermophysicalModels/basic/psiThermo/hePsiThermo/hePsiThermos.C b/src/thermophysicalModels/basic/psiThermo/hePsiThermo/hePsiThermos.C index c997caab4b..5046cc85ec 100644 --- a/src/thermophysicalModels/basic/psiThermo/hePsiThermo/hePsiThermos.C +++ b/src/thermophysicalModels/basic/psiThermo/hePsiThermo/hePsiThermos.C @@ -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" diff --git a/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinLexer.L b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinLexer.L index 008aedd64d..a237983ad8 100644 --- a/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinLexer.L +++ b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinLexer.L @@ -619,7 +619,7 @@ bool finishReaction = false; currentSpecieName, new gasThermoPhysics ( - janafThermo + janafThermo > ( specie ( diff --git a/src/thermophysicalModels/reactionThermo/makeReactionThermo.H b/src/thermophysicalModels/reactionThermo/makeReactionThermo.H index c0f38eb8f0..bbc8336dc6 100644 --- a/src/thermophysicalModels/reactionThermo/makeReactionThermo.H +++ b/src/thermophysicalModels/reactionThermo/makeReactionThermo.H @@ -45,7 +45,7 @@ typedef MixtureThermo \ < \ Thermo \ < \ - EqnOfState \ + EqnOfState \ >, \ Type \ > \ diff --git a/src/thermophysicalModels/solidSpecie/include/solidThermoPhysicsTypes.H b/src/thermophysicalModels/solidSpecie/include/solidThermoPhysicsTypes.H index 7c5090a99a..15b0a1c6ea 100644 --- a/src/thermophysicalModels/solidSpecie/include/solidThermoPhysicsTypes.H +++ b/src/thermophysicalModels/solidSpecie/include/solidThermoPhysicsTypes.H @@ -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 >, sensibleEnthalpy > @@ -76,7 +73,7 @@ namespace Foam < hExponentialThermo < - rhoConst + rhoConst >, sensibleEnthalpy > diff --git a/src/thermophysicalModels/solidThermo/solidThermo/makeSolidThermo.H b/src/thermophysicalModels/solidThermo/solidThermo/makeSolidThermo.H index ca08fb88e8..25aaf9d2ee 100644 --- a/src/thermophysicalModels/solidThermo/solidThermo/makeSolidThermo.H +++ b/src/thermophysicalModels/solidThermo/solidThermo/makeSolidThermo.H @@ -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 \ >, \ 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 \ >, \ 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 \ ); diff --git a/src/thermophysicalModels/specie/Make/files b/src/thermophysicalModels/specie/Make/files index 23a7bdf3a9..739c9f91fd 100644 --- a/src/thermophysicalModels/specie/Make/files +++ b/src/thermophysicalModels/specie/Make/files @@ -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 diff --git a/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.C b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.C index 80b3cdca64..01b417e0db 100644 --- a/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.C +++ b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.C @@ -33,20 +33,20 @@ namespace Foam // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -icoPolynomial::icoPolynomial(Istream& is) +template +icoPolynomial::icoPolynomial(Istream& is) : - specie(is), + Specie(is), rhoCoeffs_("rhoCoeffs<" + Foam::name(PolySize) + '>', is) { rhoCoeffs_ *= this->W(); } -template -icoPolynomial::icoPolynomial(const dictionary& dict) +template +icoPolynomial::icoPolynomial(const dictionary& dict) : - specie(dict), + Specie(dict), rhoCoeffs_ ( dict.subDict("equationOfState").lookup @@ -61,10 +61,10 @@ icoPolynomial::icoPolynomial(const dictionary& dict) // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template -void icoPolynomial::write(Ostream& os) const +template +void icoPolynomial::write(Ostream& os) const { - specie::write(os); + Specie::write(os); dictionary dict("equationOfState"); dict.add @@ -79,16 +79,17 @@ void icoPolynomial::write(Ostream& os) const // * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // -template -Ostream& operator<<(Ostream& os, const icoPolynomial& ip) +template +Ostream& operator<<(Ostream& os, const icoPolynomial& ip) { - os << static_cast(ip) << tab + os << static_cast(ip) << tab << "rhoCoeffs<" << Foam::name(PolySize) << '>' << tab << ip.rhoCoeffs_/ip.W(); os.check ( - "Ostream& operator<<(Ostream& os, const icoPolynomial& ip)" + "Ostream& operator<<" + "(Ostream& os, const icoPolynomial& ip)" ); return os; diff --git a/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.H b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.H index 3afc213e22..ba92455f82 100644 --- a/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.H +++ b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomial.H @@ -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 +template class icoPolynomial; -template -icoPolynomial operator+ +template +icoPolynomial operator+ ( - const icoPolynomial&, - const icoPolynomial& + const icoPolynomial&, + const icoPolynomial& ); -template -icoPolynomial operator- +template +icoPolynomial operator- ( - const icoPolynomial&, - const icoPolynomial& + const icoPolynomial&, + const icoPolynomial& ); -template -icoPolynomial operator* +template +icoPolynomial operator* ( const scalar, - const icoPolynomial& + const icoPolynomial& ); -template -icoPolynomial operator== +template +icoPolynomial operator== ( - const icoPolynomial&, - const icoPolynomial& + const icoPolynomial&, + const icoPolynomial& ); -template +template Ostream& operator<< ( Ostream&, - const icoPolynomial& + const icoPolynomial& ); @@ -91,10 +90,10 @@ Ostream& operator<< Class icoPolynomial Declaration \*---------------------------------------------------------------------------*/ -template +template 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& rhoPoly ); @@ -176,25 +175,25 @@ public: // Friend operators - friend icoPolynomial operator+ + friend icoPolynomial operator+ ( const icoPolynomial&, const icoPolynomial& ); - friend icoPolynomial operator- + friend icoPolynomial operator- ( const icoPolynomial&, const icoPolynomial& ); - friend icoPolynomial operator* + friend icoPolynomial operator* ( const scalar s, const icoPolynomial& ); - friend icoPolynomial operator== + friend icoPolynomial operator== ( const icoPolynomial&, const icoPolynomial& @@ -203,7 +202,11 @@ public: // Ostream Operator - friend Ostream& operator<< (Ostream&, const icoPolynomial&); + friend Ostream& operator<< + ( + Ostream&, + const icoPolynomial& + ); }; @@ -217,7 +220,7 @@ public: \ defineTemplateTypeNameAndDebugWithName \ ( \ - icoPolynomial, \ + icoPolynomial, \ "icoPolynomial<"#PolySize">", \ 0 \ ); diff --git a/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomialI.H b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomialI.H index cfa527bd0e..dbe3772ec0 100644 --- a/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomialI.H +++ b/src/thermophysicalModels/specie/equationOfState/icoPolynomial/icoPolynomialI.H @@ -27,98 +27,113 @@ License // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -template -inline Foam::icoPolynomial::icoPolynomial +template +inline Foam::icoPolynomial::icoPolynomial ( - const specie& sp, + const Specie& sp, const Polynomial& rhoCoeffs ) : - specie(sp), + Specie(sp), rhoCoeffs_(rhoCoeffs) {} // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -inline Foam::icoPolynomial::icoPolynomial +template +inline Foam::icoPolynomial::icoPolynomial ( - const icoPolynomial& ip + const icoPolynomial& ip ) : - specie(ip), + Specie(ip), rhoCoeffs_(ip.rhoCoeffs_) {} -template -inline Foam::icoPolynomial::icoPolynomial +template +inline Foam::icoPolynomial::icoPolynomial ( const word& name, - const icoPolynomial& ip + const icoPolynomial& ip ) : - specie(name, ip), + Specie(name, ip), rhoCoeffs_(ip.rhoCoeffs_) {} -template -inline Foam::autoPtr > -Foam::icoPolynomial::clone() const +template +inline Foam::autoPtr > +Foam::icoPolynomial::clone() const { - return autoPtr > + return autoPtr > ( - new icoPolynomial(*this) + new icoPolynomial(*this) ); } -template -inline Foam::autoPtr > -Foam::icoPolynomial::New(Istream& is) +template +inline Foam::autoPtr > +Foam::icoPolynomial::New(Istream& is) { - return autoPtr >(new icoPolynomial(is)); + return autoPtr > + ( + new icoPolynomial(is) + ); } -template -inline Foam::autoPtr > -Foam::icoPolynomial::New(const dictionary& dict) +template +inline Foam::autoPtr > +Foam::icoPolynomial::New(const dictionary& dict) { - return autoPtr > + return autoPtr > ( - new icoPolynomial(dict) + new icoPolynomial(dict) ); } // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template -inline Foam::scalar Foam::icoPolynomial::rho(scalar, scalar T) const +template +inline Foam::scalar Foam::icoPolynomial::rho +( + scalar, + scalar T +) const { return rhoCoeffs_.value(T)/this->W(); } -template -inline Foam::scalar Foam::icoPolynomial::psi(scalar, scalar) const +template +inline Foam::scalar Foam::icoPolynomial::psi +( + scalar, + scalar +) const { return 0.0; } -template -inline Foam::scalar Foam::icoPolynomial::Z(scalar, scalar) const +template +inline Foam::scalar Foam::icoPolynomial::Z +( + scalar, + scalar +) const { return 0.0; } -template -inline Foam::scalar Foam::icoPolynomial::cpMcv +template +inline Foam::scalar Foam::icoPolynomial::cpMcv ( scalar p, scalar T @@ -130,13 +145,14 @@ inline Foam::scalar Foam::icoPolynomial::cpMcv // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // -template -inline Foam::icoPolynomial& Foam::icoPolynomial::operator= +template +inline Foam::icoPolynomial& +Foam::icoPolynomial::operator= ( - const icoPolynomial& ip + const icoPolynomial& ip ) { - specie::operator=(ip); + Specie::operator=(ip); rhoCoeffs_ = ip.rhoCoeffs_; @@ -144,15 +160,15 @@ inline Foam::icoPolynomial& Foam::icoPolynomial::operator= } -template -inline void Foam::icoPolynomial::operator+= +template +inline void Foam::icoPolynomial::operator+= ( - const icoPolynomial& ip + const icoPolynomial& 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::operator+= } -template -inline void Foam::icoPolynomial::operator-= +template +inline void Foam::icoPolynomial::operator-= ( - const icoPolynomial& ip + const icoPolynomial& 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::operator-= } -template -inline void Foam::icoPolynomial::operator*=(const scalar s) +template +inline void Foam::icoPolynomial::operator*=(const scalar s) { - specie::operator*=(s); + Specie::operator*=(s); } // * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // -template -Foam::icoPolynomial Foam::operator+ +template +Foam::icoPolynomial Foam::operator+ ( - const icoPolynomial& ip1, - const icoPolynomial& ip2 + const icoPolynomial& ip1, + const icoPolynomial& ip2 ) { scalar nMoles = ip1.nMoles() + ip2.nMoles(); scalar molr1 = ip1.nMoles()/nMoles; scalar molr2 = ip2.nMoles()/nMoles; - return icoPolynomial + return icoPolynomial ( - static_cast(ip1) - + static_cast(ip2), + static_cast(ip1) + + static_cast(ip2), molr1*ip1.rhoCoeffs_ + molr2*ip2.rhoCoeffs_ ); } -template -Foam::icoPolynomial Foam::operator- +template +Foam::icoPolynomial Foam::operator- ( - const icoPolynomial& ip1, - const icoPolynomial& ip2 + const icoPolynomial& ip1, + const icoPolynomial& ip2 ) { scalar nMoles = ip1.nMoles() + ip2.nMoles(); scalar molr1 = ip1.nMoles()/nMoles; scalar molr2 = ip2.nMoles()/nMoles; - return icoPolynomial + return icoPolynomial ( - static_cast(ip1) - - static_cast(ip2), + static_cast(ip1) + - static_cast(ip2), molr1*ip1.rhoCoeffs_ - molr2*ip2.rhoCoeffs_ ); } -template -Foam::icoPolynomial Foam::operator* +template +Foam::icoPolynomial Foam::operator* ( const scalar s, - const icoPolynomial& ip + const icoPolynomial& ip ) { - return icoPolynomial + return icoPolynomial ( - s*static_cast(ip), + s*static_cast(ip), ip.rhoCoeffs_ ); } -template -Foam::icoPolynomial Foam::operator== +template +Foam::icoPolynomial Foam::operator== ( - const icoPolynomial& ip1, - const icoPolynomial& ip2 + const icoPolynomial& ip1, + const icoPolynomial& ip2 ) { return ip2 - ip1; diff --git a/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.C b/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.C index 700980e44f..4f957aafed 100644 --- a/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.C +++ b/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.C @@ -28,27 +28,37 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::incompressiblePerfectGas::incompressiblePerfectGas(Istream& is) +template +Foam::incompressiblePerfectGas::incompressiblePerfectGas(Istream& is) : - specie(is), + Specie(is), pRef_(readScalar(is)) { - is.check("incompressiblePerfectGas::incompressiblePerfectGas(Istream& is)"); + is.check + ( + "incompressiblePerfectGas::" + "incompressiblePerfectGas(Istream& is)" + ); } -Foam::incompressiblePerfectGas::incompressiblePerfectGas(const dictionary& dict) +template +Foam::incompressiblePerfectGas::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 +void Foam::incompressiblePerfectGas::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 +Foam::Ostream& Foam::operator<< +( + Ostream& os, + const incompressiblePerfectGas& pg +) { - os << static_cast(pg) + os << static_cast(pg) << token::SPACE << pg.pRef_; os.check ( - "Ostream& operator<<(Ostream& os, const incompressiblePerfectGas& st)" + "Ostream& operator<<" + "(Ostream& os, const incompressiblePerfectGas& st)" ); return os; } diff --git a/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.H b/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.H index c755c2d8f2..a752cc924a 100644 --- a/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.H +++ b/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGas.H @@ -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 incompressiblePerfectGas; + +template +inline incompressiblePerfectGas operator+ +( + const incompressiblePerfectGas&, + const incompressiblePerfectGas& +); + +template +inline incompressiblePerfectGas operator- +( + const incompressiblePerfectGas&, + const incompressiblePerfectGas& +); + +template +inline incompressiblePerfectGas operator* +( + const scalar, + const incompressiblePerfectGas& +); + +template +inline incompressiblePerfectGas operator== +( + const incompressiblePerfectGas&, + const incompressiblePerfectGas& +); + +template +Ostream& operator<< +( + Ostream&, + const incompressiblePerfectGas& +); + + /*---------------------------------------------------------------------------*\ Class incompressiblePerfectGas Declaration \*---------------------------------------------------------------------------*/ +template 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+ ( const incompressiblePerfectGas&, const incompressiblePerfectGas& ); - inline friend incompressiblePerfectGas operator- + inline friend incompressiblePerfectGas operator- ( const incompressiblePerfectGas&, const incompressiblePerfectGas& ); - inline friend incompressiblePerfectGas operator* + inline friend incompressiblePerfectGas operator* ( const scalar s, const incompressiblePerfectGas& ); - inline friend incompressiblePerfectGas operator== + inline friend incompressiblePerfectGas operator== ( const incompressiblePerfectGas&, const incompressiblePerfectGas& @@ -159,7 +199,11 @@ public: // Ostream Operator - friend Ostream& operator<<(Ostream&, const incompressiblePerfectGas&); + friend Ostream& operator<< + ( + Ostream&, + const incompressiblePerfectGas& + ); }; @@ -171,6 +215,10 @@ public: #include "incompressiblePerfectGasI.H" +#ifdef NoRepository +# include "incompressiblePerfectGas.C" +#endif + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif diff --git a/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGasI.H b/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGasI.H index d179d5e2a1..340d4b1e4c 100644 --- a/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGasI.H +++ b/src/thermophysicalModels/specie/equationOfState/incompressiblePerfectGas/incompressiblePerfectGasI.H @@ -27,85 +27,109 @@ License // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -inline Foam::incompressiblePerfectGas::incompressiblePerfectGas +template +inline Foam::incompressiblePerfectGas::incompressiblePerfectGas ( - const specie& sp + const Specie& sp ) : - specie(sp) + Specie(sp) {} // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -inline Foam::incompressiblePerfectGas::incompressiblePerfectGas +template +inline Foam::incompressiblePerfectGas::incompressiblePerfectGas ( const word& name, - const incompressiblePerfectGas& pg + const incompressiblePerfectGas& pg ) : - specie(name, pg) + Specie(name, pg) {} -inline Foam::autoPtr -Foam::incompressiblePerfectGas::clone() const +template +inline Foam::autoPtr > +Foam::incompressiblePerfectGas::clone() const { - return autoPtr + return autoPtr > ( - new incompressiblePerfectGas(*this) + new incompressiblePerfectGas(*this) ); } -inline Foam::autoPtr -Foam::incompressiblePerfectGas::New +template +inline Foam::autoPtr > +Foam::incompressiblePerfectGas::New ( Istream& is ) { - return autoPtr(new incompressiblePerfectGas(is)); + return autoPtr > + ( + new incompressiblePerfectGas(is) + ); } -inline Foam::autoPtr -Foam::incompressiblePerfectGas::New +template +inline Foam::autoPtr > +Foam::incompressiblePerfectGas::New ( const dictionary& dict ) { - return autoPtr + return autoPtr > ( - new incompressiblePerfectGas(dict) + new incompressiblePerfectGas(dict) ); } // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -inline Foam::scalar Foam::incompressiblePerfectGas::rho +template +inline Foam::scalar Foam::incompressiblePerfectGas::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 +inline Foam::scalar Foam::incompressiblePerfectGas::psi +( + scalar, + scalar T +) const { return 0.0; } -inline Foam::scalar Foam::incompressiblePerfectGas::Z(scalar, scalar) const +template +inline Foam::scalar Foam::incompressiblePerfectGas::Z +( + scalar, + scalar +) const { return 0.0; } -inline Foam::scalar Foam::incompressiblePerfectGas::cpMcv(scalar, scalar) const +template +inline Foam::scalar Foam::incompressiblePerfectGas::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 +inline void Foam::incompressiblePerfectGas::operator+= ( - const incompressiblePerfectGas& pg + const incompressiblePerfectGas& pg ) { - specie::operator+=(pg); + Specie::operator+=(pg); } -inline void Foam::incompressiblePerfectGas::operator-= +template +inline void Foam::incompressiblePerfectGas::operator-= ( - const incompressiblePerfectGas& pg + const incompressiblePerfectGas& pg ) { - specie::operator-=(pg); + Specie::operator-=(pg); } -inline void Foam::incompressiblePerfectGas::operator*=(const scalar s) +template +inline void Foam::incompressiblePerfectGas::operator*=(const scalar s) { - specie::operator*=(s); + Specie::operator*=(s); } // * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // -inline Foam::incompressiblePerfectGas Foam::operator+ +template +inline Foam::incompressiblePerfectGas Foam::operator+ ( - const incompressiblePerfectGas& pg1, - const incompressiblePerfectGas& pg2 + const incompressiblePerfectGas& pg1, + const incompressiblePerfectGas& pg2 ) { - return incompressiblePerfectGas + return incompressiblePerfectGas ( - static_cast(pg1) - + static_cast(pg2) + static_cast(pg1) + + static_cast(pg2) ); } -inline Foam::incompressiblePerfectGas Foam::operator- +template +inline Foam::incompressiblePerfectGas Foam::operator- ( - const incompressiblePerfectGas& pg1, - const incompressiblePerfectGas& pg2 + const incompressiblePerfectGas& pg1, + const incompressiblePerfectGas& pg2 ) { - return incompressiblePerfectGas + return incompressiblePerfectGas ( - static_cast(pg1) - - static_cast(pg2) + static_cast(pg1) + - static_cast(pg2) ); } -inline Foam::incompressiblePerfectGas Foam::operator* +template +inline Foam::incompressiblePerfectGas Foam::operator* ( const scalar s, - const incompressiblePerfectGas& pg + const incompressiblePerfectGas& pg ) { - return incompressiblePerfectGas(s*static_cast(pg)); + return incompressiblePerfectGas(s*static_cast(pg)); } -inline Foam::incompressiblePerfectGas Foam::operator== +template +inline Foam::incompressiblePerfectGas Foam::operator== ( - const incompressiblePerfectGas& pg1, - const incompressiblePerfectGas& pg2 + const incompressiblePerfectGas& pg1, + const incompressiblePerfectGas& pg2 ) { return pg2 - pg1; diff --git a/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGas.C b/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGas.C index d575368ce5..5e4cf38b72 100644 --- a/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGas.C +++ b/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGas.C @@ -28,35 +28,39 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::perfectGas::perfectGas(Istream& is) +template +Foam::perfectGas::perfectGas(Istream& is) : - specie(is) + Specie(is) { - is.check("perfectGas::perfectGas(Istream& is)"); + is.check("perfectGas::perfectGas(Istream& is)"); } -Foam::perfectGas::perfectGas(const dictionary& dict) +template +Foam::perfectGas::perfectGas(const dictionary& dict) : - specie(dict) + Specie(dict) {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::perfectGas::write(Ostream& os) const +template +void Foam::perfectGas::write(Ostream& os) const { - specie::write(os); + Specie::write(os); } // * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // -Foam::Ostream& Foam::operator<<(Ostream& os, const perfectGas& pg) +template +Foam::Ostream& Foam::operator<<(Ostream& os, const perfectGas& pg) { - os << static_cast(pg); + os << static_cast(pg); - os.check("Ostream& operator<<(Ostream& os, const perfectGas& st)"); + os.check("Ostream& operator<<(Ostream& os, const perfectGas& st)"); return os; } diff --git a/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGas.H b/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGas.H index 74853b3f5a..a0cff64517 100644 --- a/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGas.H +++ b/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGas.H @@ -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 perfectGas; + +template +inline perfectGas operator+ +( + const perfectGas&, + const perfectGas& +); + +template +inline perfectGas operator- +( + const perfectGas&, + const perfectGas& +); + +template +inline perfectGas operator* +( + const scalar, + const perfectGas& +); + +template +inline perfectGas operator== +( + const perfectGas&, + const perfectGas& +); + +template +Ostream& operator<< +( + Ostream&, + const perfectGas& +); + + /*---------------------------------------------------------------------------*\ Class perfectGas Declaration \*---------------------------------------------------------------------------*/ +template 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+ ( const perfectGas&, const perfectGas& ); - inline friend perfectGas operator- + inline friend perfectGas operator- ( const perfectGas&, const perfectGas& ); - inline friend perfectGas operator* + inline friend perfectGas operator* ( const scalar s, const perfectGas& ); - inline friend perfectGas operator== + inline friend perfectGas operator== ( const perfectGas&, const perfectGas& @@ -145,7 +185,11 @@ public: // Ostream Operator - friend Ostream& operator<<(Ostream&, const perfectGas&); + friend Ostream& operator<< + ( + Ostream&, + const perfectGas& + ); }; @@ -157,6 +201,10 @@ public: #include "perfectGasI.H" +#ifdef NoRepository +# include "perfectGas.C" +#endif + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif diff --git a/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGasI.H b/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGasI.H index b43bd6fe1a..7d5c6832ba 100644 --- a/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGasI.H +++ b/src/thermophysicalModels/specie/equationOfState/perfectGas/perfectGasI.H @@ -27,62 +27,77 @@ License // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -inline Foam::perfectGas::perfectGas(const specie& sp) +template +inline Foam::perfectGas::perfectGas(const Specie& sp) : - specie(sp) + Specie(sp) {} // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -inline Foam::perfectGas::perfectGas(const word& name, const perfectGas& pg) +template +inline Foam::perfectGas::perfectGas +( + const word& name, + const perfectGas& pg +) : - specie(name, pg) + Specie(name, pg) {} -inline Foam::autoPtr Foam::perfectGas::clone() const +template +inline Foam::autoPtr > +Foam::perfectGas::clone() const { - return autoPtr(new perfectGas(*this)); + return autoPtr >(new perfectGas(*this)); } -inline Foam::autoPtr Foam::perfectGas::New(Istream& is) +template +inline Foam::autoPtr > +Foam::perfectGas::New(Istream& is) { - return autoPtr(new perfectGas(is)); + return autoPtr >(new perfectGas(is)); } -inline Foam::autoPtr Foam::perfectGas::New +template +inline Foam::autoPtr > Foam::perfectGas::New ( const dictionary& dict ) { - return autoPtr(new perfectGas(dict)); + return autoPtr >(new perfectGas(dict)); } // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -inline Foam::scalar Foam::perfectGas::rho(scalar p, scalar T) const +template +inline Foam::scalar Foam::perfectGas::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 +inline Foam::scalar Foam::perfectGas::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 +inline Foam::scalar Foam::perfectGas::Z(scalar, scalar) const { return 1.0; } -inline Foam::scalar Foam::perfectGas::cpMcv(scalar, scalar) const +template +inline Foam::scalar Foam::perfectGas::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 +inline void Foam::perfectGas::operator+=(const perfectGas& pg) { - specie::operator+=(pg); + Specie::operator+=(pg); } -inline void Foam::perfectGas::operator-=(const perfectGas& pg) +template +inline void Foam::perfectGas::operator-=(const perfectGas& pg) { - specie::operator-=(pg); + Specie::operator-=(pg); } -inline void Foam::perfectGas::operator*=(const scalar s) +template +inline void Foam::perfectGas::operator*=(const scalar s) { - specie::operator*=(s); + Specie::operator*=(s); } // * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // -inline Foam::perfectGas Foam::operator+ +template +inline Foam::perfectGas Foam::operator+ ( - const perfectGas& pg1, - const perfectGas& pg2 + const perfectGas& pg1, + const perfectGas& pg2 ) { - return perfectGas + return perfectGas ( - static_cast(pg1) - + static_cast(pg2) + static_cast(pg1) + + static_cast(pg2) ); } -inline Foam::perfectGas Foam::operator- +template +inline Foam::perfectGas Foam::operator- ( - const perfectGas& pg1, - const perfectGas& pg2 + const perfectGas& pg1, + const perfectGas& pg2 ) { - return perfectGas + return perfectGas ( - static_cast(pg1) - - static_cast(pg2) + static_cast(pg1) + - static_cast(pg2) ); } -inline Foam::perfectGas Foam::operator* +template +inline Foam::perfectGas Foam::operator* ( const scalar s, - const perfectGas& pg + const perfectGas& pg ) { - return perfectGas(s*static_cast(pg)); + return perfectGas(s*static_cast(pg)); } -inline Foam::perfectGas Foam::operator== +template +inline Foam::perfectGas Foam::operator== ( - const perfectGas& pg1, - const perfectGas& pg2 + const perfectGas& pg1, + const perfectGas& pg2 ) { return pg2 - pg1; diff --git a/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.C b/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.C index 97e825ffb3..895ec1859f 100644 --- a/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.C +++ b/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.C @@ -28,27 +28,30 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::rhoConst::rhoConst(Istream& is) +template +Foam::rhoConst::rhoConst(Istream& is) : - specie(is), + Specie(is), rho_(readScalar(is)) { - is.check("rhoConst::rhoConst(Istream& is)"); + is.check("rhoConst::rhoConst(Istream& is)"); } -Foam::rhoConst::rhoConst(const dictionary& dict) +template +Foam::rhoConst::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 +void Foam::rhoConst::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 +Foam::Ostream& Foam::operator<<(Ostream& os, const rhoConst& ico) { - os << static_cast(ico) + os << static_cast(ico) << token::SPACE << ico.rho_; - os.check("Ostream& operator<<(Ostream& os, const rhoConst& ico)"); + os.check("Ostream& operator<<(Ostream& os, const rhoConst& ico)"); return os; } diff --git a/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.H b/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.H index 49a776c63e..af4af4adbd 100644 --- a/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.H +++ b/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConst.H @@ -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 rhoConst; + +template +inline rhoConst operator+ +( + const rhoConst&, + const rhoConst& +); + +template +inline rhoConst operator- +( + const rhoConst&, + const rhoConst& +); + +template +inline rhoConst operator* +( + const scalar, + const rhoConst& +); + +template +inline rhoConst operator== +( + const rhoConst&, + const rhoConst& +); + +template +Ostream& operator<< +( + Ostream&, + const rhoConst& +); + + /*---------------------------------------------------------------------------*\ Class rhoConst Declaration \*---------------------------------------------------------------------------*/ +template 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+ ( const rhoConst&, const rhoConst& ); - inline friend rhoConst operator- + inline friend rhoConst operator- ( const rhoConst&, const rhoConst& ); - inline friend rhoConst operator* + inline friend rhoConst operator* ( const scalar s, const rhoConst& ); - inline friend rhoConst operator== + inline friend rhoConst operator== ( const rhoConst&, const rhoConst& @@ -147,7 +187,11 @@ public: // Ostream Operator - friend Ostream& operator<<(Ostream&, const rhoConst&); + friend Ostream& operator<< + ( + Ostream&, + const rhoConst& + ); }; @@ -159,6 +203,10 @@ public: #include "rhoConstI.H" +#ifdef NoRepository +# include "rhoConst.C" +#endif + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif diff --git a/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConstI.H b/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConstI.H index 79faf014d4..a3898a4d69 100644 --- a/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConstI.H +++ b/src/thermophysicalModels/specie/equationOfState/rhoConst/rhoConstI.H @@ -27,65 +27,73 @@ License // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -inline Foam::rhoConst::rhoConst +template +inline Foam::rhoConst::rhoConst ( - const specie& sp, + const Specie& sp, const scalar rho ) : - specie(sp), + Specie(sp), rho_(rho) {} // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -inline Foam::rhoConst::rhoConst +template +inline Foam::rhoConst::rhoConst ( const word& name, - const rhoConst& ico + const rhoConst& ico ) : - specie(name, ico), + Specie(name, ico), rho_(ico.rho_) {} -inline Foam::autoPtr -Foam::rhoConst::clone() const +template +inline Foam::autoPtr > +Foam::rhoConst::clone() const { - return autoPtr(new rhoConst(*this)); + return autoPtr >(new rhoConst(*this)); } -inline Foam::autoPtr -Foam::rhoConst::New(Istream& is) +template +inline Foam::autoPtr > +Foam::rhoConst::New(Istream& is) { - return autoPtr(new rhoConst(is)); + return autoPtr >(new rhoConst(is)); } // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -inline Foam::scalar Foam::rhoConst::rho(scalar p, scalar T) const +template +inline Foam::scalar Foam::rhoConst::rho(scalar p, scalar T) const { return rho_; } -inline Foam::scalar Foam::rhoConst::psi(scalar, scalar T) const +template +inline Foam::scalar Foam::rhoConst::psi(scalar, scalar T) const { return 0.0; } -inline Foam::scalar Foam::rhoConst::Z(scalar, scalar) const +template +inline Foam::scalar Foam::rhoConst::Z(scalar, scalar) const { return 0.0; } -inline Foam::scalar Foam::rhoConst::cpMcv(scalar, scalar) const +template +inline Foam::scalar Foam::rhoConst::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 +inline void Foam::rhoConst::operator+=(const rhoConst& 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 +inline void Foam::rhoConst::operator-=(const rhoConst& 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 +inline void Foam::rhoConst::operator*=(const scalar s) { - specie::operator*=(s); + Specie::operator*=(s); } // * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // -inline Foam::rhoConst Foam::operator+ +template +inline Foam::rhoConst Foam::operator+ ( - const rhoConst& ico1, - const rhoConst& ico2 + const rhoConst& ico1, + const rhoConst& ico2 ) { scalar nMoles = ico1.nMoles() + ico2.nMoles(); scalar molr1 = ico1.nMoles()/nMoles; scalar molr2 = ico2.nMoles()/nMoles; - return rhoConst + return rhoConst ( - static_cast(ico1) - + static_cast(ico2), + static_cast(ico1) + + static_cast(ico2), molr1*ico1.rho_ + molr2*ico2.rho_ ); } -inline Foam::rhoConst Foam::operator- +template +inline Foam::rhoConst Foam::operator- ( - const rhoConst& ico1, - const rhoConst& ico2 + const rhoConst& ico1, + const rhoConst& ico2 ) { scalar nMoles = ico1.nMoles() + ico2.nMoles(); scalar molr1 = ico1.nMoles()/nMoles; scalar molr2 = ico2.nMoles()/nMoles; - return rhoConst + return rhoConst ( - static_cast(ico1) - - static_cast(ico2), + static_cast(ico1) + - static_cast(ico2), molr1*ico1.rho_ - molr2*ico2.rho_ ); } -inline Foam::rhoConst Foam::operator* +template +inline Foam::rhoConst Foam::operator* ( const scalar s, - const rhoConst& ico + const rhoConst& ico ) { - return rhoConst(s*static_cast(ico), ico.rho_); + return rhoConst(s*static_cast(ico), ico.rho_); } -inline Foam::rhoConst Foam::operator== +template +inline Foam::rhoConst Foam::operator== ( - const rhoConst& ico1, - const rhoConst& ico2 + const rhoConst& ico1, + const rhoConst& ico2 ) { return ico2 - ico1; diff --git a/src/thermophysicalModels/specie/include/thermoPhysicsTypes.H b/src/thermophysicalModels/specie/include/thermoPhysicsTypes.H index d4cefcc05f..a3a276b926 100644 --- a/src/thermophysicalModels/specie/include/thermoPhysicsTypes.H +++ b/src/thermophysicalModels/specie/include/thermoPhysicsTypes.H @@ -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 >, sensibleEnthalpy > @@ -69,7 +70,7 @@ namespace Foam < janafThermo < - perfectGas + perfectGas >, sensibleEnthalpy > @@ -82,7 +83,7 @@ namespace Foam < hConstThermo < - incompressiblePerfectGas + incompressiblePerfectGas >, sensibleEnthalpy > @@ -95,7 +96,7 @@ namespace Foam < janafThermo < - incompressiblePerfectGas + incompressiblePerfectGas >, sensibleEnthalpy > @@ -108,7 +109,7 @@ namespace Foam < hPolynomialThermo < - icoPolynomial<8>, + icoPolynomial, 8 >, sensibleEnthalpy