diff --git a/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.C b/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.C index ead9b263fc..99bb98acb4 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 void Foam::solidReaction::write(Ostream& os) const { - Reaction::write(os); + OStringStream reaction; + os.writeKeyword("reaction") << solidReactionStr(reaction) + << token::END_STATEMENT << nl; } +template +Foam::string Foam::solidReaction::solidReactionStr +( + OStringStream& reaction +) const +{ + this->reactionStrLeft(reaction); + reaction << " + "; + solidReactionStrLeft(reaction); + reaction << " = "; + this->reactionStrRight(reaction); + reaction << " + "; + solidReactionStrRight(reaction); + return reaction.str(); + +} + + +template +void Foam::solidReaction::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 +void Foam::solidReaction::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 1bc4a82243..cc9eb6a7b7 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 534bb66fa7..9bad3ba778 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& r ) { - r.write(os); + OStringStream reaction; + os << r.solidReactionStr(reaction)<< token::END_STATEMENT < Foam::label Foam::Reaction::nUnNamedReactions = 0; - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // +// * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * // template -Foam::label Foam::Reaction::getNewReactionID() +void Foam::Reaction::reactionStrLeft +( + OStringStream& reaction +) const { - return nUnNamedReactions++; -} - - -template -Foam::string Foam::Reaction::reactionStr() const -{ - OStringStream reaction; - for (label i = 0; i < lhs_.size(); ++i) { if (i > 0) @@ -62,28 +55,15 @@ Foam::string Foam::Reaction::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 +void Foam::Reaction::reactionStrRight +( + OStringStream& reaction +) const +{ for (label i = 0; i < rhs_.size(); ++i) { if (i > 0) @@ -100,26 +80,27 @@ Foam::string Foam::Reaction::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 +Foam::label Foam::Reaction::getNewReactionID() +{ + return nUnNamedReactions++; +} + + +template +Foam::string Foam::Reaction::reactionStr +( + OStringStream& reaction +) const +{ + reactionStrLeft(reaction); + reaction << " = "; + reactionStrRight(reaction); return reaction.str(); } @@ -464,7 +445,9 @@ Foam::Reaction::New template void Foam::Reaction::write(Ostream& os) const { - os.writeKeyword("reaction") << reactionStr() << token::END_STATEMENT << nl; + OStringStream reaction; + os.writeKeyword("reaction") << reactionStr(reaction) + << token::END_STATEMENT << nl; } diff --git a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.H b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/Reaction.H index b0c66fb86f..2679fc1bbb 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& thermoDatabase); diff --git a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/ReactionI.H b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/ReactionI.H index 7e380b4c80..6dece80ba7 100644 --- a/src/thermophysicalModels/specie/reaction/Reactions/Reaction/ReactionI.H +++ b/src/thermophysicalModels/specie/reaction/Reactions/Reaction/ReactionI.H @@ -67,8 +67,8 @@ Reaction::rhs() const template inline Ostream& operator<<(Ostream& os, const Reaction& r) { - os << r.reactionStr()<< token::END_STATEMENT <