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