From 86b9ed5348c88bc5862f14cb74c81719000de335 Mon Sep 17 00:00:00 2001 From: sergio <sergio> Date: Tue, 15 Jan 2013 10:31:42 +0000 Subject: [PATCH] BUG: Correcting writing of solidReaction and reaction --- .../Reactions/solidReaction/solidReaction.C | 76 ++++++++++++++++- .../Reactions/solidReaction/solidReaction.H | 9 ++ .../Reactions/solidReaction/solidReactionI.H | 3 +- .../reaction/Reactions/Reaction/Reaction.C | 85 ++++++++----------- .../reaction/Reactions/Reaction/Reaction.H | 12 ++- .../reaction/Reactions/Reaction/ReactionI.H | 4 +- 6 files changed, 134 insertions(+), 55 deletions(-) diff --git a/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.C b/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.C index ead9b263fc0..99bb98acb4f 100644 --- a/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.C +++ b/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.C @@ -137,8 +137,82 @@ gasSpecies() const template<class ReactionThermo> 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; + } + } +} + // ************************************************************************* // diff --git a/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.H b/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.H index 1bc4a82243c..cc9eb6a7b7c 100644 --- a/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.H +++ b/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.H @@ -81,6 +81,15 @@ private: // 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 void operator=(const solidReaction&); diff --git a/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReactionI.H b/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReactionI.H index 534bb66fa7d..9bad3ba7784 100644 --- a/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReactionI.H +++ b/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReactionI.H @@ -39,7 +39,8 @@ inline Ostream& operator<< const solidReaction<ReactionThermo>& r ) { - r.write(os); + OStringStream reaction; + os << r.solidReactionStr(reaction)<< token::END_STATEMENT <<nl; return os; } diff --git a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.C b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.C index 8f2c39c37eb..fda7552611a 100644 --- a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.C +++ b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.C @@ -31,21 +31,14 @@ License template<class ReactionThermo> Foam::label Foam::Reaction<ReactionThermo>::nUnNamedReactions = 0; - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -template<class ReactionThermo> -Foam::label Foam::Reaction<ReactionThermo>::getNewReactionID() -{ - return nUnNamedReactions++; -} - +// * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * // 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) { if (i > 0) @@ -62,28 +55,15 @@ Foam::string Foam::Reaction<ReactionThermo>::reactionStr() const 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) { if (i > 0) @@ -100,26 +80,27 @@ Foam::string Foam::Reaction<ReactionThermo>::reactionStr() const reaction << "^" << rhs_[i].exponent; } } +} - 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; - } - } +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template<class ReactionThermo> +Foam::label Foam::Reaction<ReactionThermo>::getNewReactionID() +{ + return nUnNamedReactions++; +} + +template<class ReactionThermo> +Foam::string Foam::Reaction<ReactionThermo>::reactionStr +( + OStringStream& reaction +) const +{ + reactionStrLeft(reaction); + reaction << " = "; + reactionStrRight(reaction); return reaction.str(); } @@ -464,7 +445,9 @@ Foam::Reaction<ReactionThermo>::New template<class ReactionThermo> 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> const Foam::List<typename Foam::Reaction<ReactionThermo>::specieCoeffs>& Foam::Reaction<ReactionThermo>::glhs() const { + /* notImplemented ( "inline const List<typename Reaction<ReactionThermo>::specieCoeffs>&" "Reaction<ReactionThermo>::glhs()" ); + */ return *reinterpret_cast<List<specieCoeffs>*>(0); } diff --git a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.H b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.H index b0c66fb86fb..2679fc1bbb1 100644 --- a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.H +++ b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.H @@ -66,6 +66,16 @@ class Reaction : 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: @@ -134,7 +144,7 @@ private: // Private Member Functions //- Return string representation of reaction - string reactionStr() const; + string reactionStr(OStringStream& reaction) const; //- Construct reaction thermo void setThermo(const HashPtrTable<ReactionThermo>& thermoDatabase); diff --git a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/ReactionI.H b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/ReactionI.H index 7e380b4c801..6dece80ba78 100644 --- a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/ReactionI.H +++ b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/ReactionI.H @@ -67,8 +67,8 @@ Reaction<ReactionThermo>::rhs() const template<class ReactionThermo> 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; } -- GitLab