Skip to content
Snippets Groups Projects
Commit 86b9ed53 authored by sergio's avatar sergio
Browse files

BUG: Correcting writing of solidReaction and reaction

parent fe9f21fc
Branches
Tags
No related merge requests found
...@@ -137,8 +137,82 @@ gasSpecies() const ...@@ -137,8 +137,82 @@ gasSpecies() const
template<class ReactionThermo> template<class ReactionThermo>
void Foam::solidReaction<ReactionThermo>::write(Ostream& os) const void Foam::solidReaction<ReactionThermo>::write(Ostream& os) const
{ {
Reaction<ReactionThermo>::write(os); OStringStream reaction;
os.writeKeyword("reaction") << solidReactionStr(reaction)
<< token::END_STATEMENT << nl;
} }
template<class ReactionThermo>
Foam::string Foam::solidReaction<ReactionThermo>::solidReactionStr
(
OStringStream& reaction
) const
{
this->reactionStrLeft(reaction);
reaction << " + ";
solidReactionStrLeft(reaction);
reaction << " = ";
this->reactionStrRight(reaction);
reaction << " + ";
solidReactionStrRight(reaction);
return reaction.str();
}
template<class ReactionThermo>
void Foam::solidReaction<ReactionThermo>::solidReactionStrLeft
(
OStringStream& reaction
) const
{
for (label i = 0; i < glhs().size(); ++i)
{
reaction << " + ";
if (i > 0)
{
reaction << " + ";
}
if (mag(glhs()[i].stoichCoeff - 1) > SMALL)
{
reaction << glhs()[i].stoichCoeff;
}
reaction << gasSpecies()[glhs()[i].index];
if (mag(glhs()[i].exponent - glhs()[i].stoichCoeff) > SMALL)
{
reaction << "^" << glhs()[i].exponent;
}
}
}
template<class ReactionThermo>
void Foam::solidReaction<ReactionThermo>::solidReactionStrRight
(
OStringStream& reaction
) const
{
for (label i = 0; i < grhs().size(); ++i)
{
reaction << " + ";
if (i > 0)
{
reaction << " + ";
}
if (mag(grhs()[i].stoichCoeff - 1) > SMALL)
{
reaction << grhs()[i].stoichCoeff;
}
reaction << gasSpecies()[grhs()[i].index];
if (mag(grhs()[i].exponent - grhs()[i].stoichCoeff) > SMALL)
{
reaction << "^" << grhs()[i].exponent;
}
}
}
// ************************************************************************* // // ************************************************************************* //
...@@ -81,6 +81,15 @@ private: ...@@ -81,6 +81,15 @@ private:
// Private Member Functions // Private Member Functions
//- Return string representation of reaction
string solidReactionStr(OStringStream&) const;
//- Return string representation of the left of the reaction
void solidReactionStrLeft(OStringStream&) const;
//- Return string representation of the right of the reaction
void solidReactionStrRight(OStringStream&) const;
//- Disallow default bitwise assignment //- Disallow default bitwise assignment
void operator=(const solidReaction&); void operator=(const solidReaction&);
......
...@@ -39,7 +39,8 @@ inline Ostream& operator<< ...@@ -39,7 +39,8 @@ inline Ostream& operator<<
const solidReaction<ReactionThermo>& r const solidReaction<ReactionThermo>& r
) )
{ {
r.write(os); OStringStream reaction;
os << r.solidReactionStr(reaction)<< token::END_STATEMENT <<nl;
return os; return os;
} }
......
...@@ -31,21 +31,14 @@ License ...@@ -31,21 +31,14 @@ License
template<class ReactionThermo> template<class ReactionThermo>
Foam::label Foam::Reaction<ReactionThermo>::nUnNamedReactions = 0; Foam::label Foam::Reaction<ReactionThermo>::nUnNamedReactions = 0;
// * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * //
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
template<class ReactionThermo>
Foam::label Foam::Reaction<ReactionThermo>::getNewReactionID()
{
return nUnNamedReactions++;
}
template<class ReactionThermo> template<class ReactionThermo>
Foam::string Foam::Reaction<ReactionThermo>::reactionStr() const void Foam::Reaction<ReactionThermo>::reactionStrLeft
(
OStringStream& reaction
) const
{ {
OStringStream reaction;
for (label i = 0; i < lhs_.size(); ++i) for (label i = 0; i < lhs_.size(); ++i)
{ {
if (i > 0) if (i > 0)
...@@ -62,28 +55,15 @@ Foam::string Foam::Reaction<ReactionThermo>::reactionStr() const ...@@ -62,28 +55,15 @@ Foam::string Foam::Reaction<ReactionThermo>::reactionStr() const
reaction << "^" << lhs_[i].exponent; reaction << "^" << lhs_[i].exponent;
} }
} }
}
for (label i = 0; i < glhs().size(); ++i)
{
reaction << " + ";
if (i > 0)
{
reaction << " + ";
}
if (mag(glhs()[i].stoichCoeff - 1) > SMALL)
{
reaction << glhs()[i].stoichCoeff;
}
reaction << gasSpecies()[glhs()[i].index];
if (mag(glhs()[i].exponent - glhs()[i].stoichCoeff) > SMALL)
{
reaction << "^" << glhs()[i].exponent;
}
}
reaction << " = ";
template<class ReactionThermo>
void Foam::Reaction<ReactionThermo>::reactionStrRight
(
OStringStream& reaction
) const
{
for (label i = 0; i < rhs_.size(); ++i) for (label i = 0; i < rhs_.size(); ++i)
{ {
if (i > 0) if (i > 0)
...@@ -100,26 +80,27 @@ Foam::string Foam::Reaction<ReactionThermo>::reactionStr() const ...@@ -100,26 +80,27 @@ Foam::string Foam::Reaction<ReactionThermo>::reactionStr() const
reaction << "^" << rhs_[i].exponent; reaction << "^" << rhs_[i].exponent;
} }
} }
}
for (label i = 0; i < grhs().size(); ++i)
{
reaction << " + ";
if (i > 0) // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
{
reaction << " + "; template<class ReactionThermo>
} Foam::label Foam::Reaction<ReactionThermo>::getNewReactionID()
if (mag(grhs()[i].stoichCoeff - 1) > SMALL) {
{ return nUnNamedReactions++;
reaction << grhs()[i].stoichCoeff; }
}
reaction << gasSpecies()[grhs()[i].index];
if (mag(grhs()[i].exponent - grhs()[i].stoichCoeff) > SMALL)
{
reaction << "^" << grhs()[i].exponent;
}
}
template<class ReactionThermo>
Foam::string Foam::Reaction<ReactionThermo>::reactionStr
(
OStringStream& reaction
) const
{
reactionStrLeft(reaction);
reaction << " = ";
reactionStrRight(reaction);
return reaction.str(); return reaction.str();
} }
...@@ -464,7 +445,9 @@ Foam::Reaction<ReactionThermo>::New ...@@ -464,7 +445,9 @@ Foam::Reaction<ReactionThermo>::New
template<class ReactionThermo> template<class ReactionThermo>
void Foam::Reaction<ReactionThermo>::write(Ostream& os) const void Foam::Reaction<ReactionThermo>::write(Ostream& os) const
{ {
os.writeKeyword("reaction") << reactionStr() << token::END_STATEMENT << nl; OStringStream reaction;
os.writeKeyword("reaction") << reactionStr(reaction)
<< token::END_STATEMENT << nl;
} }
...@@ -528,11 +511,13 @@ template<class ReactionThermo> ...@@ -528,11 +511,13 @@ template<class ReactionThermo>
const Foam::List<typename Foam::Reaction<ReactionThermo>::specieCoeffs>& const Foam::List<typename Foam::Reaction<ReactionThermo>::specieCoeffs>&
Foam::Reaction<ReactionThermo>::glhs() const Foam::Reaction<ReactionThermo>::glhs() const
{ {
/*
notImplemented notImplemented
( (
"inline const List<typename Reaction<ReactionThermo>::specieCoeffs>&" "inline const List<typename Reaction<ReactionThermo>::specieCoeffs>&"
"Reaction<ReactionThermo>::glhs()" "Reaction<ReactionThermo>::glhs()"
); );
*/
return *reinterpret_cast<List<specieCoeffs>*>(0); return *reinterpret_cast<List<specieCoeffs>*>(0);
} }
......
...@@ -66,6 +66,16 @@ class Reaction ...@@ -66,6 +66,16 @@ class Reaction
: :
public ReactionThermo public ReactionThermo
{ {
protected:
// Protected member functions
//- Return string representation of the left of the reaction
void reactionStrLeft(OStringStream& reaction) const;
//- Return string representation of the right of the reaction
void reactionStrRight(OStringStream& reaction) const;
public: public:
...@@ -134,7 +144,7 @@ private: ...@@ -134,7 +144,7 @@ private:
// Private Member Functions // Private Member Functions
//- Return string representation of reaction //- Return string representation of reaction
string reactionStr() const; string reactionStr(OStringStream& reaction) const;
//- Construct reaction thermo //- Construct reaction thermo
void setThermo(const HashPtrTable<ReactionThermo>& thermoDatabase); void setThermo(const HashPtrTable<ReactionThermo>& thermoDatabase);
......
...@@ -67,8 +67,8 @@ Reaction<ReactionThermo>::rhs() const ...@@ -67,8 +67,8 @@ Reaction<ReactionThermo>::rhs() const
template<class ReactionThermo> template<class ReactionThermo>
inline Ostream& operator<<(Ostream& os, const Reaction<ReactionThermo>& r) inline Ostream& operator<<(Ostream& os, const Reaction<ReactionThermo>& r)
{ {
os << r.reactionStr()<< token::END_STATEMENT <<nl; OStringStream reaction;
os << r.reactionStr(reaction)<< token::END_STATEMENT <<nl;
return os; return os;
} }
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment