From 2005f3ab0a794b645787bf5be2d5d34a17662766 Mon Sep 17 00:00:00 2001 From: andy <andy> Date: Fri, 18 Feb 2011 17:52:34 +0000 Subject: [PATCH] BUG: Corrected chemistry reactions - read from dictionary --- .../reaction/Reactions/Reaction/Reaction.C | 21 +++++++++++++++++-- .../reaction/Reactions/Reaction/Reaction.H | 17 ++++++++++++++- .../reaction/Reactions/Reaction/ReactionI.H | 16 +++++++++++++- .../Reactions/ReactionList/ReactionList.C | 9 +++++--- .../ras/counterFlowFlame2D/constant/reactions | 3 ++- .../simplifiedSiwek/constant/foam.inp | 6 ++++-- .../counterFlowFlame2D/constant/reactions | 5 +++-- 7 files changed, 65 insertions(+), 12 deletions(-) diff --git a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.C b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.C index 1c8326e61c3..a9cc3650b5a 100644 --- a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.C +++ b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -26,8 +26,21 @@ License #include "Reaction.H" #include "DynamicList.H" +// * * * * * * * * * * * * * * * * Static Data * * * * * * * * * * * * * * * // + +template<class ReactionThermo> +Foam::label Foam::Reaction<ReactionThermo>::nUnNamedReactions = 0; + + // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // +template<class ReactionThermo> +Foam::label Foam::Reaction<ReactionThermo>::getNewReactionID() +{ + return nUnNamedReactions++; +} + + template<class ReactionThermo> Foam::string Foam::Reaction<ReactionThermo>::reactionStr() const { @@ -114,6 +127,7 @@ Foam::Reaction<ReactionThermo>::Reaction ) : ReactionThermo(*thermoDatabase[species[0]]), + name_("un-named-reaction-" + Foam::name(getNewReactionID())), species_(species), lhs_(lhs), rhs_(rhs) @@ -130,6 +144,7 @@ Foam::Reaction<ReactionThermo>::Reaction ) : ReactionThermo(r), + name_(r.name() + "Copy"), species_(species), lhs_(r.lhs_), rhs_(r.rhs_) @@ -236,6 +251,7 @@ Foam::Reaction<ReactionThermo>::Reaction ) : ReactionThermo(*thermoDatabase[species[0]]), + name_("un-named-reaction" + Foam::name(getNewReactionID())), species_(species) { setLRhs(is); @@ -252,6 +268,7 @@ Foam::Reaction<ReactionThermo>::Reaction ) : ReactionThermo(*thermoDatabase[species[0]]), + name_(dict.dictName()), species_(species) { setLRhs(IStringStream(dict.lookup("reaction"))()); @@ -318,7 +335,7 @@ Foam::Reaction<ReactionThermo>::New const dictionary& dict ) { - const word& reactionTypeName = dict.dictName(); + const word& reactionTypeName = dict.lookup("type"); typename dictionaryConstructorTable::iterator cstrIter = dictionaryConstructorTablePtr_->find(reactionTypeName); diff --git a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.H b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.H index cc6e0efac31..da39eebbfe3 100644 --- a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.H +++ b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -69,6 +69,12 @@ class Reaction public: + // Static data + + //- Number of un-named reactions + static label nUnNamedReactions; + + // Public data types //- Class to hold the specie index and its coefficients in the @@ -112,6 +118,9 @@ private: // Private data + //- Name of reaction + const word name_; + //- List of specie names present in reaction system const speciesTable& species_; @@ -136,6 +145,9 @@ private: //- Disallow default bitwise assignment void operator=(const Reaction<ReactionThermo>&); + //- Return new reaction ID for un-named reactions + label getNewReactionID(); + public: @@ -282,6 +294,9 @@ public: // Access + inline word& name(); + inline const word& name() const; + inline const List<specieCoeffs>& lhs() const; inline const List<specieCoeffs>& rhs() const; diff --git a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/ReactionI.H b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/ReactionI.H index c209910b1e5..b981311ddda 100644 --- a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/ReactionI.H +++ b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/ReactionI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,6 +32,20 @@ namespace Foam // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +template<class ReactionThermo> +inline word& Reaction<ReactionThermo>::name() +{ + return name(); +} + + +template<class ReactionThermo> +inline const word& Reaction<ReactionThermo>::name() const +{ + return name(); +} + + template<class ReactionThermo> inline const List<typename Reaction<ReactionThermo>::specieCoeffs>& Reaction<ReactionThermo>::lhs() const diff --git a/src/thermophysicalModels/specie/reaction/Reactions/ReactionList/ReactionList.C b/src/thermophysicalModels/specie/reaction/Reactions/ReactionList/ReactionList.C index 52b2984114b..1758c213708 100644 --- a/src/thermophysicalModels/specie/reaction/Reactions/ReactionList/ReactionList.C +++ b/src/thermophysicalModels/specie/reaction/Reactions/ReactionList/ReactionList.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2010-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2010-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -105,13 +105,15 @@ bool Foam::ReactionList<ThermoType>::readReactionDict() forAllConstIter(dictionary, reactions, iter) { + const word reactionName = iter().keyword(); + this->append ( Reaction<ThermoType>::New ( species_, thermoDb_, - reactions.subDict(iter().keyword()) + reactions.subDict(reactionName) ).ptr() ); } @@ -129,8 +131,9 @@ void Foam::ReactionList<ThermoType>::write(Ostream& os) const forAllConstIter(typename SLPtrList<Reaction<ThermoType> >, *this, iter) { const Reaction<ThermoType>& r = iter(); - os << indent << r.type() << nl + os << indent << r.name() << nl << indent << token::BEGIN_BLOCK << incrIndent << nl; + os.writeKeyword("type") << r.type() << nl; r.write(os); os << decrIndent << indent << token::END_BLOCK << nl; } diff --git a/tutorials/combustion/reactingFoam/ras/counterFlowFlame2D/constant/reactions b/tutorials/combustion/reactingFoam/ras/counterFlowFlame2D/constant/reactions index 5f5ae52ee2c..839b5e4e454 100644 --- a/tutorials/combustion/reactingFoam/ras/counterFlowFlame2D/constant/reactions +++ b/tutorials/combustion/reactingFoam/ras/counterFlowFlame2D/constant/reactions @@ -9,8 +9,9 @@ species reactions { - irreversibleArrheniusReaction + methaneReaction { + type irreversibleArrheniusReaction; reaction "CH4 + 2O2 = CO2 + 2H2O"; A 5.2e16; beta 0; diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/foam.inp b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/foam.inp index 931071dabe6..3bf043478b8 100644 --- a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/foam.inp +++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/foam.inp @@ -10,15 +10,17 @@ species reactions { - irreversibleArrheniusReaction + methaneReaction { + type irreversibleArrheniusReaction; reaction "CH4 + 2O2^1.0 = CO2 + 2H2O^1.0"; A 7e+06; beta 0; Ta 10063.8; } - irreversibleArrheniusReaction + hydrogenReaction { + type irreversibleArrheniusReaction; reaction "H2 + 0.5O2^1.0 = H2O"; A 4.74342e+12; beta 0; diff --git a/tutorials/lagrangian/steadyReactingParcelFoam/counterFlowFlame2D/constant/reactions b/tutorials/lagrangian/steadyReactingParcelFoam/counterFlowFlame2D/constant/reactions index f2aa545726a..e548bae90ff 100644 --- a/tutorials/lagrangian/steadyReactingParcelFoam/counterFlowFlame2D/constant/reactions +++ b/tutorials/lagrangian/steadyReactingParcelFoam/counterFlowFlame2D/constant/reactions @@ -9,11 +9,12 @@ species reactions { - irreversibleArrheniusReaction + methaneReaction { + type irreversibleArrheniusReaction; reaction "CH4 + 2O2 = CO2 + 2H2O"; A 5.2e16; beta 0; Ta 14906; } -} \ No newline at end of file +} -- GitLab