//==================================================================================================================== void GasKinetics:: addReaction(ReactionData& r) { switch (r.reactionType) { case ELEMENTARY_RXN: addElementaryReaction(r); break; case THREE_BODY_RXN: addThreeBodyReaction(r); break; case FALLOFF_RXN: addFalloffReaction(r); break; case PLOG_RXN: addPlogReaction(r); break; case CHEBYSHEV_RXN: addChebyshevReaction(r); break; default: throw CanteraError("GasKinetics::addReaction", "Invalid reaction type specified"); } // operations common to all reaction types installReagents(r); installGroups(reactionNumber(), r.rgroups, r.pgroups); incrementRxnCount(); m_rxneqn.push_back(r.equation); }
bool GasKinetics::addReaction(shared_ptr<Reaction> r) { // operations common to all reaction types bool added = BulkKinetics::addReaction(r); if (!added) { return false; } switch (r->reaction_type) { case ELEMENTARY_RXN: addElementaryReaction(dynamic_cast<ElementaryReaction&>(*r)); break; case THREE_BODY_RXN: addThreeBodyReaction(dynamic_cast<ThreeBodyReaction&>(*r)); break; case FALLOFF_RXN: case CHEMACT_RXN: addFalloffReaction(dynamic_cast<FalloffReaction&>(*r)); break; case PLOG_RXN: addPlogReaction(dynamic_cast<PlogReaction&>(*r)); break; case CHEBYSHEV_RXN: addChebyshevReaction(dynamic_cast<ChebyshevReaction&>(*r)); break; default: throw CanteraError("GasKinetics::addReaction", "Unknown reaction type specified: " + int2str(r->reaction_type)); } return true; }