diff --git a/include/cantera/kinetics/ReactionRateFactory.h b/include/cantera/kinetics/ReactionRateFactory.h index 8064fea3f5c..315eed888d6 100644 --- a/include/cantera/kinetics/ReactionRateFactory.h +++ b/include/cantera/kinetics/ReactionRateFactory.h @@ -30,7 +30,7 @@ class Units; * @ingroup reactionGroup */ class ReactionRateFactory - : public Factory + : public Factory { public: /** @@ -73,10 +73,11 @@ shared_ptr newReactionRate(const std::string& type); //! Create a new Rate object using the specified parameters /*! * @param rate_node AnyMap node describing reaction rate. - * @param rate_units Unit system of the reaction rate + * @param rate_units Vector describing unit system of the reaction rate; each element + * specifies Unit and exponent applied to the unit. */ shared_ptr newReactionRate( - const AnyMap& rate_node, const Units& rate_units); + const AnyMap& rate_node, const UnitsVector& rate_units); //! Create a new Rate object using the specified parameters /*! @@ -84,14 +85,5 @@ shared_ptr newReactionRate( */ shared_ptr newReactionRate(const AnyMap& rate_node); -//! Create a new Rate object using the specified parameters -/*! - * @param rate_node AnyMap node describing reaction rate. - * @param rate_units Vector describing unit system of the reaction rate; each element - * specifies Unit and exponent applied to the unit. - */ -shared_ptr newReactionRate( - const AnyMap& rate_node, const std::vector>& rate_units); - } #endif diff --git a/src/kinetics/ReactionRateFactory.cpp b/src/kinetics/ReactionRateFactory.cpp index fc2d8588ba8..43ae12c82a1 100644 --- a/src/kinetics/ReactionRateFactory.cpp +++ b/src/kinetics/ReactionRateFactory.cpp @@ -20,7 +20,7 @@ std::mutex ReactionRateFactory::rate_mutex; ReactionRateFactory::ReactionRateFactory() { // ArrheniusRate evaluator - reg("Arrhenius", [](const AnyMap& node, const Units& rate_units) { + reg("Arrhenius", [](const AnyMap& node, const UnitsVector& rate_units) { return new ArrheniusRate(node, rate_units); }); addAlias("Arrhenius", ""); @@ -28,54 +28,55 @@ ReactionRateFactory::ReactionRateFactory() addAlias("Arrhenius", "three-body"); // BlowersMaselRate evaluator - reg("Blowers-Masel", [](const AnyMap& node, const Units& rate_units) { + reg("Blowers-Masel", [](const AnyMap& node, const UnitsVector& rate_units) { return new BlowersMaselRate(node, rate_units); }); // Lindemann falloff evaluator - reg("Lindemann", [](const AnyMap& node, const Units& rate_units) { + reg("Lindemann", [](const AnyMap& node, const UnitsVector& rate_units) { return new FalloffRate(node, rate_units); }); // Troe falloff evaluator - reg("Troe", [](const AnyMap& node, const Units& rate_units) { + reg("Troe", [](const AnyMap& node, const UnitsVector& rate_units) { return new FalloffRate(node, rate_units); }); // SRI falloff evaluator - reg("SRI", [](const AnyMap& node, const Units& rate_units) { + reg("SRI", [](const AnyMap& node, const UnitsVector& rate_units) { return new FalloffRate(node, rate_units); }); // Tsang falloff evaluator - reg("Tsang", [](const AnyMap& node, const Units& rate_units) { + reg("Tsang", [](const AnyMap& node, const UnitsVector& rate_units) { return new FalloffRate(node, rate_units); }); // PlogRate evaluator - reg("pressure-dependent-Arrhenius", [](const AnyMap& node, const Units& rate_units) { + reg("pressure-dependent-Arrhenius", [](const AnyMap& node, const UnitsVector& rate_units) { return new PlogRate(node, rate_units); }); // ChebyshevRate evaluator - reg("Chebyshev", [](const AnyMap& node, const Units& rate_units) { + reg("Chebyshev", [](const AnyMap& node, const UnitsVector& rate_units) { return new ChebyshevRate3(node, rate_units); }); // CustomFunc1Rate evaluator - reg("custom-rate-function", [](const AnyMap& node, const Units& rate_units) { + reg("custom-rate-function", [](const AnyMap& node, const UnitsVector& rate_units) { return new CustomFunc1Rate(node, rate_units); }); } shared_ptr newReactionRate(const std::string& type) { + UnitsVector rate_units; return shared_ptr ( - ReactionRateFactory::factory()->create(type, AnyMap(), Units(0.0))); + ReactionRateFactory::factory()->create(type, AnyMap(), rate_units)); } shared_ptr newReactionRate( - const AnyMap& rate_node, const Units& rate_units) + const AnyMap& rate_node, const UnitsVector& rate_units) { std::string type = ""; // default is to create Arrhenius from empty if (rate_node.hasKey("type")) { @@ -113,13 +114,8 @@ shared_ptr newReactionRate(const AnyMap& rate_node) "when creating\na standalone 'ReactionRate' object."); } AnyMap node(rate_node); - return newReactionRate(node, Units(0.)); -} - -shared_ptr newReactionRate( - const AnyMap& rate_node, const std::vector>& rate_units) -{ - return newReactionRate(rate_node, Units::product(rate_units)); + UnitsVector rate_units; + return newReactionRate(node, rate_units); } }