diff --git a/src/thermophysicalModels/chemistryModel/Make/files b/src/thermophysicalModels/chemistryModel/Make/files index 73bd57812c..3bfd31a8b1 100644 --- a/src/thermophysicalModels/chemistryModel/Make/files +++ b/src/thermophysicalModels/chemistryModel/Make/files @@ -1,6 +1,7 @@ -chemistryModel/chemistryModel/chemistryModel.C -chemistryModel/chemistryModel/newChemistryModel.C -chemistryModel/chemistryModel/chemistryModels.C +chemistryModel/basicChemistryModel/basicChemistryModel.C +chemistryModel/psiChemistryModel/psiChemistryModel.C +chemistryModel/psiChemistryModel/newPsiChemistryModel.C +chemistryModel/psiChemistryModel/psiChemistryModels.C chemistrySolver/chemistrySolver/makeChemistrySolvers.C diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModel.C index 3ece5e2ee9..498bc9ada2 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModel.C +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModel.C @@ -30,10 +30,13 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -Foam::ODEChemistryModel::ODEChemistryModel(const fvMesh& mesh) +template +Foam::ODEChemistryModel::ODEChemistryModel +( + const fvMesh& mesh +) : - chemistryModel(mesh), + CompType(mesh), ODE(), @@ -52,7 +55,7 @@ Foam::ODEChemistryModel::ODEChemistryModel(const fvMesh& mesh) nSpecie_(Y_.size()), nReaction_(reactions_.size()), - solver_(chemistrySolver::New(*this)), + solver_(chemistrySolver::New(*this)), RR_(nSpecie_) { @@ -73,15 +76,15 @@ Foam::ODEChemistryModel::ODEChemistryModel(const fvMesh& mesh) // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -Foam::ODEChemistryModel::~ODEChemistryModel() +template +Foam::ODEChemistryModel::~ODEChemistryModel() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template -Foam::scalarField Foam::ODEChemistryModel::omega +template +Foam::scalarField Foam::ODEChemistryModel::omega ( const scalarField& c, const scalar T, @@ -121,8 +124,8 @@ Foam::scalarField Foam::ODEChemistryModel::omega } -template -Foam::scalar Foam::ODEChemistryModel::omega +template +Foam::scalar Foam::ODEChemistryModel::omega ( const Reaction& R, const scalarField& c, @@ -241,8 +244,8 @@ Foam::scalar Foam::ODEChemistryModel::omega } -template -void Foam::ODEChemistryModel::derivatives +template +void Foam::ODEChemistryModel::derivatives ( const scalar time, const scalarField &c, @@ -292,8 +295,8 @@ void Foam::ODEChemistryModel::derivatives } -template -void Foam::ODEChemistryModel::jacobian +template +void Foam::ODEChemistryModel::jacobian ( const scalar t, const scalarField& c, @@ -434,9 +437,9 @@ void Foam::ODEChemistryModel::jacobian } -template +template Foam::tmp -Foam::ODEChemistryModel::tc() const +Foam::ODEChemistryModel::tc() const { scalar pf,cf,pr,cr; label lRef, rRef; @@ -446,7 +449,7 @@ Foam::ODEChemistryModel::tc() const scalarField t(nCells, SMALL); - if (chemistry_) + if (this->chemistry_) { for (label celli=0; celli::tc() const } -template +template Foam::tmp -Foam::ODEChemistryModel::dQ() const +Foam::ODEChemistryModel::dQ() const { tmp tdQ ( @@ -533,7 +536,7 @@ Foam::ODEChemistryModel::dQ() const ) ); - if (chemistry_) + if (this->chemistry_) { scalarField& dQ = tdQ(); @@ -557,23 +560,23 @@ Foam::ODEChemistryModel::dQ() const } -template -Foam::label Foam::ODEChemistryModel::nEqns() const +template +Foam::label Foam::ODEChemistryModel::nEqns() const { // nEqns = number of species + temperature + pressure return nSpecie_ + 2; } -template -void Foam::ODEChemistryModel::calculate() +template +void Foam::ODEChemistryModel::calculate() { for (label i=0; ithermo().rho()().size()); } - if (chemistry_) + if (this->chemistry_) { forAll(this->thermo().rho()(), celli) { @@ -606,8 +609,8 @@ void Foam::ODEChemistryModel::calculate() } -template -Foam::scalar Foam::ODEChemistryModel::solve +template +Foam::scalar Foam::ODEChemistryModel::solve ( const scalar t0, const scalar deltaT @@ -618,7 +621,7 @@ Foam::scalar Foam::ODEChemistryModel::solve RR_[i].setSize(this->thermo().rho()().size()); } - if (!chemistry_) + if (!this->chemistry_) { return GREAT; } @@ -648,7 +651,7 @@ Foam::scalar Foam::ODEChemistryModel::solve c0 = c; scalar t = t0; - scalar tauC = deltaTChem_[celli]; + scalar tauC = this->deltaTChem_[celli]; scalar dt = min(deltaT, tauC); scalar timeLeft = deltaT; @@ -670,7 +673,7 @@ Foam::scalar Foam::ODEChemistryModel::solve Ti = mixture.TH(hi, Ti); timeLeft -= dt; - deltaTChem_[celli] = tauC; + this->deltaTChem_[celli] = tauC; dt = min(timeLeft, tauC); dt = max(dt, SMALL); } diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModel.H b/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModel.H index c4a394e207..d281dbf2c7 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModel.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModel.H @@ -41,7 +41,6 @@ SourceFiles #include "hCombustionThermo.H" #include "Reaction.H" -#include "chemistryModel.H" #include "ODE.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -50,17 +49,17 @@ namespace Foam { // Forward declaration of classes -template +template class chemistrySolver; /*---------------------------------------------------------------------------*\ Class ODEChemistryModel Declaration \*---------------------------------------------------------------------------*/ -template +template class ODEChemistryModel : - public chemistryModel, + public CompType, public ODE { // Private Member Functions @@ -89,7 +88,7 @@ protected: label nReaction_; //- Chemistry solver - autoPtr > solver_; + autoPtr > solver_; //- Chemical source term PtrList RR_; @@ -133,7 +132,7 @@ public: inline label nReaction() const; //- Return the chemisty solver - inline const chemistrySolver& solver() const; + inline const chemistrySolver& solver() const; //- dc/dt = omega, rate of change in concentration, for each species virtual scalarField omega diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModelI.H b/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModelI.H index 4fb0ee5a6d..f0097c4fbf 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModelI.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/ODEChemistryModel/ODEChemistryModelI.H @@ -26,57 +26,59 @@ License #include "zeroGradientFvPatchFields.H" -template +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template inline Foam::PtrList& -Foam::ODEChemistryModel::RR() +Foam::ODEChemistryModel::RR() { return RR_; } -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -template +template inline const Foam::PtrList >& -Foam::ODEChemistryModel::reactions() const +Foam::ODEChemistryModel::reactions() const { return reactions_; } -template +template inline const Foam::PtrList& -Foam::ODEChemistryModel::specieThermo() const +Foam::ODEChemistryModel::specieThermo() const { return specieThermo_; } -template -inline Foam::label Foam::ODEChemistryModel::nSpecie() const +template +inline Foam::label +Foam::ODEChemistryModel::nSpecie() const { return nSpecie_; } -template -inline Foam::label Foam::ODEChemistryModel::nReaction() const +template +inline Foam::label +Foam::ODEChemistryModel::nReaction() const { return nReaction_; } -template -inline const Foam::chemistrySolver& -Foam::ODEChemistryModel::solver() const +template +inline const Foam::chemistrySolver& +Foam::ODEChemistryModel::solver() const { return solver_; } -template +template inline Foam::tmp -Foam::ODEChemistryModel::RR +Foam::ODEChemistryModel::RR ( const label i ) const @@ -99,7 +101,7 @@ Foam::ODEChemistryModel::RR ) ); - if (chemistry_) + if (this->chemistry_) { tRR().internalField() = RR_[i]; tRR().correctBoundaryConditions(); diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.C similarity index 81% rename from src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C rename to src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.C index 47181a4d06..13364e9ee0 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.C +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.C @@ -24,21 +24,13 @@ License \*---------------------------------------------------------------------------*/ -#include "chemistryModel.H" +#include "basicChemistryModel.H" #include "fvMesh.H" #include "Time.H" -/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ - -namespace Foam -{ - defineTypeNameAndDebug(chemistryModel, 0); - defineRunTimeSelectionTable(chemistryModel, fvMesh); -} - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::chemistryModel::chemistryModel(const fvMesh& mesh) +Foam::basicChemistryModel::basicChemistryModel(const fvMesh& mesh) : IOdictionary ( @@ -52,7 +44,6 @@ Foam::chemistryModel::chemistryModel(const fvMesh& mesh) ) ), mesh_(mesh), - thermo_(hCombustionThermo::New(mesh)), chemistry_(lookup("chemistry")), deltaTChem_ ( @@ -60,13 +51,13 @@ Foam::chemistryModel::chemistryModel(const fvMesh& mesh) readScalar(lookup("initialChemicalTimeStep")) ) { - Info<< "chemistryModel(const fvMesh&)" << endl; + Info<< "basicChemistryModel(const fvMesh&)" << endl; } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::chemistryModel::~chemistryModel() +Foam::basicChemistryModel::~basicChemistryModel() {} diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.H b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.H similarity index 75% rename from src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.H rename to src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.H index 91b5186da4..1700bb4fd5 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModel.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModel.H @@ -23,28 +23,24 @@ License Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Class - Foam::chemistryModel + Foam::basicChemistryModel Description - Foam::chemistryModel + Base class for chemistry models SourceFiles - chemistryModelI.H - chemistryModel.C - newChemistryModel.C + basicChemistryModelI.H + basicChemistryModel.C \*---------------------------------------------------------------------------*/ -#ifndef chemistryModel_H -#define chemistryModel_H +#ifndef basicChemistryModel_H +#define basicChemistryModel_H #include "IOdictionary.H" #include "Switch.H" #include "scalarField.H" -#include "autoPtr.H" -#include "runTimeSelectionTables.H" -#include "hCombustionThermo.H" -//#include "basicMultiComponentMixture.H" +#include "volFieldsFwd.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -55,20 +51,20 @@ namespace Foam class fvMesh; /*---------------------------------------------------------------------------*\ - class chemistryModel Declaration + class basicChemistryModel Declaration \*---------------------------------------------------------------------------*/ -class chemistryModel +class basicChemistryModel : public IOdictionary { // Private Member Functions //- Construct as copy (not implemented) - chemistryModel(const chemistryModel&); + basicChemistryModel(const basicChemistryModel&); //- Disallow default bitwise assignment - void operator=(const chemistryModel&); + void operator=(const basicChemistryModel&); protected: @@ -78,9 +74,6 @@ protected: //- Reference to the mesh database const fvMesh& mesh_; - //- Thermo package - autoPtr thermo_; - //- Chemistry activation switch Switch chemistry_; @@ -98,33 +91,17 @@ protected: public: //- Runtime type information - TypeName("chemistryModel"); - - - //- Declare run-time constructor selection tables - declareRunTimeSelectionTable - ( - autoPtr, - chemistryModel, - fvMesh, - ( - const fvMesh& mesh - ), - (mesh) - ); + TypeName("basicChemistryModel"); // Constructors //- Construct from mesh - chemistryModel(const fvMesh& mesh); + basicChemistryModel(const fvMesh& mesh); - //- Selector - static autoPtr New(const fvMesh& mesh); - //- Destructor - virtual ~chemistryModel(); + virtual ~basicChemistryModel(); // Member Functions @@ -132,12 +109,6 @@ public: //- Return const access to the mesh database inline const fvMesh& mesh() const; - //- Return access to the thermo package - inline hCombustionThermo& thermo(); - - //- Return const access to the thermo package - inline const hCombustionThermo& thermo() const; - //- Chemistry activation switch inline Switch chemistry() const; @@ -173,7 +144,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#include "chemistryModelI.H" +#include "basicChemistryModelI.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModelI.H b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModelI.H similarity index 76% rename from src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModelI.H rename to src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModelI.H index d37b4afc80..45b5e3e77c 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModelI.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/basicChemistryModelI.H @@ -26,37 +26,25 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -inline const Foam::fvMesh& Foam::chemistryModel::mesh() const +inline const Foam::fvMesh& Foam::basicChemistryModel::mesh() const { return mesh_; } -inline Foam::hCombustionThermo& Foam::chemistryModel::thermo() -{ - return thermo_(); -} - - -inline const Foam::hCombustionThermo& Foam::chemistryModel::thermo() const -{ - return thermo_(); -} - - -inline Foam::Switch Foam::chemistryModel::chemistry() const +inline Foam::Switch Foam::basicChemistryModel::chemistry() const { return chemistry_; } -inline const Foam::scalarField& Foam::chemistryModel::deltaTChem() const +inline const Foam::scalarField& Foam::basicChemistryModel::deltaTChem() const { return deltaTChem_; } -inline Foam::scalarField& Foam::chemistryModel::deltaTChem() +inline Foam::scalarField& Foam::basicChemistryModel::deltaTChem() { return deltaTChem_; } diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/makeChemistryModel.H b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/makeChemistryModel.H similarity index 84% rename from src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/makeChemistryModel.H rename to src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/makeChemistryModel.H index c042ef7153..0d32b6a45d 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/makeChemistryModel.H +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/basicChemistryModel/makeChemistryModel.H @@ -23,17 +23,17 @@ License Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA InClass - Foam::chemistryModel + Foam::psiChemistryModel Description - Macros for instantiating chemistry models based on transport type + Macros for instantiating chemistry models based on compressibility and + transport types \*---------------------------------------------------------------------------*/ #ifndef makeChemistryModel_H #define makeChemistryModel_H -#include "chemistryModel.H" #include "addToRunTimeSelectionTable.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -43,21 +43,21 @@ namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#define makeChemistryModel(SS, Transport) \ +#define makeChemistryModel(SS, Comp, Thermo) \ \ -typedef SS SS##Transport; \ +typedef SS SS##Comp##Thermo; \ \ defineTemplateTypeNameAndDebugWithName \ ( \ - SS##Transport, \ - #SS"<"#Transport">", \ + SS##Comp##Thermo, \ + #SS"<"#Comp","#Thermo">", \ 0 \ ); \ \ addToRunTimeSelectionTable \ ( \ - chemistryModel, \ - SS##Transport, \ + Comp, \ + SS##Comp##Thermo, \ fvMesh \ ); diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/newChemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/newPsiChemistryModel.C similarity index 76% rename from src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/newChemistryModel.C rename to src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/newPsiChemistryModel.C index 1197051acc..ad46e5b017 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/newChemistryModel.C +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/newPsiChemistryModel.C @@ -24,18 +24,16 @@ License \*---------------------------------------------------------------------------*/ -#include "chemistryModel.H" -#include "fvMesh.H" -#include "Time.H" +#include "psiChemistryModel.H" // * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // -Foam::autoPtr Foam::chemistryModel::New +Foam::autoPtr Foam::psiChemistryModel::New ( const fvMesh& mesh ) { - word chemistryModelType; + word psiChemistryModelType; // Enclose the creation of the chemistrtyProperties to ensure it is // deleted before the chemistrtyProperties is created otherwise the @@ -53,24 +51,25 @@ Foam::autoPtr Foam::chemistryModel::New ) ); - chemistryPropertiesDict.lookup("chemistryModel") >> chemistryModelType; + chemistryPropertiesDict.lookup("psiChemistryModel") >> + psiChemistryModelType; } - Info<< "Selecting chemistryModel " << chemistryModelType << endl; + Info<< "Selecting psiChemistryModel " << psiChemistryModelType << endl; fvMeshConstructorTable::iterator cstrIter = - fvMeshConstructorTablePtr_->find(chemistryModelType); + fvMeshConstructorTablePtr_->find(psiChemistryModelType); if (cstrIter == fvMeshConstructorTablePtr_->end()) { - FatalErrorIn("chemistryModelBase::New(const mesh&)") - << "Unknown chemistryModel type " << chemistryModelType << nl << nl - << "Valid chemistryModel types are:" << nl + FatalErrorIn("psiChemistryModelBase::New(const mesh&)") + << "Unknown psiChemistryModel type " << psiChemistryModelType + << nl << nl << "Valid psiChemistryModel types are:" << nl << fvMeshConstructorTablePtr_->toc() << nl << exit(FatalError); } - return autoPtr(cstrIter()(mesh)); + return autoPtr(cstrIter()(mesh)); } diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModel.C b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModel.C new file mode 100644 index 0000000000..681616365d --- /dev/null +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModel.C @@ -0,0 +1,54 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "psiChemistryModel.H" +#include "fvMesh.H" +#include "Time.H" + +/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ + +namespace Foam +{ + defineTypeNameAndDebug(psiChemistryModel, 0); + defineRunTimeSelectionTable(psiChemistryModel, fvMesh); +} + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::psiChemistryModel::psiChemistryModel(const fvMesh& mesh) +: + basicChemistryModel(mesh), + thermo_(hCombustionThermo::New(mesh)) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::psiChemistryModel::~psiChemistryModel() +{} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModel.H b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModel.H new file mode 100644 index 0000000000..b8e3ce5079 --- /dev/null +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModel.H @@ -0,0 +1,134 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::psiChemistryModel + +Description + Chemistry model for compressibility-based thermodynamics + +SourceFiles + psiChemistryModelI.H + psiChemistryModel.C + newChemistryModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef psiChemistryModel_H +#define psiChemistryModel_H + +#include "basicChemistryModel.H" +#include "autoPtr.H" +#include "runTimeSelectionTables.H" +#include "hCombustionThermo.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// Forward declaration of classes +class fvMesh; + +/*---------------------------------------------------------------------------*\ + class psiChemistryModel Declaration +\*---------------------------------------------------------------------------*/ + +class psiChemistryModel +: + public basicChemistryModel +{ + // Private Member Functions + + //- Construct as copy (not implemented) + psiChemistryModel(const psiChemistryModel&); + + //- Disallow default bitwise assignment + void operator=(const psiChemistryModel&); + + +protected: + + // Protected data + + //- Thermo package + autoPtr thermo_; + + +public: + + //- Runtime type information + TypeName("psiChemistryModel"); + + + //- Declare run-time constructor selection tables + declareRunTimeSelectionTable + ( + autoPtr, + psiChemistryModel, + fvMesh, + ( + const fvMesh& mesh + ), + (mesh) + ); + + + // Constructors + + //- Construct from mesh + psiChemistryModel(const fvMesh& mesh); + + + //- Selector + static autoPtr New(const fvMesh& mesh); + + + //- Destructor + virtual ~psiChemistryModel(); + + + // Member Functions + + //- Return access to the thermo package + inline hCombustionThermo& thermo(); + + //- Return const access to the thermo package + inline const hCombustionThermo& thermo() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "psiChemistryModelI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModelI.H b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModelI.H new file mode 100644 index 0000000000..ce98c539e3 --- /dev/null +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModelI.H @@ -0,0 +1,41 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +inline Foam::hCombustionThermo& Foam::psiChemistryModel::thermo() +{ + return thermo_(); +} + + +inline const Foam::hCombustionThermo& Foam::psiChemistryModel::thermo() const +{ + return thermo_(); +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModels.C b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModels.C similarity index 84% rename from src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModels.C rename to src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModels.C index 2a2ccc2994..711f308a66 100644 --- a/src/thermophysicalModels/chemistryModel/chemistryModel/chemistryModel/chemistryModels.C +++ b/src/thermophysicalModels/chemistryModel/chemistryModel/psiChemistryModel/psiChemistryModels.C @@ -23,23 +23,35 @@ License Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA InClass - Foam::chemistryModel + Foam::psiChemistryModel Description Creates chemistry model instances templated on the type of thermodynamics \*---------------------------------------------------------------------------*/ -#include "thermoPhysicsTypes.H" #include "makeChemistryModel.H" + +#include "psiChemistryModel.H" #include "ODEChemistryModel.H" +#include "thermoPhysicsTypes.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { - makeChemistryModel(ODEChemistryModel, gasThermoPhysics); - makeChemistryModel(ODEChemistryModel, icoPoly8ThermoPhysics); + makeChemistryModel + ( + ODEChemistryModel, + psiChemistryModel, + gasThermoPhysics + ); + makeChemistryModel + ( + ODEChemistryModel, + psiChemistryModel, + icoPoly8ThermoPhysics + ); } // ************************************************************************* // diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.C b/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.C index 5699a75f78..1290f23438 100644 --- a/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.C +++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.C @@ -30,13 +30,13 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -Foam::EulerImplicit::EulerImplicit +template +Foam::EulerImplicit::EulerImplicit ( - ODEChemistryModel& model + ODEChemistryModel& model ) : - chemistrySolver(model), + chemistrySolver(model), coeffsDict_(model.subDict(typeName + "Coeffs")), cTauChem_(readScalar(coeffsDict_.lookup("cTauChem"))), equil_(coeffsDict_.lookup("equilibriumRateLimiter")) @@ -45,15 +45,15 @@ Foam::EulerImplicit::EulerImplicit // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -Foam::EulerImplicit::~EulerImplicit() +template +Foam::EulerImplicit::~EulerImplicit() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template -Foam::scalar Foam::EulerImplicit::solve +template +Foam::scalar Foam::EulerImplicit::solve ( scalarField &c, const scalar T, diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.H b/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.H index 45fbb131b6..414fb85b42 100644 --- a/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.H +++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/EulerImplicit/EulerImplicit.H @@ -43,14 +43,18 @@ SourceFiles namespace Foam { +// Forward declaration of classes +template +class EulerImplicit; + /*---------------------------------------------------------------------------*\ Class EulerImplicit Declaration \*---------------------------------------------------------------------------*/ -template +template class EulerImplicit : - public chemistrySolver + public chemistrySolver { // Private data @@ -71,7 +75,7 @@ public: // Constructors //- Construct from components - EulerImplicit(ODEChemistryModel& chemistry); + EulerImplicit(ODEChemistryModel& chemistry); //- Destructor diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.C b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.C index 23dbfcd033..c0a24a1019 100644 --- a/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.C +++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.C @@ -31,10 +31,10 @@ namespace Foam // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -Foam::chemistrySolver::chemistrySolver +template +Foam::chemistrySolver::chemistrySolver ( - ODEChemistryModel& model + ODEChemistryModel& model ) : model_(model) @@ -43,8 +43,8 @@ Foam::chemistrySolver::chemistrySolver // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -Foam::chemistrySolver::~chemistrySolver() +template +Foam::chemistrySolver::~chemistrySolver() {} diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.H b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.H index b21b692b91..ff133123c7 100644 --- a/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.H +++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.H @@ -26,7 +26,7 @@ Class Foam::chemistrySolver Description - An abstract class for solving chemistry + An abstract base class for solving chemistry SourceFiles chemistrySolver.C @@ -47,11 +47,15 @@ SourceFiles namespace Foam { +// Forward declaration of classes +template +class chemistrySolver; + /*---------------------------------------------------------------------------*\ Class chemistrySolver Declaration \*---------------------------------------------------------------------------*/ -template +template class chemistrySolver { protected: @@ -59,7 +63,7 @@ protected: // Protected data //- Reference to the chemistry model - ODEChemistryModel& model_; + ODEChemistryModel& model_; public: @@ -75,7 +79,7 @@ public: chemistrySolver, dictionary, ( - ODEChemistryModel& model + ODEChemistryModel& model ), (model) ); @@ -84,13 +88,13 @@ public: // Constructors //- Construct from components - chemistrySolver(ODEChemistryModel& model); + chemistrySolver(ODEChemistryModel& model); //- Selector static autoPtr New ( - ODEChemistryModel& model + ODEChemistryModel& model ); @@ -118,23 +122,39 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#define makeChemistrySolver(Thermo) \ +#define makeChemistrySolver(Comp, Thermo) \ \ -defineTemplateTypeNameAndDebug \ -( \ - chemistrySolver, \ - 0 \ -); \ + typedef chemistrySolver \ + chemistrySolver##Comp##Thermo; \ \ -defineTemplateRunTimeSelectionTable(chemistrySolver, dictionary); + defineTemplateTypeNameAndDebugWithName \ + ( \ + chemistrySolver##Comp##Thermo, \ + "chemistryModel<"#Comp","#Thermo">", \ + 0 \ + ); \ + \ + defineTemplateRunTimeSelectionTable \ + ( \ + chemistrySolver##Comp##Thermo, \ + dictionary \ + ); -#define makeChemistrySolverType(SS, Thermo) \ +#define makeChemistrySolverType(SS, Comp, Thermo) \ \ - defineNamedTemplateTypeNameAndDebug(SS, 0); \ + typedef SS SS##Comp##Thermo; \ \ - chemistrySolver::adddictionaryConstructorToTable > \ - add##SS##Thermo##ConstructorToTable_; + defineTemplateTypeNameAndDebugWithName \ + ( \ + SS##Comp##Thermo, \ + #SS"<"#Comp","#Thermo">", \ + 0 \ + ); \ + \ + chemistrySolver:: \ + adddictionaryConstructorToTable > \ + add##SS##Comp##Thermo##ConstructorToTable_; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/makeChemistrySolvers.C b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/makeChemistrySolvers.C index 9bfa6c50a2..dd316e4444 100644 --- a/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/makeChemistrySolvers.C +++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/makeChemistrySolvers.C @@ -27,6 +27,9 @@ License #include "thermoPhysicsTypes.H" #include "chemistrySolver.H" +#include "psiChemistryModel.H" +//#include "rhoChemistryModel.H" + #include "EulerImplicit.H" #include "ode.H" #include "sequential.H" @@ -35,15 +38,26 @@ License namespace Foam { - makeChemistrySolver(gasThermoPhysics) - makeChemistrySolverType(EulerImplicit, gasThermoPhysics) - makeChemistrySolverType(ode, gasThermoPhysics) - makeChemistrySolverType(sequential, gasThermoPhysics) + makeChemistrySolver(psiChemistryModel, gasThermoPhysics) + makeChemistrySolverType(EulerImplicit, psiChemistryModel, gasThermoPhysics) + makeChemistrySolverType(ode, psiChemistryModel, gasThermoPhysics) + makeChemistrySolverType(sequential, psiChemistryModel, gasThermoPhysics) - makeChemistrySolver(icoPoly8ThermoPhysics) - makeChemistrySolverType(EulerImplicit, icoPoly8ThermoPhysics) - makeChemistrySolverType(ode, icoPoly8ThermoPhysics) - makeChemistrySolverType(sequential, icoPoly8ThermoPhysics) + makeChemistrySolver(psiChemistryModel, icoPoly8ThermoPhysics) + makeChemistrySolverType + ( + EulerImplicit, + psiChemistryModel, + icoPoly8ThermoPhysics + ) + makeChemistrySolverType(ode, psiChemistryModel, icoPoly8ThermoPhysics) + makeChemistrySolverType + ( + sequential, + psiChemistryModel, + icoPoly8ThermoPhysics + ) } + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/newChemistrySolver.C b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/newChemistrySolver.C index f868fd3055..43273dba2b 100644 --- a/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/newChemistrySolver.C +++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/newChemistrySolver.C @@ -28,14 +28,14 @@ License // * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // -template -Foam::autoPtr > -Foam::chemistrySolver::New +template +Foam::autoPtr > +Foam::chemistrySolver::New ( - ODEChemistryModel& model + ODEChemistryModel& model ) { - word chemistrySolverType(model.chemistryModel::lookup("chemistrySolver")); + word chemistrySolverType(model.CompType::lookup("chemistrySolver")); typename dictionaryConstructorTable::iterator cstrIter = dictionaryConstructorTablePtr_->find(chemistrySolverType); @@ -52,7 +52,7 @@ Foam::chemistrySolver::New << exit(FatalError); } - return autoPtr >(cstrIter()(model)); + return autoPtr >(cstrIter()(model)); } diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/ode/ode.C b/src/thermophysicalModels/chemistryModel/chemistrySolver/ode/ode.C index 946567477f..803c588461 100644 --- a/src/thermophysicalModels/chemistryModel/chemistrySolver/ode/ode.C +++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/ode/ode.C @@ -29,10 +29,13 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -Foam::ode::ode(ODEChemistryModel& model) +template +Foam::ode::ode +( + ODEChemistryModel& model +) : - chemistrySolver(model), + chemistrySolver(model), coeffsDict_(model.subDict(typeName + "Coeffs")), solverName_(coeffsDict_.lookup("ODESolver")), odeSolver_(ODESolver::New(solverName_, model)), @@ -43,15 +46,15 @@ Foam::ode::ode(ODEChemistryModel& model) // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -Foam::ode::~ode() +template +Foam::ode::~ode() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template -Foam::scalar Foam::ode::solve +template +Foam::scalar Foam::ode::solve ( scalarField& c, const scalar T, diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/ode/ode.H b/src/thermophysicalModels/chemistryModel/chemistrySolver/ode/ode.H index 9a09f4bbf7..8318b0bc3d 100644 --- a/src/thermophysicalModels/chemistryModel/chemistrySolver/ode/ode.H +++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/ode/ode.H @@ -44,14 +44,18 @@ SourceFiles namespace Foam { +// Forward declaration of classes +template +class ode; + /*---------------------------------------------------------------------------*\ Class ode Declaration \*---------------------------------------------------------------------------*/ -template +template class ode : - public chemistrySolver + public chemistrySolver { // Private data @@ -74,7 +78,7 @@ public: // Constructors //- Construct from components - ode(ODEChemistryModel& model); + ode(ODEChemistryModel& model); //- Destructor diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/sequential/sequential.C b/src/thermophysicalModels/chemistryModel/chemistrySolver/sequential/sequential.C index 6266ea32f0..aee8a25bf2 100644 --- a/src/thermophysicalModels/chemistryModel/chemistrySolver/sequential/sequential.C +++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/sequential/sequential.C @@ -29,10 +29,13 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -Foam::sequential::sequential(ODEChemistryModel& model) +template +Foam::sequential::sequential +( + ODEChemistryModel& model +) : - chemistrySolver(model), + chemistrySolver(model), coeffsDict_(model.subDict(typeName + "Coeffs")), cTauChem_(readScalar(coeffsDict_.lookup("cTauChem"))), equil_(coeffsDict_.lookup("equilibriumRateLimiter")) @@ -41,15 +44,15 @@ Foam::sequential::sequential(ODEChemistryModel& model) // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -Foam::sequential::~sequential() +template +Foam::sequential::~sequential() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template -Foam::scalar Foam::sequential::solve +template +Foam::scalar Foam::sequential::solve ( scalarField &c, const scalar T, diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/sequential/sequential.H b/src/thermophysicalModels/chemistryModel/chemistrySolver/sequential/sequential.H index e7668b5214..276d7d5341 100644 --- a/src/thermophysicalModels/chemistryModel/chemistrySolver/sequential/sequential.H +++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/sequential/sequential.H @@ -45,14 +45,18 @@ SourceFiles namespace Foam { +// Forward declaration of classes +template +class sequential; + /*---------------------------------------------------------------------------*\ Class sequential Declaration \*---------------------------------------------------------------------------*/ -template +template class sequential : - public chemistrySolver + public chemistrySolver { // Private data @@ -74,7 +78,7 @@ public: //- Construct from components - sequential(ODEChemistryModel& model); + sequential(ODEChemistryModel& model); //- Destructor