diff --git a/src/thermophysicalModels/reactionThermo/mixtures/singleComponentMixture/singleComponentMixture.C b/src/thermophysicalModels/reactionThermo/mixtures/singleComponentMixture/singleComponentMixture.C new file mode 100644 index 000000000..8b8672650 --- /dev/null +++ b/src/thermophysicalModels/reactionThermo/mixtures/singleComponentMixture/singleComponentMixture.C @@ -0,0 +1,65 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenFOAM Foundation + \\/ 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 3 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, see . + +\*---------------------------------------------------------------------------*/ + +#include "singleComponentMixture.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template +Foam::singleComponentMixture::singleComponentMixture +( + const dictionary& thermoDict, + const fvMesh& mesh, + const word& phaseName +) +: + basicSpecieMixture(thermoDict, wordList::null(), mesh, phaseName), + thermo_(thermoDict.subDict("mixture")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template +Foam::singleComponentMixture::~singleComponentMixture() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template +void Foam::singleComponentMixture::read +( + const dictionary& thermoDict +) +{ + thermo_ = ThermoType(thermoDict.subDict("mixture")); +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/reactionThermo/mixtures/singleComponentMixture/singleComponentMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/singleComponentMixture/singleComponentMixture.H new file mode 100644 index 000000000..9456ff16d --- /dev/null +++ b/src/thermophysicalModels/reactionThermo/mixtures/singleComponentMixture/singleComponentMixture.H @@ -0,0 +1,150 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenFOAM Foundation + \\/ 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 3 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, see . + +Class + Foam::singleComponentMixture + +Description + Single component mixture + +SourceFiles + singleComponentMixture.C + +\*---------------------------------------------------------------------------*/ + +#ifndef singleComponentMixture_H +#define singleComponentMixture_H + +#include "basicSpecieMixture.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class singleComponentMixture Declaration +\*---------------------------------------------------------------------------*/ + +template +class singleComponentMixture +: + public basicSpecieMixture +{ + // Private data + + //- Thermo model + ThermoType thermo_; + + +public: + + //- The type of thermodynamics this mixture is instantiated for + typedef ThermoType thermoType; + + + // Constructors + + //- Construct from dictionary, mesh and phase name + singleComponentMixture(const dictionary&, const fvMesh&, const word&); + + + //- Destructor + virtual ~singleComponentMixture(); + + + // Member Functions + + //- Get the mixture for the given cell + const ThermoType& cellMixture(const label celli) const + { + return thermo_; + } + + //- Get the mixture for the given patch face + const ThermoType& patchFaceMixture + ( + const label patchi, + const label facei + ) const + { + return thermo_; + } + + //- Get the volumetric mixture for the given cell + const ThermoType& cellVolMixture + ( + const scalar p, + const scalar T, + const label celli + ) + { + return thermo_; + } + + //- Get the volumetric mixture for the given patch face + const ThermoType& patchFaceVolMixture + ( + const scalar p, + const scalar T, + const label patchi, + const label facei + ) const + { + return thermo_; + } + + //- Read dictionary + void read(const dictionary&); + + //- Return thermo based on index + inline const ThermoType& getLocalThermo(const label speciei) const + { + #ifdef FULLDEBUG + if (speciei != 0) + { + FatalErrorInFunction + << "Specie index must be zero for a single component " + << "mixture" << exit(FatalError); + } + #endif + return thermo_; + } +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "singleComponentMixture.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/reactionThermo/psiReactionThermo/psiReactionThermos.C b/src/thermophysicalModels/reactionThermo/psiReactionThermo/psiReactionThermos.C index 015c0118e..8bb0bed91 100644 --- a/src/thermophysicalModels/reactionThermo/psiReactionThermo/psiReactionThermos.C +++ b/src/thermophysicalModels/reactionThermo/psiReactionThermo/psiReactionThermos.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,6 +43,7 @@ License #include "multiComponentMixture.H" #include "reactingMixture.H" #include "singleStepReactingMixture.H" +#include "singleComponentMixture.H" #include "thermoPhysicsTypes.H" @@ -178,6 +179,7 @@ makeReactionThermo specie ); +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Multi-component thermo for sensible enthalpy @@ -221,7 +223,7 @@ makeReactionMixtureThermo ); -// Multi-component reaction thermo for sensible enthalpy +// Reaction thermo for sensible enthalpy makeReactionMixtureThermo ( @@ -241,6 +243,9 @@ makeReactionMixtureThermo gasHThermoPhysics ); + +// Single-step reaction thermo for sensible enthalpy + makeReactionMixtureThermo ( psiThermo, @@ -251,7 +256,7 @@ makeReactionMixtureThermo ); -// Multi-component reaction thermo for internal energy +// Reaction thermo for internal energy makeReactionMixtureThermo ( @@ -271,6 +276,9 @@ makeReactionMixtureThermo gasEThermoPhysics ); + +// Single-step reaction thermo for internal energy + makeReactionMixtureThermo ( psiThermo, @@ -280,6 +288,48 @@ makeReactionMixtureThermo gasEThermoPhysics ); + +// Single-component thermo for sensible enthalpy + +makeReactionMixtureThermo +( + psiThermo, + psiReactionThermo, + hePsiThermo, + singleComponentMixture, + constGasHThermoPhysics +); + +makeReactionMixtureThermo +( + psiThermo, + psiReactionThermo, + hePsiThermo, + singleComponentMixture, + gasHThermoPhysics +); + + +// Single-component thermo for internal energy + +makeReactionMixtureThermo +( + psiThermo, + psiReactionThermo, + hePsiThermo, + singleComponentMixture, + constGasEThermoPhysics +); + +makeReactionMixtureThermo +( + psiThermo, + psiReactionThermo, + hePsiThermo, + singleComponentMixture, + gasEThermoPhysics +); + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/reactionThermo/rhoReactionThermo/rhoReactionThermos.C b/src/thermophysicalModels/reactionThermo/rhoReactionThermo/rhoReactionThermos.C index a7431ca20..8e06b1ed0 100644 --- a/src/thermophysicalModels/reactionThermo/rhoReactionThermo/rhoReactionThermos.C +++ b/src/thermophysicalModels/reactionThermo/rhoReactionThermo/rhoReactionThermos.C @@ -45,6 +45,7 @@ License #include "multiComponentMixture.H" #include "reactingMixture.H" #include "singleStepReactingMixture.H" +#include "singleComponentMixture.H" #include "thermoPhysicsTypes.H" @@ -212,6 +213,7 @@ makeReactionThermo specie ); +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Multi-component thermo for internal energy @@ -261,7 +263,7 @@ makeReactionMixtureThermo ); -// Multi-component reaction thermo +// Reaction thermo for internal energy makeReactionMixtureThermo ( @@ -308,6 +310,9 @@ makeReactionMixtureThermo icoPoly8EThermoPhysics ); + +// Single-step reaction thermo for internal energy + makeReactionMixtureThermo ( rhoThermo, @@ -318,6 +323,54 @@ makeReactionMixtureThermo ); +// Single-component thermo for internal energy + +makeReactionMixtureThermo +( + rhoThermo, + rhoReactionThermo, + heRhoThermo, + singleComponentMixture, + constGasEThermoPhysics +); + +makeReactionMixtureThermo +( + rhoThermo, + rhoReactionThermo, + heRhoThermo, + singleComponentMixture, + gasEThermoPhysics +); + +makeReactionMixtureThermo +( + rhoThermo, + rhoReactionThermo, + heRhoThermo, + singleComponentMixture, + constIncompressibleGasEThermoPhysics +); + +makeReactionMixtureThermo +( + rhoThermo, + rhoReactionThermo, + heRhoThermo, + singleComponentMixture, + incompressibleGasEThermoPhysics +); + +makeReactionMixtureThermo +( + rhoThermo, + rhoReactionThermo, + heRhoThermo, + singleComponentMixture, + icoPoly8EThermoPhysics +); + + // Multi-component thermo for sensible enthalpy makeReactionMixtureThermo @@ -366,7 +419,7 @@ makeReactionMixtureThermo ); -// Multi-component reaction thermo +// Reaction thermo for sensible enthalpy makeReactionMixtureThermo ( @@ -413,6 +466,9 @@ makeReactionMixtureThermo icoPoly8HThermoPhysics ); + +// Single-step reaction thermo for sensible enthalpy + makeReactionMixtureThermo ( rhoThermo, @@ -423,6 +479,53 @@ makeReactionMixtureThermo ); +// Single-component thermo for sensible enthalpy + +makeReactionMixtureThermo +( + rhoThermo, + rhoReactionThermo, + heRhoThermo, + singleComponentMixture, + constGasHThermoPhysics +); + +makeReactionMixtureThermo +( + rhoThermo, + rhoReactionThermo, + heRhoThermo, + singleComponentMixture, + gasHThermoPhysics +); + +makeReactionMixtureThermo +( + rhoThermo, + rhoReactionThermo, + heRhoThermo, + singleComponentMixture, + constIncompressibleGasHThermoPhysics +); + +makeReactionMixtureThermo +( + rhoThermo, + rhoReactionThermo, + heRhoThermo, + singleComponentMixture, + incompressibleGasHThermoPhysics +); + +makeReactionMixtureThermo +( + rhoThermo, + rhoReactionThermo, + heRhoThermo, + singleComponentMixture, + icoPoly8HThermoPhysics +); + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam