diff --git a/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.C b/src/thermophysicalModels/solidSpecie/reaction/Reactions/solidReaction/solidReaction.C index ead9b263fc04fc1c1bfa6c11695a7884bd008e8b..99bb98acb4f82e8acb3c72b0ef2a591a90f733ff 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 1bc4a82243c31cbaaf134bac6b5796d01fbf4bed..cc9eb6a7b7c71e007ff3e2c45c2cdecde3e84408 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 534bb66fa7db3899f7ad7711001cb5e4a48959eb..9bad3ba77840727756338bb93e87ba9b787388e9 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 8f2c39c37eb1d642be99f36abd142bd8039125e8..fda7552611a8323b793c210fc7c776bcdd07e9d4 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 b0c66fb86fbb78aea0a0d278b084d47aed7143cb..2679fc1bbb101436ba021a1746fbed49e02e0185 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 7e380b4c801880c33db65f26ed30c4eaf4c604d2..6dece80ba78eb90da31f6f5b52ebc56d953e20f0 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; }