BUG: Corrected chemistry reactions - read from dictionary

This commit is contained in:
andy
2011-02-18 17:52:34 +00:00
parent b9dee2fdfa
commit 2005f3ab0a
7 changed files with 65 additions and 12 deletions

View File

@ -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);

View File

@ -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;

View File

@ -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

View File

@ -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;
}

View File

@ -9,8 +9,9 @@ species
reactions
{
irreversibleArrheniusReaction
methaneReaction
{
type irreversibleArrheniusReaction;
reaction "CH4 + 2O2 = CO2 + 2H2O";
A 5.2e16;
beta 0;

View File

@ -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;

View File

@ -9,8 +9,9 @@ species
reactions
{
irreversibleArrheniusReaction
methaneReaction
{
type irreversibleArrheniusReaction;
reaction "CH4 + 2O2 = CO2 + 2H2O";
A 5.2e16;
beta 0;